次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137
http://mevius.5ch.net/test/read.cgi/tech/1531558382/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1530384293/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
C++相談室 part138
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (スフッ Sd9f-fGne)
2018/08/05(日) 18:02:36.57ID:DigzqJtZd75デフォルトの名無しさん (ワッチョイ 9780-9b2l)
2018/09/19(水) 23:10:27.91ID:xLP4ypV20 たとえば64byteのメモリが必要なクラスがあったとする
アホが作ったコンテナでは例えば要素が5個なら
こんな感じになるとアホはいってるワケ
[0][64byte]
[1][64byte]
[2][64byte]
[3][64byte]
[4][64byte]
メモリの板に64*5のメモリイメージが配置される
要素が1つ増えるたびに64byte必要になることになる
ポインタなら(仮に32bitなら)こうなる
[0][4byte] ← [64byte]
[1][4byte] ← [64byte]
[2][4byte] ← [64byte]
[3][4byte] ← [64byte]
[4][4byte] ← [64byte]
メモリの板に4*5のメモリイメージが配置される
さらに64byteのバラバラのメモリが5個できる
つまりメモリフラグメンテーションがおきることになる
アホが作ったコンテナでは例えば要素が5個なら
こんな感じになるとアホはいってるワケ
[0][64byte]
[1][64byte]
[2][64byte]
[3][64byte]
[4][64byte]
メモリの板に64*5のメモリイメージが配置される
要素が1つ増えるたびに64byte必要になることになる
ポインタなら(仮に32bitなら)こうなる
[0][4byte] ← [64byte]
[1][4byte] ← [64byte]
[2][4byte] ← [64byte]
[3][4byte] ← [64byte]
[4][4byte] ← [64byte]
メモリの板に4*5のメモリイメージが配置される
さらに64byteのバラバラのメモリが5個できる
つまりメモリフラグメンテーションがおきることになる
76デフォルトの名無しさん (ブーイモ MMbf-nprU)
2018/09/19(水) 23:14:17.43ID:x2iiusAWM77デフォルトの名無しさん (ワッチョイ 9780-9b2l)
2018/09/19(水) 23:17:16.10ID:xLP4ypV20 そもそもスタックとかいってるオマエも
相当頭悪いという自覚が必要
相当頭悪いという自覚が必要
78デフォルトの名無しさん (ブーイモ MMbf-nprU)
2018/09/19(水) 23:22:42.98ID:x2iiusAWM allocaって書いてあんだけど
79デフォルトの名無しさん (ワッチョイ 9780-9b2l)
2018/09/19(水) 23:28:50.52ID:xLP4ypV20 さよか
80デフォルトの名無しさん (ワッチョイ 174f-9b2l)
2018/09/19(水) 23:50:52.77ID:GJOADTEF0 >>71
お前が、というより最近の奴が何故
「俺の知ってる言語の『優位性』」に固執するのか甚だ疑問ではある。
ただ、お前は>>37も理解出来てないのだから、まずは「オブジェクト指向」を理解した方がいいぞ。
>>74
JavaScripterはそれ以前で、オブジェクト指向そのものを知らない奴が多いし、
他言語から来た奴は無理に「クラスベース」として捉えようとして誤解し、
しかもそれを垂れ流して間違いを再生産し、どうしようもない状況になってる。
JavaScripterには馬鹿しかいない。これは断言出来る。
>>76
俺はもう動けばいいだけなら普通に作れるんだよ。
その上で、C++の動作速度が遅く、記述がかったるいのを何とかしようと試してる。
先に言っておくが、俺はC比同速程度を目指している。
スマポ(キリッなC++なんてJavaよりちょっと速い程度しか出ないし、それなら俺はCLIを使うからそれでいい。
ただしC流の書き方は見た目分かりにくいから、
C比で遅くならない、或いは多少程度でもうちょっとましに書けないか試している。
今回のにしたって、最速はC流の「頭で全部分確保、ポインタで細切れにして渡す」に決まっている。
ただこれは見た目何をやっているのか分かりにくいし、関数に分割もしづらい。
クラスにしたって、仮想関数なしなら速度もメモリもオーバーヘッドはない。なら使わない手はない。
そういう、C比オーバーヘッド無し(或いは僅か)程度で、どこまで分かりやすい見た目になるかを試してる。
楽に書きたいだけなら、JavaScriptが現状最強だ。
C比5倍程度であの楽さ、他の言語なんてやってられない。
速ければいいだけならCだ。ただし記述が見た目分かりにくいのは否めない。
それでC++でどこまでCを改善出来るかを試している。メソッドチェーンもそれの一環だ。
お前が、というより最近の奴が何故
「俺の知ってる言語の『優位性』」に固執するのか甚だ疑問ではある。
ただ、お前は>>37も理解出来てないのだから、まずは「オブジェクト指向」を理解した方がいいぞ。
>>74
JavaScripterはそれ以前で、オブジェクト指向そのものを知らない奴が多いし、
他言語から来た奴は無理に「クラスベース」として捉えようとして誤解し、
しかもそれを垂れ流して間違いを再生産し、どうしようもない状況になってる。
JavaScripterには馬鹿しかいない。これは断言出来る。
>>76
俺はもう動けばいいだけなら普通に作れるんだよ。
その上で、C++の動作速度が遅く、記述がかったるいのを何とかしようと試してる。
先に言っておくが、俺はC比同速程度を目指している。
スマポ(キリッなC++なんてJavaよりちょっと速い程度しか出ないし、それなら俺はCLIを使うからそれでいい。
ただしC流の書き方は見た目分かりにくいから、
C比で遅くならない、或いは多少程度でもうちょっとましに書けないか試している。
今回のにしたって、最速はC流の「頭で全部分確保、ポインタで細切れにして渡す」に決まっている。
ただこれは見た目何をやっているのか分かりにくいし、関数に分割もしづらい。
クラスにしたって、仮想関数なしなら速度もメモリもオーバーヘッドはない。なら使わない手はない。
そういう、C比オーバーヘッド無し(或いは僅か)程度で、どこまで分かりやすい見た目になるかを試してる。
楽に書きたいだけなら、JavaScriptが現状最強だ。
C比5倍程度であの楽さ、他の言語なんてやってられない。
速ければいいだけならCだ。ただし記述が見た目分かりにくいのは否めない。
それでC++でどこまでCを改善出来るかを試している。メソッドチェーンもそれの一環だ。
81デフォルトの名無しさん (ワッチョイ c980-yqSl)
2018/09/20(木) 00:06:31.99ID:zLqp8E230 だったらふつうにPODの配列でいいわけだからな
82デフォルトの名無しさん (ワッチョイ c980-yqSl)
2018/09/20(木) 00:08:31.80ID:zLqp8E230 Cでわかりにくいコードを書くには
頭悪いという才能がいる
頭悪いという才能がいる
83デフォルトの名無しさん (ワッチョイ c104-Om/S)
2018/09/20(木) 00:15:44.01ID:QHRJIO3f0 allocaの寿命大丈夫?ちょっと気になった、。
8471=67 (ワッチョイ 01b3-coYL)
2018/09/20(木) 00:27:41.21ID:CPfoYuVJ0 >>80
携帯とPCで書いたから同一人物とわからんかったかな
何か実現したいことがあって
>・derived等、継承で親のメソッドを使ったときにも「呼び出し側の型」を返す為のキーワードの整備
と書いてたんだと思って、解決策になるかもしれない情報を教えてあげようと思ったら
感謝もせんとC++に対するヘイトを垂れ流すだけだったから「ああ、あいつか・・・」となったんだが
>「俺の知ってる言語の『優位性』」に固執する
どこをどう読んだらそうなるのかわからん。というか鏡見ろ
携帯とPCで書いたから同一人物とわからんかったかな
何か実現したいことがあって
>・derived等、継承で親のメソッドを使ったときにも「呼び出し側の型」を返す為のキーワードの整備
と書いてたんだと思って、解決策になるかもしれない情報を教えてあげようと思ったら
感謝もせんとC++に対するヘイトを垂れ流すだけだったから「ああ、あいつか・・・」となったんだが
>「俺の知ってる言語の『優位性』」に固執する
どこをどう読んだらそうなるのかわからん。というか鏡見ろ
85デフォルトの名無しさん (ワッチョイ c980-yqSl)
2018/09/20(木) 00:31:01.70ID:zLqp8E230 遅いのはオマエのウンココードのアルゴリズムのせいだからな
気にする必要ないほどのオーバーヘッドが問題じゃない
気にする必要ないほどのオーバーヘッドが問題じゃない
86デフォルトの名無しさん (ワッチョイ f94f-yqSl)
2018/09/20(木) 00:50:45.72ID:Yonx2vGH0 >>72
> スタックをplacement newしたんなら自分でデストラクタ
自分でデストラクタを書かなくて済むようにコンテナを用意してるんだよ。
というか、そもそもC++の思想はそうではないか?
ある意味、クラス外のコードでデストラクタを書いたら負けだろ。
そしてコンテナを用意するだけでこれを回避出来る。
それだけの話だ。
「書けばいい」の発想もいいが、俺はもうそれは十分出来るので、
書かなくて済む物を如何に増やすか、それを試してる。
結局、スクリプト言語が楽なのはここだし。
>>83
もう動作はしてるし、結果も比較して問題ないのを確認済み。
まあ、 alloca は相当使いづらいことも分かった。
>>84
いや、ワッチョイが同一だから同一人物だと認識してる。
> 解決策になるかもしれない情報を教えてあげようと思ったら
解決策になってないし、お前はそれが間違いだとも認識出来てない。
お前の情報は何の役にも立ってない。
馬鹿が間違ったことを言ってきて「間違ってるぞ」と言ったら「それでも感謝しろ」と言われた状況だ。
そういう考え方もありだが、俺はここではそれをしないし、する必要も無いし、するべきでもないと思ってる。
ここでは、間違ったことを言った奴は叩かれるべきだ。
そうでないと馬鹿がどんどん寄ってきて、結果、レベルが下がり、誰にとっても利益が無くなる。
間違ったことを言っても感謝されたいなら、少なくともIDやコテハンが付いてる場所へ行け。
そういうところが好きなら、そういう場所を盛り上げるべきであって、ここで文句を言うべきではない。
> スタックをplacement newしたんなら自分でデストラクタ
自分でデストラクタを書かなくて済むようにコンテナを用意してるんだよ。
というか、そもそもC++の思想はそうではないか?
ある意味、クラス外のコードでデストラクタを書いたら負けだろ。
そしてコンテナを用意するだけでこれを回避出来る。
それだけの話だ。
「書けばいい」の発想もいいが、俺はもうそれは十分出来るので、
書かなくて済む物を如何に増やすか、それを試してる。
結局、スクリプト言語が楽なのはここだし。
>>83
もう動作はしてるし、結果も比較して問題ないのを確認済み。
まあ、 alloca は相当使いづらいことも分かった。
>>84
いや、ワッチョイが同一だから同一人物だと認識してる。
> 解決策になるかもしれない情報を教えてあげようと思ったら
解決策になってないし、お前はそれが間違いだとも認識出来てない。
お前の情報は何の役にも立ってない。
馬鹿が間違ったことを言ってきて「間違ってるぞ」と言ったら「それでも感謝しろ」と言われた状況だ。
そういう考え方もありだが、俺はここではそれをしないし、する必要も無いし、するべきでもないと思ってる。
ここでは、間違ったことを言った奴は叩かれるべきだ。
そうでないと馬鹿がどんどん寄ってきて、結果、レベルが下がり、誰にとっても利益が無くなる。
間違ったことを言っても感謝されたいなら、少なくともIDやコテハンが付いてる場所へ行け。
そういうところが好きなら、そういう場所を盛り上げるべきであって、ここで文句を言うべきではない。
87デフォルトの名無しさん (ワッチョイ 82b3-coYL)
2018/09/20(木) 00:55:35.41ID:GN4jSvWj0 まぁまぁ御託はいいからお前のコードを全部さらせよ
添削してやっから
あとベンチマークの結果も書いとけ
添削してやっから
あとベンチマークの結果も書いとけ
88デフォルトの名無しさん (ワッチョイ 499b-9lLk)
2018/09/20(木) 01:01:28.49ID:tucHfSy60 それが一番やな
89デフォルトの名無しさん (ワッチョイ 82d8-jhFb)
2018/09/20(木) 04:25:13.14ID:gyMuKR+I0 IntelのC++ Composerってサポート期限切れのシリアルでも使用可能なバージョンがあるのね
知らなかったよ
2017 update7
>This update can be installed even if your support service has expired using your existing Serial Number.
知らなかったよ
2017 update7
>This update can be installed even if your support service has expired using your existing Serial Number.
90デフォルトの名無しさん (ワッチョイ 42a1-UYTc)
2018/09/20(木) 22:36:33.27ID:sE8+iEgQ0 はじめまして
ゼミの課題でc++でバカラのプログラムかいてこいって言われたんですけど
簡単ですか?
ゼミの課題でc++でバカラのプログラムかいてこいって言われたんですけど
簡単ですか?
91デフォルトの名無しさん (ブーイモ MMb6-WirJ)
2018/09/20(木) 22:39:33.57ID:COenw0G8M はい特定
92デフォルトの名無しさん (ワッチョイ c980-yqSl)
2018/09/20(木) 22:41:55.13ID:zLqp8E230 まずサイコロの運動をシミュレーションするところから
93デフォルトの名無しさん (ワッチョイ c104-Om/S)
2018/09/20(木) 22:46:32.99ID:QHRJIO3f094デフォルトの名無しさん (ワッチョイ c980-yqSl)
2018/09/20(木) 22:48:19.01ID:zLqp8E230 待ち行列で客が待つのもポアソン分布使ってシミュレーションする必要がある
95デフォルトの名無しさん (ワッチョイ 8a3a-73bl)
2018/12/04(火) 23:43:54.89ID:U8JiD/qF0 devirtualizationはまだclangだけ?
97デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/04(月) 14:39:50.96ID:BGg5R2c70 Win10で、でかいメモリを使おうとすると0xc0000017で落ちるんだけど
制限を解除する方法あったっけ?
制限を解除する方法あったっけ?
98デフォルトの名無しさん (ワッチョイ df7b-Z3mi)
2019/02/04(月) 15:45:55.20ID:01AVniBC0 「64bitのコードでコンパイルするよう指定」するやつだっけ?
「デカいメモリ」「エラーコード〜でブルースクリーン」ていう
キーワードで、記憶に引っかかる感じ。
「デカいメモリ」「エラーコード〜でブルースクリーン」ていう
キーワードで、記憶に引っかかる感じ。
99デフォルトの名無しさん (ワッチョイ aeab-feI+)
2019/02/11(月) 08:41:29.58ID:NAZP4pfo0 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0551r3.pdf
C++20で、std空間内で宣言されたテンプレートをユーザが特殊化するのを
禁止しようって提案が出てるみたいなんだけど、どうよ?
俺はhashが特殊化できないのは困ると思うんだが
C++20で、std空間内で宣言されたテンプレートをユーザが特殊化するのを
禁止しようって提案が出てるみたいなんだけど、どうよ?
俺はhashが特殊化できないのは困ると思うんだが
100デフォルトの名無しさん (ワッチョイ 254e-feI+)
2019/02/11(月) 15:16:43.87ID:cjWMt0nf0 ちょっとありえない気がする。大量のコードの互換性が失われるよね。
ostream/wostreamも存在意義を真っ向から否定するような変更では?
ostream/wostreamも存在意義を真っ向から否定するような変更では?
101デフォルトの名無しさん (ワッチョイ d97b-l1YC)
2019/02/13(水) 10:03:42.66ID:SbDYRWkR0 >>99
pdfは読んでいないが妥当だろう。生産性は上がる。
特殊化したければオレオレ名前空間でstdを継承し、それを使え、でいい。
stdを直接変更している糞コードなんてどこかの時点で切り捨てる必要がある。
それがそろそろだという判断だろうし、実際、妥当だと思う。
pdfは読んでいないが妥当だろう。生産性は上がる。
特殊化したければオレオレ名前空間でstdを継承し、それを使え、でいい。
stdを直接変更している糞コードなんてどこかの時点で切り捨てる必要がある。
それがそろそろだという判断だろうし、実際、妥当だと思う。
102デフォルトの名無しさん (ワッチョイ ae82-feI+)
2019/02/13(水) 11:42:38.93ID:oF8nMyvD0103デフォルトの名無しさん (ワッチョイ 8701-Qg7j)
2019/02/19(火) 02:22:21.41ID:yWMNMYfE0 別の名前空間で特殊化とか出来たっけ??
104デフォルトの名無しさん (ワッチョイ a6ca-rusg)
2019/02/21(木) 07:05:37.62ID:0ZBMuCH70 しかもstdという空間名だけ、言語が特別扱いとかおかしいだろ
105デフォルトの名無しさん (ワッチョイ 9eef-upo5)
2019/02/22(金) 04:02:38.57ID:dY5D0a5T0 c#よりC++のほうがいいんですか?
106デフォルトの名無しさん (ワッチョイ 3a32-rusg)
2019/02/22(金) 04:05:58.60ID:15zpzt8/0 どっちでもいい
107デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/04(月) 10:10:34.95ID:kNFhD2SD0 エラー出るんだけどさ
mt19937 en;
int ep[en.state_size];
random_device rd;
generate(begin(ep), end(ep), rd); //C2280
このラムダみたいなことをやってくれる標準の何かない?
generate(begin(ep), end(ep), [&rd]{ return rd(); });
mt19937 en;
int ep[en.state_size];
random_device rd;
generate(begin(ep), end(ep), rd); //C2280
このラムダみたいなことをやってくれる標準の何かない?
generate(begin(ep), end(ep), [&rd]{ return rd(); });
109デフォルトの名無しさん (ワッチョイ d77d-3oSp)
2019/03/04(月) 11:42:55.83ID:oS3uKTCY0 generate(begin(ep), end(ep), en)
は?
は?
110デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/04(月) 15:42:52.84ID:kNFhD2SD0 >>109
このあと、en.seek(begin(ep), end(ep)); とやりたいわけで。。。
このあと、en.seek(begin(ep), end(ep)); とやりたいわけで。。。
111デフォルトの名無しさん (ワッチョイ 9ff7-3oSp)
2019/03/04(月) 19:55:50.41ID:nY1Z2C3a0 >>107
generate(begin(ep), end(ep), ref(rd));
generate(begin(ep), end(ep), ref(rd));
112デフォルトの名無しさん (ワッチョイ 9f2f-W5e4)
2019/03/04(月) 21:30:57.13ID:kNFhD2SD0113デフォルトの名無しさん (ワッチョイ e3d4-KxX0)
2019/04/29(月) 06:55:11.19ID:rwrhSar80114デフォルトの名無しさん (ワッチョイ 7b7c-TO5r)
2019/05/07(火) 18:55:08.99ID:kySkQDUz0 そもそもP0551R3で禁止されるのは関数テンプレートの特殊化についてであって
std::hashなんかのクラステンプレートの特殊化は特に禁止されないのでは?
クラステンプレートの特殊化まで禁止されるとstd::tuple_sizeみたいなユーザによる特殊化ありきの機能が軒並み消滅する事になると思うんだが
std::hashなんかのクラステンプレートの特殊化は特に禁止されないのでは?
クラステンプレートの特殊化まで禁止されるとstd::tuple_sizeみたいなユーザによる特殊化ありきの機能が軒並み消滅する事になると思うんだが
115デフォルトの名無しさん (ワッチョイ 9b6d-ahOC)
2019/05/08(水) 10:03:00.99ID:LqpjdKM80 あ、そうなんだ
悪りい、そこまで読んでなかった
悪りい、そこまで読んでなかった
116デフォルトの名無しさん (ワキゲー MM4f-Pc47)
2019/05/09(木) 13:43:19.58ID:OHS2EL3gM >>102
>>101じゃない&亀レスですまんけど、
普通にHasher関数オブジェクトを自作して、std::unordered_setのテンプレート第二引数として渡せばいいんじゃないか?
わざわざC2280の解決のためにstd::hashを特殊化するのはナンセンスだと思われる
example:
https://wandbox.org/permlink/mSO96qJDavoK1jqI
>>101じゃない&亀レスですまんけど、
普通にHasher関数オブジェクトを自作して、std::unordered_setのテンプレート第二引数として渡せばいいんじゃないか?
わざわざC2280の解決のためにstd::hashを特殊化するのはナンセンスだと思われる
example:
https://wandbox.org/permlink/mSO96qJDavoK1jqI
117デフォルトの名無しさん (アウアウウー Sa1b-Ck8H)
2019/05/09(木) 13:59:47.44ID:aE0sIHzaa >>116
ちなみにlambda式も渡せる?
ちなみにlambda式も渡せる?
118デフォルトの名無しさん (ワキゲー MM4f-Pc47)
2019/05/09(木) 15:01:22.74ID:OHS2EL3gM >>117
テンプレートへの渡し方が微妙だけど可能
autoでラムダ受け取っておいてdecltypeで渡すか、std::functionを受け皿にするかだな
example:
https://wandbox.org/permlink/qDm0vA6MWDrIksih
テンプレートへの渡し方が微妙だけど可能
autoでラムダ受け取っておいてdecltypeで渡すか、std::functionを受け皿にするかだな
example:
https://wandbox.org/permlink/qDm0vA6MWDrIksih
119デフォルトの名無しさん (ワッチョイ d7f6-y0Vo)
2019/05/09(木) 22:06:08.12ID:3+FGd20y0120デフォルトの名無しさん (ワッチョイ d7f6-y0Vo)
2019/05/09(木) 22:07:16.61ID:3+FGd20y0 ごめ、ありえない変換ミス()しちまった
-それやはやだな
+それはやだな
俺、純血の日本人だよ
信じて
-それやはやだな
+それはやだな
俺、純血の日本人だよ
信じて
121デフォルトの名無しさん (ワッチョイ 571f-dVT0)
2019/05/09(木) 22:09:28.48ID:4ka/9Zuh0 ウソつけ絶対大陸人だゾ
122デフォルトの名無しさん (アウアウウー Sa1b-tfUF)
2019/05/09(木) 23:15:47.91ID:X/G5tafaa >>120
純潔(童貞)の日本人だろ、信じるよ。
純潔(童貞)の日本人だろ、信じるよ。
123デフォルトの名無しさん (アウアウウー Sad3-ihfx)
2019/07/23(火) 17:48:26.74ID:/+gBwcB6a C++じゃないとできないすごいこと教えて
124デフォルトの名無しさん (ワッチョイ 0ff6-0ngu)
2019/07/23(火) 17:55:03.98ID:4sm3RNn+0 作れるものと作れないものは同じだ
文法的に「すごい」のというと、たとえばラムダ式とか構造化束縛、raw-string-literalあたり
型推定もCで頭固くなっちまった人にはそこそこカルチャーショックだよ
文法的に「すごい」のというと、たとえばラムダ式とか構造化束縛、raw-string-literalあたり
型推定もCで頭固くなっちまった人にはそこそこカルチャーショックだよ
125デフォルトの名無しさん (ワッチョイ 3f40-fYy3)
2019/07/23(火) 21:08:02.46ID:SF7VhVJD0 >>123
ゲームだろ。
ゲームだろ。
126デフォルトの名無しさん (ワッチョイ 4f5f-X8/T)
2019/07/23(火) 22:22:13.57ID:dbImuYuB0 >>123
競プロ
競プロ
127デフォルトの名無しさん (ワッチョイ 3f5c-ihfx)
2019/07/24(水) 01:36:46.76ID:crK8vf170 やっぱりC++ってすごくないんだ
128デフォルトの名無しさん (ドコグロ MMbf-TsWF)
2019/07/24(水) 07:35:18.89ID:4NAru7RoM >>124
型推論は他の言語でもあるからそんなに驚きはないけどraw string literalはやり過ぎだろ
型推論は他の言語でもあるからそんなに驚きはないけどraw string literalはやり過ぎだろ
129デフォルトの名無しさん (ワッチョイ 7f7c-CMz4)
2019/07/24(水) 10:35:13.16ID:N8NvLFq20 >>123
世界征服
世界征服
130デフォルトの名無しさん (ワッチョイ 0a61-5Ye2)
2019/07/25(木) 00:54:02.58ID:tRj/Vr/s0 >>123
・例えばAIライブラリは速度面からC++で組まれることが普通。
・言語コンパイラもコンパイル速度を重視すればC++が最適。
・AndroidOSそのものもC/C++で組まれる。
・Java Virtual Machineも、PC EmulatorもC/C++で組まれる。
・同程度の性能のデバイスでAndoidとiOSを比べたとき、前者が遅いといわれるのは
全社はJava(仮想コードにコンパイルされる)、後者はSwing(native binaryにコンパイルされる)
からが大きいと考えられる。
・例えばAIライブラリは速度面からC++で組まれることが普通。
・言語コンパイラもコンパイル速度を重視すればC++が最適。
・AndroidOSそのものもC/C++で組まれる。
・Java Virtual Machineも、PC EmulatorもC/C++で組まれる。
・同程度の性能のデバイスでAndoidとiOSを比べたとき、前者が遅いといわれるのは
全社はJava(仮想コードにコンパイルされる)、後者はSwing(native binaryにコンパイルされる)
からが大きいと考えられる。
>>130
では Java で記述されたコードをコンパイルした成果物が native binary であればいいのですね、これは商機があるかもしれませんね
では Java で記述されたコードをコンパイルした成果物が native binary であればいいのですね、これは商機があるかもしれませんね
132デフォルトの名無しさん (ワッチョイ fa32-/0C9)
2019/07/26(金) 00:27:28.49ID:6P+xswxu0 それ30億のデバイスで走る?
133デフォルトの名無しさん (ワッチョイ 7bf6-ZVB1)
2019/07/26(金) 07:00:05.65ID:klJ/NeRW0 甘いな
native binaryでありさえすればいいってもんじゃない
上手いマシン語と下手なマシン語がある
native binaryでありさえすればいいってもんじゃない
上手いマシン語と下手なマシン語がある
134デフォルトの名無しさん (ワッチョイ 1f61-5Ye2)
2019/07/26(金) 07:12:48.67ID:4yTQHcMn0 >>131
実は、>>133が指摘してる通り JavaやC#は言語仕様そのものが native binary
に直してもC++ほどの速度にはなりにくい。例えば遅くなる理由として
1. GC(Garbage Collection)によって自動的にfreeやdeleteさせようとする仕様。
2. 標準的にはポインタを使わない仕様。
3. オブジェクトが構造体やスタックに埋め込まれずにheapからnewされ易い仕様。
4. 二次元以上の配列がJaggyタイプに成り易い仕様。
5. バッファオーバーランの防止のため、配列の境界チェックが行われやすい仕様。
6. ライブラリが巨大なため起動時に大量のコードがディスクから読み出されるため、
起動が遅く成り易いこと。巨大になる理由の一つはリフレクションや型に
#includeによる静的コンパイルをせずにすますためののクラスの型情報などが
(Javaの場合は*.classや*.jarなどの)ライブラリに入っているためだろうか。
例えば、C#も予めnative binaryに直してしまう方法も有るが、それでも起動速度は
余り早くならないらしい。起動後も1.〜5.の理由のためC++程の速度にはなりにくい。
実は、>>133が指摘してる通り JavaやC#は言語仕様そのものが native binary
に直してもC++ほどの速度にはなりにくい。例えば遅くなる理由として
1. GC(Garbage Collection)によって自動的にfreeやdeleteさせようとする仕様。
2. 標準的にはポインタを使わない仕様。
3. オブジェクトが構造体やスタックに埋め込まれずにheapからnewされ易い仕様。
4. 二次元以上の配列がJaggyタイプに成り易い仕様。
5. バッファオーバーランの防止のため、配列の境界チェックが行われやすい仕様。
6. ライブラリが巨大なため起動時に大量のコードがディスクから読み出されるため、
起動が遅く成り易いこと。巨大になる理由の一つはリフレクションや型に
#includeによる静的コンパイルをせずにすますためののクラスの型情報などが
(Javaの場合は*.classや*.jarなどの)ライブラリに入っているためだろうか。
例えば、C#も予めnative binaryに直してしまう方法も有るが、それでも起動速度は
余り早くならないらしい。起動後も1.〜5.の理由のためC++程の速度にはなりにくい。
135デフォルトの名無しさん (ワッチョイ 1f61-5Ye2)
2019/07/26(金) 07:28:28.01ID:4yTQHcMn0 >>134
7. C#のリンクリストの場合、要素を削除する場合、文字列などの要素の中身か、
要素番号を指定する必要が有る。要素Bを有る要素Aの後ろに追加する場合、
Aの要素番号を指定する必要が有る。これが遅くなる。C/C++本来のリンクリストは
削除や追加の場所の指定をポインタ(アドレス)で指定できることが速度上の大きな
優位性であったのにそれが出来ない。なお、詳しくはないがC++のSTLのstd::listの場合は、
同様の「不具合」があるためリンクリストの本来の性能が出ないかもしれない。
しかし、それはSTLがC/C++の昔から使われていた本来のリンクリストの実装の仕方を
していないからであると思われる。
7. C#のリンクリストの場合、要素を削除する場合、文字列などの要素の中身か、
要素番号を指定する必要が有る。要素Bを有る要素Aの後ろに追加する場合、
Aの要素番号を指定する必要が有る。これが遅くなる。C/C++本来のリンクリストは
削除や追加の場所の指定をポインタ(アドレス)で指定できることが速度上の大きな
優位性であったのにそれが出来ない。なお、詳しくはないがC++のSTLのstd::listの場合は、
同様の「不具合」があるためリンクリストの本来の性能が出ないかもしれない。
しかし、それはSTLがC/C++の昔から使われていた本来のリンクリストの実装の仕方を
していないからであると思われる。
136デフォルトの名無しさん (ワッチョイ abe8-BZpS)
2019/07/26(金) 12:04:17.56ID:2lr5ek+30 Javaってランタイムがプリミティブなってるクラスを実行することがあったと思うけど、
ネーティブではそのプリミティブ型のクラスを分解してマシン語にしないといけなかった気がする。
ネーティブではそのプリミティブ型のクラスを分解してマシン語にしないといけなかった気がする。
137デフォルトの名無しさん (ワッチョイ 7bf6-ZVB1)
2019/07/26(金) 12:42:19.26ID:klJ/NeRW0 vs2019なんだけどさ
void f(path&& pt)
{
auto date = last_write_time(pt);
auto val = decltype(date)::clock::to_time_t(date); //C2039
}
これどうやってtime_tもらうの?
void f(path&& pt)
{
auto date = last_write_time(pt);
auto val = decltype(date)::clock::to_time_t(date); //C2039
}
これどうやってtime_tもらうの?
138デフォルトの名無しさん (ワッチョイ 1f61-5Ye2)
2019/07/26(金) 16:10:27.37ID:KpYqHMjm0 decltype(ftime)::clock::to_time_t()
は、decltype(ftime) が std::filesystem::file_time_type なので、
意味的には長く書けば、
std::filesystem::file_time_type::clock::to_time_t()
となるとは思う。短くすれば、
file_time_type::clock::to_time_t()
となるけど、clock という名前空間は見つからなかったが、
std::chrono::system_clock::to_time_t()
という関数ならば存在しており、
static std::time_t to_time_t( const time_point& t ) noexcept;
という宣言にはなっているところまでは見つけた。
clock というキーワードが何なのかは不明。
は、decltype(ftime) が std::filesystem::file_time_type なので、
意味的には長く書けば、
std::filesystem::file_time_type::clock::to_time_t()
となるとは思う。短くすれば、
file_time_type::clock::to_time_t()
となるけど、clock という名前空間は見つからなかったが、
std::chrono::system_clock::to_time_t()
という関数ならば存在しており、
static std::time_t to_time_t( const time_point& t ) noexcept;
という宣言にはなっているところまでは見つけた。
clock というキーワードが何なのかは不明。
139デフォルトの名無しさん (ワッチョイ 1f61-5Ye2)
2019/07/26(金) 16:16:35.83ID:KpYqHMjm0 last_write_time() の型は:
std::filesystem::file_time_type last_write_time(const std::filesystem::path& p);
file_time_type の型(?)は:
using file_time_type = std::chrono::time_point<>;
なので、
decltype(date)::clock::to_time_t() の部分は、decltype()部分を展開(?)すれば
std::chrono::time_point<>::clock::to_time_t()
と書けることは書ける。この部分は、存在することが分かっている:
std::chrono::system_clock::to_time_t()
ととてもよく似ている。
std::filesystem::file_time_type last_write_time(const std::filesystem::path& p);
file_time_type の型(?)は:
using file_time_type = std::chrono::time_point<>;
なので、
decltype(date)::clock::to_time_t() の部分は、decltype()部分を展開(?)すれば
std::chrono::time_point<>::clock::to_time_t()
と書けることは書ける。この部分は、存在することが分かっている:
std::chrono::system_clock::to_time_t()
ととてもよく似ている。
140デフォルトの名無しさん (ワッチョイ 1f61-5Ye2)
2019/07/26(金) 16:23:26.92ID:KpYqHMjm0 https://cpprefjp.github.io/reference/chrono/time_point.html
↑によれば、time_pointは
namespace std {
namespace chrono {
template <class Clock, class Duration = typename Clock::duration>
class time_point;
}}
というテンプレート・クラス。
file_time_typeは、C++20では、
using file_time_type = std::chrono::time_point<std::chrono::file_clock>;
と定義されているので、Clock=std::chrono::file_clock とされてテンプレートが具現化される
らしい。time_point<Clock,Duration>クラスには
Clock clock;
というメンバが存在するらしい。ゆえに、
decltype(date)::clock::to_time_t()は、
std::chrono::time_point<std::chrono::file_clock>::clock::to_time_t()
となり、clock=std::chrono::file_clock という意味になり、結局、
std::chrono::file_clock::to_time_t()
ということになるようだ。
↑によれば、time_pointは
namespace std {
namespace chrono {
template <class Clock, class Duration = typename Clock::duration>
class time_point;
}}
というテンプレート・クラス。
file_time_typeは、C++20では、
using file_time_type = std::chrono::time_point<std::chrono::file_clock>;
と定義されているので、Clock=std::chrono::file_clock とされてテンプレートが具現化される
らしい。time_point<Clock,Duration>クラスには
Clock clock;
というメンバが存在するらしい。ゆえに、
decltype(date)::clock::to_time_t()は、
std::chrono::time_point<std::chrono::file_clock>::clock::to_time_t()
となり、clock=std::chrono::file_clock という意味になり、結局、
std::chrono::file_clock::to_time_t()
ということになるようだ。
141デフォルトの名無しさん (ワッチョイ 1fe3-5Ye2)
2019/07/26(金) 17:00:25.26ID:NUW0chtg0 >>140
file_clock は、仕様がまだ決まって無いらしい。
file_clock は、仕様がまだ決まって無いらしい。
142デフォルトの名無しさん (ワッチョイ 7bf6-ZVB1)
2019/07/26(金) 17:02:19.32ID:klJ/NeRW0 うん、俺もそう読んでる
auto sdat = time_point_cast<time_point<system_clock, system_clock::duration>>(date);
・・・これもうまくいかんなあ
auto sdat = time_point_cast<time_point<system_clock, system_clock::duration>>(date);
・・・これもうまくいかんなあ
143デフォルトの名無しさん (ワッチョイ abe8-BZpS)
2019/07/26(金) 17:20:06.81ID:2lr5ek+30 autoやめるか、autoで得たものをTYPEIDに物故むか。
好きな方をえらぶのじゃ。
好きな方をえらぶのじゃ。
144デフォルトの名無しさん (ワッチョイ 8a2c-aoqV)
2019/07/26(金) 17:47:30.45ID:54Ib42km0145デフォルトの名無しさん (ワッチョイ 7bf6-ZVB1)
2019/07/26(金) 20:50:40.59ID:klJ/NeRW0 void f(path&& pt)
{
auto date = last_write_time(pt);
using dt = typename decltype(date)::clock;
auto val = dt::to_time_t(date); //C2039
}
くっそー、もうAPI呼ぶしかねえのか
{
auto date = last_write_time(pt);
using dt = typename decltype(date)::clock;
auto val = dt::to_time_t(date); //C2039
}
くっそー、もうAPI呼ぶしかねえのか
146デフォルトの名無しさん (ワッチョイ ea3a-lX8d)
2019/07/27(土) 00:58:05.06ID:invV5OQi0 clock_castが実装されるまで待つしかなかろう
147デフォルトの名無しさん (ワッチョイ 1fe3-5Ye2)
2019/07/27(土) 07:04:30.58ID:Tzr++vG10 >>145
単純に
void f(path&& pt)
{
auto date1 = last_write_time(pt);
time_t val1 = std::chrono::system_clock::to_time_t(date1);
}
とすればいいだけのような気がする。
単純に
void f(path&& pt)
{
auto date1 = last_write_time(pt);
time_t val1 = std::chrono::system_clock::to_time_t(date1);
}
とすればいいだけのような気がする。
148デフォルトの名無しさん (ワッチョイ 7bf6-ZVB1)
2019/07/27(土) 07:52:56.55ID:S4xnN4vA0 C2664
残念。。。
残念。。。
149デフォルトの名無しさん (ワッチョイ 1f61-5Ye2)
2019/07/27(土) 08:21:00.74ID:zR8v2AWF0 >>148
https://code.woboq.org/llvm/libcxx/include/chrono.html
↑によれば、以下の様になっており、time_point は、一般的な
template の time_point<・・・>とsystem_clock::time_pointは
厳密には「別」で、後者は前者を特殊化したものを typedef宣言
している。そのため、 std::chrono::system_clock::to_time_t()の
(メンバ)関数宣言の
static time_t to_time_t(const time_point& t) noexcept;
のtime_pointは、chrono::time_point<system_clock>という
system_clock専用になっている。それが原因で>>147は
エラーを出すらしい。
class system_clock {
public:
・・・
typedef chrono::time_point<system_clock> time_point;
・・・
}
https://code.woboq.org/llvm/libcxx/include/chrono.html
↑によれば、以下の様になっており、time_point は、一般的な
template の time_point<・・・>とsystem_clock::time_pointは
厳密には「別」で、後者は前者を特殊化したものを typedef宣言
している。そのため、 std::chrono::system_clock::to_time_t()の
(メンバ)関数宣言の
static time_t to_time_t(const time_point& t) noexcept;
のtime_pointは、chrono::time_point<system_clock>という
system_clock専用になっている。それが原因で>>147は
エラーを出すらしい。
class system_clock {
public:
・・・
typedef chrono::time_point<system_clock> time_point;
・・・
}
150デフォルトの名無しさん (ワッチョイ 7bf6-ZVB1)
2019/07/27(土) 08:58:26.59ID:S4xnN4vA0 そう思ってtime_point_castしてみたんだが、それすら通らない。。。
151デフォルトの名無しさん (ワッチョイ 1f61-5Ye2)
2019/07/27(土) 09:20:37.82ID:zR8v2AWF0 >>150
time_point_cast() は根本的な「Clock」の部分は変換前後で共通の場合のみが
実装されているようです。なのでどこまでの細かい時間を表現できるかの
「時間精度」は変更できても、表現の違いのようなものまでは対応できないのかも
知れません:
namespace std {
namespace chrono {
template <class ToDuration, class Clock, class Duration>
time_point<Clock, ToDuration>
time_point_cast(const time_point<Clock, Duration>& t); // C++11
template <class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
time_point_cast(const time_point<Clock, Duration>& t); // C++14
}}
time_point_cast() は根本的な「Clock」の部分は変換前後で共通の場合のみが
実装されているようです。なのでどこまでの細かい時間を表現できるかの
「時間精度」は変更できても、表現の違いのようなものまでは対応できないのかも
知れません:
namespace std {
namespace chrono {
template <class ToDuration, class Clock, class Duration>
time_point<Clock, ToDuration>
time_point_cast(const time_point<Clock, Duration>& t); // C++11
template <class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
time_point_cast(const time_point<Clock, Duration>& t); // C++14
}}
152デフォルトの名無しさん (ササクッテロラ Sp85-UH6w)
2019/08/16(金) 13:02:16.52ID:ba3w2d//p テンプレートとマクロのメリットデメリットって他にありますか?
またテンプレートとマクロの使い分けで悩んでいます
マクロのメリット
・一括置換ができる
・文字列も使用できる
・定数式にも使える(配列の要素数)
マクロのデメリット
・数式が複雑なときにミスをしやすい(++を渡してはいけない、演算優先順位がミスしやすい)
・型の識別ができない
・一行記述なので大規模なのには不向き
テンプレートのメリット
・名前空間を定義できるので影響範囲をとどめやすい
・型の識別ができる
・関数なので大規模なのも書ける
テンプレートのデメリット
・定数式にしようできない
・ユーザー定義と標準定義が混ざったときのエラーを判別しにくい
こんなメリットデメリットだと思っています。
他にありますか??
これを踏まえた上で使い分けとしては、
マクロは文字列などの簡単な定義に向いていて、テンプレートは処理(演算)を含むものと考えているのですが、
他に観点あるでしょうか
またテンプレートとマクロの使い分けで悩んでいます
マクロのメリット
・一括置換ができる
・文字列も使用できる
・定数式にも使える(配列の要素数)
マクロのデメリット
・数式が複雑なときにミスをしやすい(++を渡してはいけない、演算優先順位がミスしやすい)
・型の識別ができない
・一行記述なので大規模なのには不向き
テンプレートのメリット
・名前空間を定義できるので影響範囲をとどめやすい
・型の識別ができる
・関数なので大規模なのも書ける
テンプレートのデメリット
・定数式にしようできない
・ユーザー定義と標準定義が混ざったときのエラーを判別しにくい
こんなメリットデメリットだと思っています。
他にありますか??
これを踏まえた上で使い分けとしては、
マクロは文字列などの簡単な定義に向いていて、テンプレートは処理(演算)を含むものと考えているのですが、
他に観点あるでしょうか
153デフォルトの名無しさん (アウアウエー Sae3-SXVW)
2019/08/16(金) 13:05:39.63ID:mZqFzvyqa 宿題は宿題スレで
154デフォルトの名無しさん (ワッチョイ 39f6-g2bq)
2019/08/16(金) 13:11:19.36ID:zb39QRfc0 マクロのデメリット
・スコープに従わない ←致命傷
・デバッガとの相性が極悪
・スコープに従わない ←致命傷
・デバッガとの相性が極悪
155デフォルトの名無しさん (ワッチョイ 091a-vqjO)
2019/08/16(金) 13:12:45.69ID:4Npa+oRa0 >>152
「他にありますか?」の答えにはならないんだけど・・・
> テンプレートのデメリット
> ・定数式にしようできない
そんなことなくね?
> ・ユーザー定義と標準定義が混ざったときのエラーを判別しにくい
どういう状況のこと言ってるのかよくわからないけど、マクロにすればわかりやすくなる状況なのか
怪しい気がする。
ってことで、使い分けとしてはマクロでしかできないこと(トークン連結・文字列化)以外は
テンプレート使うとしたほうが簡単だと思うし、よく聞く話。
「他にありますか?」の答えにはならないんだけど・・・
> テンプレートのデメリット
> ・定数式にしようできない
そんなことなくね?
> ・ユーザー定義と標準定義が混ざったときのエラーを判別しにくい
どういう状況のこと言ってるのかよくわからないけど、マクロにすればわかりやすくなる状況なのか
怪しい気がする。
ってことで、使い分けとしてはマクロでしかできないこと(トークン連結・文字列化)以外は
テンプレート使うとしたほうが簡単だと思うし、よく聞く話。
156デフォルトの名無しさん (ワッチョイ b332-dCD9)
2019/08/16(金) 13:31:46.08ID:UtE24GlF0 マクロはコンパイラが展開後のコードを見せてくれるけどテンプレートは見せてくれない
157デフォルトの名無しさん (ワッチョイ 39f6-g2bq)
2019/08/16(金) 13:58:42.46ID:zb39QRfc0 展開じゃないからな
typename Tに何が来ているかなんてのはcout << typeid(T).name()で監視できるんで
iocccなみに解読困難なプリプロセッサ出力がないからって困りゃせん
typename Tに何が来ているかなんてのはcout << typeid(T).name()で監視できるんで
iocccなみに解読困難なプリプロセッサ出力がないからって困りゃせん
158デフォルトの名無しさん (ワッチョイ 0101-ca7b)
2019/08/29(木) 21:44:48.85ID:7sVXLGAA0 その無駄な監視についてなんも思わんてすごいね。
159デフォルトの名無しさん (ワッチョイ 590b-Y9+Q)
2019/08/29(木) 22:37:52.13ID:30u3pQod0 その監視というか確認の煩雑さは、マクロの方が面倒だろに。
160デフォルトの名無しさん (ワッチョイ 590b-Y9+Q)
2019/08/29(木) 23:08:09.91ID:30u3pQod0 >>152
マクロは、テンプレートのメタ側に位置する機能なので、テンプレートに出来ない事や、テンプレート自体のコードに変更を入れる場合につかうと良い。
まあ、リテラルレベルの置換と、プリプロセッサの入力に使えるってくらいかな。
よく使うのは、コンパイルスイッチくらいじゃないかな。
極稀にリテラルを文字列化したり、リテラルレベルでトークン連結処理したりするくらいかな。
定数はぶっちゃけどっちでも良いけど、式を含むならconstexpr を使うのが c++11の流儀。
マクロは、テンプレートのメタ側に位置する機能なので、テンプレートに出来ない事や、テンプレート自体のコードに変更を入れる場合につかうと良い。
まあ、リテラルレベルの置換と、プリプロセッサの入力に使えるってくらいかな。
よく使うのは、コンパイルスイッチくらいじゃないかな。
極稀にリテラルを文字列化したり、リテラルレベルでトークン連結処理したりするくらいかな。
定数はぶっちゃけどっちでも良いけど、式を含むならconstexpr を使うのが c++11の流儀。
161デフォルトの名無しさん (ワッチョイ 0101-MZ1U)
2019/08/29(木) 23:40:06.16ID:7sVXLGAA0 >>159
こんなクソみたいな記述入れて一旦ビルドして確かめるとか正気の沙汰じゃねーわ。
cout << typeid(T).name()
マクロもたいがいダメだろうがこれをやらせるって歪んでるとしか思えん。
こんなクソみたいな記述入れて一旦ビルドして確かめるとか正気の沙汰じゃねーわ。
cout << typeid(T).name()
マクロもたいがいダメだろうがこれをやらせるって歪んでるとしか思えん。
162デフォルトの名無しさん (ワッチョイ d101-GX87)
2019/08/30(金) 05:18:18.83ID:Ib8c6P200 一旦ビルドしてって、テンプレートはコンパイルしないと何が来るかなんて分からんだろ
>マクロもたいがいダメだろうが
とか雑な切り捨てしてる辺りからしても、めっちゃ初心者とみた
>マクロもたいがいダメだろうが
とか雑な切り捨てしてる辺りからしても、めっちゃ初心者とみた
163デフォルトの名無しさん (ワッチョイ b1f6-CJuN)
2019/08/30(金) 06:50:47.21ID:DQcPYA2A0164デフォルトの名無しさん (ワッチョイ 0101-MZ1U)
2019/08/30(金) 08:57:04.22ID:Okk0GWIA0 >一旦ビルドしてって、テンプレートはコンパイルしないと何が来るかなんて分からんだろ
だからこれがしょうもないってことを言ってるんだが。
静的にコード見て判断しずらい仕組みをなぜ疑問なく使えるのか、そっちのがよっぽど素人感丸出しだよ。
だからこれがしょうもないってことを言ってるんだが。
静的にコード見て判断しずらい仕組みをなぜ疑問なく使えるのか、そっちのがよっぽど素人感丸出しだよ。
165デフォルトの名無しさん (ワッチョイ b1f6-CJuN)
2019/08/30(金) 11:57:51.85ID:DQcPYA2A0 へー、判断しづらいのかw
おまえさ、C++に向いてないよ
もうやめたら?
おまえさ、C++に向いてないよ
もうやめたら?
166デフォルトの名無しさん (ブーイモ MM33-ipli)
2019/08/30(金) 12:39:58.20ID:Q+0yO3vEM 横からすまんが
cout << typeid(T).name()
はくそださいと思う
cout << typeid(T).name()
はくそださいと思う
167デフォルトの名無しさん (ワッチョイ 0b7c-ca7b)
2019/08/30(金) 12:54:22.69ID:oVszNH410 そもそも cout がダサいですし
168デフォルトの名無しさん (オイコラミネオ MMed-rs+q)
2019/08/30(金) 13:01:52.10ID:xagSHVl4M 宣言だけのテンプレートを使ってエラー吐かせてクラス名確認するのはわりとやる
169デフォルトの名無しさん (ワッチョイ b1f6-CJuN)
2019/08/30(金) 16:22:43.35ID:DQcPYA2A0 ダサいと言っているその姿がダサいことにくらい気がつけよ
技術板で客観性を全く欠いた戯れ言ぬかしやがって
技術板で客観性を全く欠いた戯れ言ぬかしやがって
170デフォルトの名無しさん (ワッチョイ d101-GX87)
2019/08/30(金) 17:52:02.06ID:Ib8c6P200171デフォルトの名無しさん (ワッチョイ c17b-u0zy)
2019/08/30(金) 20:08:16.72ID:d9KJX/l20 >>161
言ってることは当たってる。C++は、というか、正確に言うと、C++のスレは歪んでる。
C++ってのは結局のところ、何でも出来るように設計されている。
だから、ユーザーがその機能を使うか使わないか、よくよく考えないと逆に色々面倒なことになる。
マクロもテンプレートも上手く使えば素晴らしいが、濫用すると余計に酷くなる。
○○を使えばいい、とか、逆に、○○は禁止、とか、(本来は)単純に切り分けられるものでもない。
この辺は他LL言語やJava/C#等は最初から使える範囲が決まっており、
C++から見ればかなり制限されているから、濫用は出来ない。
結果、「C++の酷いコード」よりは「C#の酷いコード」の方が数段ましなものにはなる。
逆に言えば、C++はプロ仕様で、
自身でコーディングルールをそれなりに決められる人じゃないと適切には使いこなせない。
実際の職場では大概はがんじがらめのルールが決められているはずで、
C++でコーディングルール無しのところなんてないのではないかと思う。
ところがC++のスレは勘違いした素人が多いのか、
C++の新しい文法や小手先テクニックを使って書くことが目的になっている奴が多い。
そして「長期的な保守」を全く考慮してないレスも散見される。
だからここではそういう雑音もきちんと峻別する能力が求められてしまう。
といってもそれもC++の範疇で、つまり「自分で判断しろ」でしかない。
無理ならC#等そういう「馬鹿が使ったらどうしようもなくなる機能」が最初から用意されてない言語を使え、でしかない。
ここで素人相手にマウント合戦なんて意味無いから止めとけ。
> 静的にコード見て判断しずらい仕組みをなぜ疑問なく使えるのか (>>164)
この基準は正しい。
テンプレートに問題があると認識されているのは昔からだ。
ただ、テンプレート以外に上手く同等のコードを得る方法がないから、それでもテンプレートは使われている。
いずれにしても、その機能をどこまで使うかは君が判定するしかない。
実際に動かさないと何が当たっているか分からないテンプレートなんて事実として糞だが、
それでもその方がましならそういう書き方をするときもあるだろう。
全体を見ず、個々の末端の事例でグダグダ言い争っても意味はない。
言ってることは当たってる。C++は、というか、正確に言うと、C++のスレは歪んでる。
C++ってのは結局のところ、何でも出来るように設計されている。
だから、ユーザーがその機能を使うか使わないか、よくよく考えないと逆に色々面倒なことになる。
マクロもテンプレートも上手く使えば素晴らしいが、濫用すると余計に酷くなる。
○○を使えばいい、とか、逆に、○○は禁止、とか、(本来は)単純に切り分けられるものでもない。
この辺は他LL言語やJava/C#等は最初から使える範囲が決まっており、
C++から見ればかなり制限されているから、濫用は出来ない。
結果、「C++の酷いコード」よりは「C#の酷いコード」の方が数段ましなものにはなる。
逆に言えば、C++はプロ仕様で、
自身でコーディングルールをそれなりに決められる人じゃないと適切には使いこなせない。
実際の職場では大概はがんじがらめのルールが決められているはずで、
C++でコーディングルール無しのところなんてないのではないかと思う。
ところがC++のスレは勘違いした素人が多いのか、
C++の新しい文法や小手先テクニックを使って書くことが目的になっている奴が多い。
そして「長期的な保守」を全く考慮してないレスも散見される。
だからここではそういう雑音もきちんと峻別する能力が求められてしまう。
といってもそれもC++の範疇で、つまり「自分で判断しろ」でしかない。
無理ならC#等そういう「馬鹿が使ったらどうしようもなくなる機能」が最初から用意されてない言語を使え、でしかない。
ここで素人相手にマウント合戦なんて意味無いから止めとけ。
> 静的にコード見て判断しずらい仕組みをなぜ疑問なく使えるのか (>>164)
この基準は正しい。
テンプレートに問題があると認識されているのは昔からだ。
ただ、テンプレート以外に上手く同等のコードを得る方法がないから、それでもテンプレートは使われている。
いずれにしても、その機能をどこまで使うかは君が判定するしかない。
実際に動かさないと何が当たっているか分からないテンプレートなんて事実として糞だが、
それでもその方がましならそういう書き方をするときもあるだろう。
全体を見ず、個々の末端の事例でグダグダ言い争っても意味はない。
172デフォルトの名無しさん (ワッチョイ b1f6-CJuN)
2019/08/30(金) 20:31:22.35ID:DQcPYA2A0 上っ面しか見てねえやつだな
長期的な保守性という要求から色んな仕様が発明されているのに
ついていけねえ低脳が被害者面しやがる
長期的な保守性という要求から色んな仕様が発明されているのに
ついていけねえ低脳が被害者面しやがる
173デフォルトの名無しさん (ワッチョイ b1f6-CJuN)
2019/08/30(金) 20:33:11.27ID:DQcPYA2A0 おまえらもういいから、ずーっとC++98使い続けてろよ
それで食っていける仕事があるなら俺たち別に非難しねえ
非難てのも変だけどな
それで食っていける仕事があるなら俺たち別に非難しねえ
非難てのも変だけどな
174デフォルトの名無しさん (ドコグロ MMa3-tb/Y)
2019/08/30(金) 21:07:28.93ID:PLBF1a7yM 中身のない長文書く奴はもれなくバカ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 自民・麻生太郎 副総裁 石破政権の1年は「どよーん」 高市政権の発足で「何となく明るくなった」「世の中のことが決まり動いている」 [Hitzeschleier★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【27歳会社員】「自慰行為に使うために」コインランドリーの乾燥機から24歳女性の下着など計11点(時価8万2080円相当)盗んだ疑い [nita★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★3
- ジャップ「カントの純粋理性批判読むお!!!」⇒全員上巻で挫折 俺恥ずかしいよ…😭 [731544683]
- トランプ、G7に代わるcore 5を発表 [805596214]
- 麻生太郎が石破政権の1年を酷評「どよーんとして何も動かない感じだったな。それに引き換え高市政権は物事が動いている」 [597533159]
- 【速報】室井佑月、米山隆一との離婚を決意wwwwwwwwwwwwwwwwwwww [802034645]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★4
