問題タブ [full-expression]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 一時的なものの寿命
次のコードは正常に機能しますが、なぜこの正しいコードなのですか?foo()によって返される一時の「c_str()」ポインタが有効なのはなぜですか?この一時的なものは、bar()に入るとすでに破棄されていると思いましたが、このようには見えません。だから、今私はfoo()によって返された一時的なものがbar()の呼び出しの後に破壊されると仮定します-これは正しいですか?なぜ?
c++ - 完全な表現の境界と一時的なものの寿命
重複の可能性:
C ++:一時的な引数の寿命?
一時変数は、完全な式を評価する最後のステップとして破棄されると言われています。
一時的なポインタはバーが戻るまで存続しますが、
それはbarが戻るまでまだ存続しますか、それともbaz returnはここで完全な式が終了することを意味します。bazが戻った後にオブジェクトを破棄することをチェックしたコンパイラですが、それを信頼できますか?
c++ - 「完全な式」と「完全な式」
GitHub でこの投稿を見ていましたが、OP の意味が理解できませんでした。
"full expression" suggest that it is a kind of expression, but sometimes it is not.
私の解釈では、「完全な式」(標準で使用される用語) は式ではない可能性があります。[intro.execution]/5 は、次のように完全式の定義を提供します。
完全式は(5.1) — 未評価の
オペランド (8.2)、
(5.2) — 定数式 (8.6)、
(5.3) — init-declarator (節 11) または mem-initializer (15.6.2) 、初期化子の構成式を含む
(5.4) — 一時オブジェクト以外のオブジェクトの存続期間の終わりに生成されたデストラクタの呼び出し (15.2)、または
(5.5) — の部分式ではない式別の式であり、それ以外の場合は完全な式の一部ではありません。
私の解釈が正しい場合、上記の箇条書きのどれが式ではない完全な式を生成するかを知りたい. そうでなければ、つまり、私が間違っている場合、OPは彼のコメントで何を意味しましたか?
c++ - [basic.execution] p5 センテンス 2 の意図
[basic.execution] p5 センテンス 2の状態:
言語構造が関数の暗黙的な呼び出しを生成するように定義されている場合、言語構造の使用は、この定義の目的では式と見なされます。
ただし、この文の意図はすぐにはわかりません。私の最善の推測では、適切な順序付けを確実にし、暗黙的な関数呼び出しが完了する前に一時変数が破棄されないようにするためにここにあると思いますが、これが適用されて一部のコードの意味が変わる状況は見当たりません。例えば:
ここでは、return
ステートメントは式と見なされ、オペランド{}
も式と見なされるため、return
ステートメントの部分式と見なされます。これが文の意図ですか?これは他にどこに当てはまり、意味のある効果をもたらすでしょうか?