https://mevius.5ch.net/test/read.cgi/tech/1589424805/
※前スレ
C++相談室 part152
https://mevius.5ch.net/test/read.cgi/tech/1594528940/
テンプレおしまい
探検
C++相談室 part153
■ このスレッドは過去ログ倉庫に格納されています
2020/10/10(土) 23:18:20.00ID:i4F+i14Y
390デフォルトの名無しさん
2020/10/24(土) 12:26:35.65ID:w2qFem8L おじいちゃん
スレタイ読もうか
スレタイ読もうか
391デフォルトの名無しさん
2020/10/24(土) 12:29:55.83ID:+GevKgJx coutデバッグと言うべきってか
392デフォルトの名無しさん
2020/10/24(土) 12:34:34.81ID:UCFHvZt3 >>388
多重割り込みの話と勘違いしてねーか?
同一割り込みなんて起きなくてもメインルーチンで使ってる関数を割り込みルーチンで使う可能性があるならリエントラントでないとおかしくなるよ
そもそもシングルスレッドで割り込み使ってなくてもある関数内で直接的もしくは間接的に自分自身が呼ばれる場合もリエントラントでないとおかしくなる
最近の言語だとグローバル変数とか静的変数使ってなきゃ(例外はあると思うが)リエントラントになるのであまりに気にする必要はなくなった
多重割り込みの話と勘違いしてねーか?
同一割り込みなんて起きなくてもメインルーチンで使ってる関数を割り込みルーチンで使う可能性があるならリエントラントでないとおかしくなるよ
そもそもシングルスレッドで割り込み使ってなくてもある関数内で直接的もしくは間接的に自分自身が呼ばれる場合もリエントラントでないとおかしくなる
最近の言語だとグローバル変数とか静的変数使ってなきゃ(例外はあると思うが)リエントラントになるのであまりに気にする必要はなくなった
393デフォルトの名無しさん
2020/10/24(土) 14:30:45.75ID:ZbhxKyMw ちゅうことはスレッドセーフなloggerが全部同じファイルにログを書き込むんだろ
これもうそのまんま出力に逐一印字させた方がいいんじゃね
これもうそのまんま出力に逐一印字させた方がいいんじゃね
394デフォルトの名無しさん
2020/10/24(土) 15:33:28.19ID:H3Ix9ZgH >>391
いや、厳密にはstd::coutデバッグというべき(ドヤ
いや、厳密にはstd::coutデバッグというべき(ドヤ
395デフォルトの名無しさん
2020/10/24(土) 15:35:14.21ID:LXBNuCv6 printf()はスレッドセーフ
複数スレッドから呼べる
規格のどこに書いてあるかは示せないが探せばあるはず
なぜなら、ファイルI/Oやからなあれ
もちろんこれは、printf(("ABC")とprintf("CDE")をそれぞれ別スレッドで呼んだ場合、
ABC、CDEという表示になるという保障にはならないが
実際にはたいていのケースで行単位で分かれてくれるからデバッグには困らない
行が頻繁に混じってしまってデバッグにならないようなら初めて行単位の排他の追加を検討する
みたいな
複数スレッドから呼べる
規格のどこに書いてあるかは示せないが探せばあるはず
なぜなら、ファイルI/Oやからなあれ
もちろんこれは、printf(("ABC")とprintf("CDE")をそれぞれ別スレッドで呼んだ場合、
ABC、CDEという表示になるという保障にはならないが
実際にはたいていのケースで行単位で分かれてくれるからデバッグには困らない
行が頻繁に混じってしまってデバッグにならないようなら初めて行単位の排他の追加を検討する
みたいな
396デフォルトの名無しさん
2020/10/24(土) 15:37:01.80ID:LXBNuCv6 ただしもちろん割り込みルーチンからprintf()を呼ぼうとするような猛者は知らん
火の粉がこっちに降りかからない限り
放っておいて差し上げなさい
火の粉がこっちに降りかからない限り
放っておいて差し上げなさい
397デフォルトの名無しさん
2020/10/24(土) 15:38:11.89ID:cYR5fjBG 保障にはならないが〜
実際にはたいていのケースで〜
こういうの一番困る
実際にはたいていのケースで〜
こういうの一番困る
398デフォルトの名無しさん
2020/10/24(土) 17:06:18.74ID:ZbhxKyMw printf使ってヘンになってるならまだ許せるが自前のクソloggerが全般的にクソ動作してると排除したくなる
399デフォルトの名無しさん
2020/10/24(土) 17:47:23.40ID:H3Ix9ZgH 非同期シグナル安全な関数のリストにprintfがない・・・
https://docs.oracle.com/cd/E19683-01/816-3976/gen-26/index.html
https://docs.oracle.com/cd/E19683-01/816-3976/gen-26/index.html
400デフォルトの名無しさん
2020/10/24(土) 17:57:44.41ID:lGAQOfIr 自前でロックすりゃいいだろ
401デフォルトの名無しさん
2020/10/24(土) 18:01:02.56ID:H3Ix9ZgH printf実行中に割り込みが発生して、なおかつそのhandlerでprintf使ってると
デッドロックが発生する(?)
※printfは内部でmallocを使ってるので、>>389に書いてあるようにheapの
操作時にロックを取得しようとするため
という感じかな?
デッドロックが発生する(?)
※printfは内部でmallocを使ってるので、>>389に書いてあるようにheapの
操作時にロックを取得しようとするため
という感じかな?
402デフォルトの名無しさん
2020/10/24(土) 18:10:47.63ID:lGAQOfIr なら自前のprintf作ればいいだろ
標準に頼りきるバカが
標準に頼りきるバカが
404デフォルトの名無しさん
2020/10/24(土) 18:32:15.74ID:lGAQOfIr 己の道は己で切り開くものだ
貴様らジャップどもは文句たらたらと言ってるだけで行動に移そうとはしない
猿に退化する課程の獸だな
貴様らジャップどもは文句たらたらと言ってるだけで行動に移そうとはしない
猿に退化する課程の獸だな
405デフォルトの名無しさん
2020/10/24(土) 18:55:26.18ID:W2/6It6m406デフォルトの名無しさん
2020/10/24(土) 19:34:38.35ID:kvu4j0jg >>404
無関係な問題まで何でもかんでも民族や国籍に結びつけて的外れな非難をしようとするとは、怒りに囚われて論理的思考力が壊滅的にダメージを受けてるんだろう。プログラマとしては致命的だなw
無関係な問題まで何でもかんでも民族や国籍に結びつけて的外れな非難をしようとするとは、怒りに囚われて論理的思考力が壊滅的にダメージを受けてるんだろう。プログラマとしては致命的だなw
407デフォルトの名無しさん
2020/10/24(土) 19:40:13.77ID:LXBNuCv6 割り込みルーチンの中からprintfを読んだら危険なのは
一般にOS機能のうちクリティカルセクション(ロック)みたいな高級な機能が
ユーザーが勝手に定義した割り込みルーチンのコンテキストでは使えないからじゃわ;
OSはOSで割り込みを受けてスレッドのコンテキストを管理しているので、
それとは非同期に起きたOSのあずかり知らない割り込みで
OSの高級な機能が呼ばれたらOSの管理情報の排他が崩れる
一般にOS機能のうちクリティカルセクション(ロック)みたいな高級な機能が
ユーザーが勝手に定義した割り込みルーチンのコンテキストでは使えないからじゃわ;
OSはOSで割り込みを受けてスレッドのコンテキストを管理しているので、
それとは非同期に起きたOSのあずかり知らない割り込みで
OSの高級な機能が呼ばれたらOSの管理情報の排他が崩れる
408デフォルトの名無しさん
2020/10/24(土) 19:44:20.88ID:LXBNuCv6 割り込みルーチンから呼んでも安全なprintf()を自力で実装するとしたら
メインのOSとコードベースをまったく異にする必要があるのでOSの自力実装に近くなってくる
やっぱ割り込みルーチンからはprintf()呼ばないというのが一番スマート
メインのOSとコードベースをまったく異にする必要があるのでOSの自力実装に近くなってくる
やっぱ割り込みルーチンからはprintf()呼ばないというのが一番スマート
409384
2020/10/25(日) 08:15:28.48ID:B8Qi0Gue 聞くんじゃなかった
printf( → fprintf(stdout,
みたいなもんでstdoutが静的記憶域期間とか
そういう説明が聞けるのかと思いきや
なんだこりゃ・・・
printf( → fprintf(stdout,
みたいなもんでstdoutが静的記憶域期間とか
そういう説明が聞けるのかと思いきや
なんだこりゃ・・・
410デフォルトの名無しさん
2020/10/25(日) 08:36:53.97ID:fEg6VUML stdoutが静的記憶だとして(大概のOSではIOBで管理しておりそうなっているはずだが
printf()をユーザー定義な割り込みルーチンから呼ぶと
それの排他を安全に行える人がだれも居なくなる、
printf()をユーザー定義な割り込みルーチンから呼ぶと
それの排他を安全に行える人がだれも居なくなる、
411デフォルトの名無しさん
2020/10/25(日) 10:46:14.61ID:zd7LSfWt printfデバッグでダメならputデバッグでいいじゃん
412デフォルトの名無しさん
2020/10/25(日) 11:40:46.63ID:luVqTFHx printfごときでいちいちケチつけやがって陰気なヤロウどもだぜ
413デフォルトの名無しさん
2020/10/27(火) 20:01:20.88ID:9N87g439 こいつらは屁理屈言いたいだけでデバッグする気なんて少しもない。
414デフォルトの名無しさん
2020/10/27(火) 23:03:02.20ID:1nczmGPR お金払われればやるよ
415デフォルトの名無しさん
2020/10/27(火) 23:23:32.01ID:2LDrYrw3 金もらわないとデバッグしないの?
つまらない人生だね
つまらない人生だね
416デフォルトの名無しさん
2020/10/27(火) 23:25:33.33ID:IA9V1GzZ そんなに楽しい事ならお前がやれば?
417デフォルトの名無しさん
2020/10/28(水) 13:38:51.49ID:6icraQaZ やらないならクソみたいなこと言ってないで黙ってりゃいいのに
418デフォルトの名無しさん
2020/10/28(水) 14:00:21.64ID:a3TqMSUE 普通は成果物に対して報酬を得るよね
バグを出したら潰すのは当たり前
お金払わなきゃデバッグしないとか言ってる人は客先常駐のような労働時間に対して賃金を得る労務提供型なんだろうか
労働者から脱却しないとソフトウェア開発の本当の楽しさを知ることはできない
バグを出したら潰すのは当たり前
お金払わなきゃデバッグしないとか言ってる人は客先常駐のような労働時間に対して賃金を得る労務提供型なんだろうか
労働者から脱却しないとソフトウェア開発の本当の楽しさを知ることはできない
419デフォルトの名無しさん
2020/10/28(水) 14:20:56.34ID:XBU5yUok 1レスの中で矛盾していくスタイル嫌いじゃない
成果に対して報酬があるならお金のためにバグ潰す
時間給なら貰えるお金は変わらないから「バグ潰すのは当たり前」と洗脳したり脅したりしないとバグは潰されない
成果に対して報酬があるならお金のためにバグ潰す
時間給なら貰えるお金は変わらないから「バグ潰すのは当たり前」と洗脳したり脅したりしないとバグは潰されない
420デフォルトの名無しさん
2020/10/28(水) 14:50:59.10ID:K+lW0Fsg いや、いるんだよ
他人が書いたコードを有料で引き継ぐ人
414がそうとは見えないけどね
他人が書いたコードを有料で引き継ぐ人
414がそうとは見えないけどね
421デフォルトの名無しさん
2020/10/28(水) 21:57:28.94ID:bY6aZzj9 つーか普通に仕事してたらちょいちょい
前任者が逃げた、とか潰れた、とか逮捕された、とかで
クソみたいなゴミクソウンコのコードをわたされて
これ保守してねー、みたいなクソみたいな仕事
おしつけられることなんてまれによくあることだろ
そんでなぜかそいつのクソゴミコードのバグを
まるでおれが出したかのように責められる、までがセット
前任者が逃げた、とか潰れた、とか逮捕された、とかで
クソみたいなゴミクソウンコのコードをわたされて
これ保守してねー、みたいなクソみたいな仕事
おしつけられることなんてまれによくあることだろ
そんでなぜかそいつのクソゴミコードのバグを
まるでおれが出したかのように責められる、までがセット
422デフォルトの名無しさん
2020/10/28(水) 22:56:44.64ID:a3TqMSUE ここってサラリーマンが多いのね
423デフォルトの名無しさん
2020/10/28(水) 23:22:28.00ID:58wSuA1P そんなん公然と拒否するか
0から作り直すかの二択だろ
0から作り直すかの二択だろ
424デフォルトの名無しさん
2020/10/29(木) 05:18:26.87ID:A02IsQiB425デフォルトの名無しさん
2020/10/29(木) 08:31:38.61ID:VBEUGOAK >>421
担当を引き受けたのなら、過去の潜在バグであってもお前の責務だろ
担当を引き受けたのなら、過去の潜在バグであってもお前の責務だろ
426デフォルトの名無しさん
2020/10/29(木) 15:25:24.71ID:wtO1e/xm >>423
こういう人間はソフトウェアなんかやらんでコンビニバイトでもやってた方が向いてるよ。
こういう人間はソフトウェアなんかやらんでコンビニバイトでもやってた方が向いてるよ。
427デフォルトの名無しさん
2020/10/30(金) 00:03:30.35ID:Wx+7ZgRN C++でもPythonの内包表記みたいにVectorの要素舐めていって
全ての要素に特定の処理をしたものを別のVectorに代入することってできますか?
全ての要素に特定の処理をしたものを別のVectorに代入することってできますか?
428デフォルトの名無しさん
2020/10/30(金) 00:17:54.24ID:V+g0QAOl まずPython処理系を書きます
429デフォルトの名無しさん
2020/10/30(金) 00:26:39.96ID:XbvTe/rK 内包表記に近いことは無理じゃない?
initialize listでもしかして?って思ったけどうまくできそうにない
initialize listでもしかして?って思ったけどうまくできそうにない
430デフォルトの名無しさん
2020/10/30(金) 08:18:43.66ID:ooe1U4VR つtransform & lambda
431デフォルトの名無しさん
2020/10/30(金) 09:52:48.93ID:5giIBuWJ std::transform(s.begin(), s.end(), t.begin(), [](int e) -> int { return e * 2 });
きっとforのほうが読みやすくて速いと思う
きっとforのほうが読みやすくて速いと思う
432デフォルトの名無しさん
2020/10/30(金) 10:04:53.11ID:73xlUHi2 あとはvalarrayとかな
433デフォルトの名無しさん
2020/10/30(金) 10:06:43.70ID:uffCAw9U 表現上はあたかもラムダ式使った華麗なことやってるように見えるけど
マジでそう見えてるだけで、コンパイルするとfor文とそんなに変わらなくなるんじゃね
むしろどっかの時点でただのfor文に置き代わったりしてるんじゃないの
マジでそう見えてるだけで、コンパイルするとfor文とそんなに変わらなくなるんじゃね
むしろどっかの時点でただのfor文に置き代わったりしてるんじゃないの
434デフォルトの名無しさん
2020/10/30(金) 10:22:13.62ID:73xlUHi2 インタープリターよりは速いよ
435デフォルトの名無しさん
2020/10/30(金) 11:34:39.85ID:7MkyV1Cp436デフォルトの名無しさん
2020/10/30(金) 11:37:53.83ID:7MkyV1Cp437デフォルトの名無しさん
2020/10/30(金) 11:41:09.18ID:7MkyV1Cp >>433
ループ分解されて要素分コード増えてる可能性もあるな
ループ分解されて要素分コード増えてる可能性もあるな
438デフォルトの名無しさん
2020/10/30(金) 13:24:53.40ID:Z0VCec0D forよりも関数的に書いた方が順序は気にせんでいいってメッセージを込めることはできるわけだが、
まあそういう風にかける場合って大抵forで書いても可読性下がらんほど簡易な内容のことが多い。
まあそういう風にかける場合って大抵forで書いても可読性下がらんほど簡易な内容のことが多い。
439デフォルトの名無しさん
2020/10/31(土) 00:26:11.33ID:T4Ek6w2r ヒエッ…、、OpenMPし放題…!
440デフォルトの名無しさん
2020/11/01(日) 15:21:18.11ID:iuijWT2g 競プロで使いたいのですが
if i = 0 then return 0
elif i > 0 then return i - 1
を出来るだけ早く求めるには何かいい方法ありますかね?
ビット演算とかでなんとかなりませんかね?
if i = 0 then return 0
elif i > 0 then return i - 1
を出来るだけ早く求めるには何かいい方法ありますかね?
ビット演算とかでなんとかなりませんかね?
441デフォルトの名無しさん
2020/11/01(日) 15:26:15.37ID:Ncbqgsya442デフォルトの名無しさん
2020/11/01(日) 15:26:18.66ID:BdB3gM+x unsignedですか?
443デフォルトの名無しさん
2020/11/01(日) 15:36:25.10ID:f5GbRfBo simdの比較使えば結果がビットマスクで取得できるのでそれを使うのが定石
両方計算してビット演算で選択
c++関係ない
両方計算してビット演算で選択
c++関係ない
444デフォルトの名無しさん
2020/11/01(日) 15:38:18.92ID:Lkejt9vc >>440
数値のビット数が解っているなら高速化できる
数値のビット数が解っているなら高速化できる
445デフォルトの名無しさん
2020/11/01(日) 15:49:40.49ID:Lkejt9vc446デフォルトの名無しさん
2020/11/01(日) 15:50:59.41ID:Lkejt9vc447デフォルトの名無しさん
2020/11/01(日) 16:00:31.30ID:Lkejt9vc448デフォルトの名無しさん
2020/11/01(日) 17:02:44.45ID:h5xlMYDq つか>>440はelseが何かわからんが、
iがi≧0でやってくるのならデクリメントの飽和演算に見える件について:
iがi≧0でやってくるのならデクリメントの飽和演算に見える件について:
449デフォルトの名無しさん
2020/11/01(日) 17:10:40.93ID:h5xlMYDq SIMD使うと飽和演算は楽勝かもしれんが、4個とか同時に並列に計算するんでなければ
かえって遅いんじゃ…
かえって遅いんじゃ…
450デフォルトの名無しさん
2020/11/01(日) 19:21:41.23ID:PTqWSgE4 >>440
アセンブラだったら、
sub eax,1
jnb lab1
xor eax,eax
lab1:
ret
でおしまい。最大で4クロック。
jmp命令は1つだけ。同じことをCで書くなら、
if (--i < 0) {
i = 0;
}
return i;
とか。
アセンブラだったら、
sub eax,1
jnb lab1
xor eax,eax
lab1:
ret
でおしまい。最大で4クロック。
jmp命令は1つだけ。同じことをCで書くなら、
if (--i < 0) {
i = 0;
}
return i;
とか。
451デフォルトの名無しさん
2020/11/01(日) 21:20:20.31ID:f5GbRfBo クロック数は蛇足でしょ
452デフォルトの名無しさん
2020/11/01(日) 23:07:30.49ID:gRIt+Ld+ 減算が必ず実行されるのはもったいない
... and eax,eax
... jz f@
... dec eax
@@:
... ret
... and eax,eax
... jz f@
... dec eax
@@:
... ret
453デフォルトの名無しさん
2020/11/01(日) 23:12:12.57ID:gRIt+Ld+ test ってあったかな...
454デフォルトの名無しさん
2020/11/01(日) 23:32:16.35ID:h5xlMYDq and eax,eaxも同じようなものなのでは…
どっちも多分パイプライン1段消費
ていうか投機的実行から戻す際のペナルティーは
常にデクリメントする>450の方が小さい可能性が微レ存
知らんけど
どっちも多分パイプライン1段消費
ていうか投機的実行から戻す際のペナルティーは
常にデクリメントする>450の方が小さい可能性が微レ存
知らんけど
455デフォルトの名無しさん
2020/11/02(月) 00:26:45.06ID:dW4oDZpY そっかー
投機的実行はまったく念頭にありませんでした
i が 0 である確率が小さいと考えるのかしら
投機的実行はまったく念頭にありませんでした
i が 0 である確率が小さいと考えるのかしら
456デフォルトの名無しさん
2020/11/02(月) 01:48:22.41ID:U5Xnw0i6 sub eax,1
adc eax,0
でなんとかなんないの?
adc eax,0
でなんとかなんないの?
457デフォルトの名無しさん
2020/11/02(月) 14:18:33.78ID:WhiKrslV458デフォルトの名無しさん
2020/11/02(月) 15:41:23.80ID:OFRBeKTl459デフォルトの名無しさん
2020/11/02(月) 15:44:36.12ID:OFRBeKTl >>456
そのコードは凄い。
そのコードは凄い。
460デフォルトの名無しさん
2020/11/02(月) 16:02:50.72ID:sYYC+nm2 >>456
キャリーちゃんか
キャリーちゃんか
461デフォルトの名無しさん
2020/11/04(水) 00:22:15.96ID:eR5jspY1 Macで環境構築どうすればいいですか
適当に記事あさればいいですか
適当に記事あさればいいですか
462デフォルトの名無しさん
2020/11/04(水) 00:32:44.91ID:pJnXfGcc yes
463デフォルトの名無しさん
2020/11/04(水) 08:22:43.71ID:3PEz6xa2 >>461
新し目のC++使うならhomebrewでg++-9でも入れるのがベターかも。
たとえばstd::filesystemとかcatalinaのXCode(clang++)でも対応したんだが、
バイナリを古いmacに持ってったら予想通り動かんかった。
新し目のC++使うならhomebrewでg++-9でも入れるのがベターかも。
たとえばstd::filesystemとかcatalinaのXCode(clang++)でも対応したんだが、
バイナリを古いmacに持ってったら予想通り動かんかった。
464デフォルトの名無しさん
2020/11/04(水) 20:11:40.32ID:X2fHUOCE 自クラスの終了時のコールバックメソッドで…delete this;すると…うまく消えるんだけど…。
コールバックメソッドは…boolを返す…delete this;した後も…メソッドは動き続けて…るんだよ…。
std::coutも反応してる…メインスレッドとかで…処理されているからですか?何故かが…解らない…。
コールバックメソッドは…boolを返す…delete this;した後も…メソッドは動き続けて…るんだよ…。
std::coutも反応してる…メインスレッドとかで…処理されているからですか?何故かが…解らない…。
465デフォルトの名無しさん
2020/11/04(水) 20:26:01.44ID:X2fHUOCE 464です…。いろいろ調べたら…できるみたいですが…なんでできるのかは…解りません…。
466蟻人間 ◆T6xkBnTXz7B0
2020/11/04(水) 20:30:16.22ID:tdZ4i2Gl thisインスタンスに影響しない関数のコードは多分、C言語の関数みたいに生成される。
関数のコードは不変な実体だと思う。
関数のコードは不変な実体だと思う。
467デフォルトの名無しさん
2020/11/04(水) 20:50:15.92ID:H9SHlq4g 難しく考えすぎ
extern "C" void the_call_back(struct obj_ptr* This)
{
free(This);
}
こうなってるだけだよ
*Thisを殺しても関数から戻るためのスタック情報はどうもせんだろ
extern "C" void the_call_back(struct obj_ptr* This)
{
free(This);
}
こうなってるだけだよ
*Thisを殺しても関数から戻るためのスタック情報はどうもせんだろ
468デフォルトの名無しさん
2020/11/04(水) 21:35:20.66ID:rY/M/1xY struct S1;
using V1 = std::variant<S1>;
struct S1
{
std::vector<V1> m_v;
};
これ合法?
using V1 = std::variant<S1>;
struct S1
{
std::vector<V1> m_v;
};
これ合法?
469デフォルトの名無しさん
2020/11/04(水) 21:39:36.00ID:occL3fQ7 ダメ
470デフォルトの名無しさん
2020/11/04(水) 21:44:35.56ID:rY/M/1xY471デフォルトの名無しさん
2020/11/04(水) 22:56:42.61ID:rY/M/1xY 駄目な根拠わかりませんか?
472デフォルトの名無しさん
2020/11/05(木) 00:49:04.74ID:WV05kVNu >>468
https://timsong-cpp.github.io/cppwp/n4659/res.on.functions#2
> In particular, the effects are undefined in the following cases:
> ...
> - if an incomplete type is used as a template argument when instantiating a template component, unless specifically allowed for that component.
https://timsong-cpp.github.io/cppwp/n4659/res.on.functions#2
> In particular, the effects are undefined in the following cases:
> ...
> - if an incomplete type is used as a template argument when instantiating a template component, unless specifically allowed for that component.
473デフォルトの名無しさん
2020/11/05(木) 01:14:10.93ID:E+L4EB1M C++17以降、std::vectorは不完全型を許容していて、std::variantは
using V1 = std::variant<S1>;
の時点でインスタン化されていない。
これはどう解釈すればいいのかな?
using V1 = std::variant<S1>;
の時点でインスタン化されていない。
これはどう解釈すればいいのかな?
474デフォルトの名無しさん
2020/11/05(木) 01:20:36.91ID:E+L4EB1M これが合法なら良かったんだけど、どうも無理っぽいな。
475デフォルトの名無しさん
2020/11/05(木) 01:46:23.37ID:E+L4EB1M using V1 = std::variant<S1>;
の時点では、テンプレートの明示的なインスタンス化はしていないし、使用していないので暗黙的なインスタンス化もされていない。
ってことでいいよね?
の時点では、テンプレートの明示的なインスタンス化はしていないし、使用していないので暗黙的なインスタンス化もされていない。
ってことでいいよね?
476デフォルトの名無しさん
2020/11/05(木) 01:54:08.91ID:E+L4EB1M boost::make_recursive_variantやstd::anyを知らないわけじゃないんだけど、オブジェクトが必要になるたびにnewするならC#やJavaで十分なわけで、C++のうまみ成分はこういうところにあると思うんですよね。
何とかなりませんかね?
何とかなりませんかね?
477デフォルトの名無しさん
2020/11/05(木) 02:27:49.98ID:tM7hzUED478デフォルトの名無しさん
2020/11/06(金) 16:04:48.24ID:cCU0l/b0 コンストラクタの引数と初期化リスト上のメンバー変数が同じ名前でも、ビルドが通って意図どおりに動いちゃうのだけど、これって仕様通りの動作?
こんなん
: apple(apple)
こんなん
: apple(apple)
479はちみつ餃子 ◆8X2XSCHEME
2020/11/06(金) 16:58:12.08ID:O5a96eYY >>478
仕様通り。 問題ないし、むしろ名前を一致させるスタイルを好む人もいる。
仕様通り。 問題ないし、むしろ名前を一致させるスタイルを好む人もいる。
480デフォルトの名無しさん
2020/11/07(土) 17:39:09.77ID:gsFmAuV5 Foo::Foo(const Fruit& apple)
: apple(apple),
banana(apple),
orange(this.apple) // できない
{
}
が問題無いのか左様か、
いや待てFoo::appleが実はFruitクラスでなくてFruit2クラスで、
orangeにFruit2クラスを受け取るコンストラクタしか持たずかつconstメンバだったらどうすんじゃ…
…
: apple(apple),
banana(apple),
orange(this.apple) // できない
{
}
が問題無いのか左様か、
いや待てFoo::appleが実はFruitクラスでなくてFruit2クラスで、
orangeにFruit2クラスを受け取るコンストラクタしか持たずかつconstメンバだったらどうすんじゃ…
…
481デフォルトの名無しさん
2020/11/07(土) 17:53:59.86ID:gsFmAuV5 Foo::apple、Foo::banana、Foo::orangeではなくて
Foo::m_apple、Foo::m_banana、Foo::m_orangeとしておけば悩む必要は無い
ヘッダファイルでもこの順で宣言したとして、
Foo::Foo(const Fruit& apple)
: m_apple(apple),
m_banana(apple),
m_orange(m_apple) // できる
{
}
でおk
Foo::m_apple、Foo::m_banana、Foo::m_orangeとしておけば悩む必要は無い
ヘッダファイルでもこの順で宣言したとして、
Foo::Foo(const Fruit& apple)
: m_apple(apple),
m_banana(apple),
m_orange(m_apple) // できる
{
}
でおk
482はちみつ餃子 ◆8X2XSCHEME
2020/11/07(土) 17:56:49.27ID:24XfCTPm483デフォルトの名無しさん
2020/11/07(土) 17:57:34.44ID:CPm1qeuk this
javascriptのやりすぎで脳が壊れたか
javascriptのやりすぎで脳が壊れたか
484はちみつ餃子 ◆8X2XSCHEME
2020/11/07(土) 18:00:03.51ID:24XfCTPm485デフォルトの名無しさん
2020/11/07(土) 18:13:54.67ID:gsFmAuV5 >orange(this->apple)
ホンマやΣ(゚д゚;)!いけたわ、
警告をいつもエラー扱いにしているからてっきりエラーかとオモテタ、(言い訳
ホンマやΣ(゚д゚;)!いけたわ、
警告をいつもエラー扱いにしているからてっきりエラーかとオモテタ、(言い訳
486デフォルトの名無しさん
2020/11/07(土) 18:30:43.14ID:2NiwF/8v みなさまthx
classのときはメンバ変数に何らかのprefixなりsuffixなり付けてるから名前が被ることはなかったのだけど、構造体は何も付けないことが多くて、あれ、これってOKなんだっけ、って今更ながら気になってしまいました。
メンバ定義順に初期化ってのも知らんかった…
classのときはメンバ変数に何らかのprefixなりsuffixなり付けてるから名前が被ることはなかったのだけど、構造体は何も付けないことが多くて、あれ、これってOKなんだっけ、って今更ながら気になってしまいました。
メンバ定義順に初期化ってのも知らんかった…
487デフォルトの名無しさん
2020/11/07(土) 20:28:30.69ID:CTlV0YTN >>485
いや、エラーだろ
いや、エラーだろ
488デフォルトの名無しさん
2020/11/07(土) 22:09:33.18ID:gsFmAuV5 warning C4355: 'this' : ベース メンバー初期化子リストで使用されました。
やもーん
やもーん
489デフォルトの名無しさん
2020/11/07(土) 22:24:32.33ID:CdQvP3Xl みんなC++でなにしてるの
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】J1昇格PO決勝戦 千葉、来季のJ1昇格が決定 17年越しの悲願叶える…オリジナル10が05年以来のJ1にそろう [久太郎★]
- 南京で「大虐殺」追悼式典 中国、高市政権をけん制 (共同通信) [少考さん★]
- 中国・ロシア両軍の爆撃機が東京方面へ向かう「異例のルート」を共同飛行…核も搭載可能、連携して威嚇か ★5 [ぐれ★]
- 【日銀】0.75%に利上げへ 来週の決定会合で、30年ぶり水準 賃金改善の継続見込む [ぐれ★]
- 緊急入院のゆたぼん「人身事故は嘘」はデマ 「滑稽ですね」救急車写真で証明、法的措置も検討 [少考さん★]
- 京都のホテル大幅値下げ 訪日中国人客、年1000万人目前で急ブレーキ ★3 [蚤の市★]
- >>5で貼られたスレにみんなで凸するスレ
- 【高市悲報】目ん玉が飛び出るほど仕事が出来ない人間の特徴に高市がぴったり合うと話題に。まさに無能な働き者 [483862913]
- どうしてコンビニって移民に乗っ取られたの?
- 上司「茨城に転勤してもらう 日立、土浦、竜ヶ崎、麻生、下妻から好きなところ選んで良いぞ🤗」👈どこがオススメ? [175344491]
- 日本人「日本1人当たりGDPはチェコ、クウェート、エストニアと同等。エンゲル係数も30%…もう先進国じゃ無いよ😂」 [441660812]
- 【実況】博衣こよりのえちえちドラクエ1&2リメイク🧪★3🏡
