[過去ログ] C++相談室 part164 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
73
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ cb3e-FIIW) [sage] 2023/05/21(日) 00:13:09.51 ID:tvaGSf6W0(1/2) AAS
>>71
range-based for は等価なコードを示す形で意味論が規定されてる。
https://timsong-cpp.github.io/cppwp/n3337/stmt.ranged
「こう書いた場合の挙動と等しい」という説明が「このように展開される」と誤解されたんだろう。
コンパイラの内部で実際に展開しても構わないんだが
プリプロセッサはフェイズの整合性がとれなくなるのでこの展開をプリプロセッサでは実現できない。
74
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ cb3e-FIIW) [sage] 2023/05/21(日) 00:41:25.84 ID:tvaGSf6W0(2/2) AAS
一時オブジェクトの寿命は個々の具体例を網羅的に覚えるというわけにもいかんので
ちゃんと原則を理解しないといかんというのは警告しておく。

>>72 で提示された内容を解説すると、このとき createResult の結果である Result は一時オブジェクトなので
完結式の終わりには解体される。 (>>73 で提示した展開形を参照のこと。)
右辺値は参照で受けた場合に限りその参照の寿命と同じ分だけ寿命が延長されるというルールがあるので
その原則に従えば Result::v の寿命は延長されるのだが v を内包する Result が解体されるときにメンバも解体してしまうので
Result::v も無効になってしまう。
当然だがすでに解体されたオブジェクトはそのイテレータも全部が無効。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.045s