重複の可能性:
C ++:一時的な引数の寿命?
一時変数は、完全な式を評価する最後のステップとして破棄されると言われています。
bar( foo().c_str() );
一時的なポインタはバーが戻るまで存続しますが、
baz( bar( foo().c_str() ) );
それはbarが戻るまでまだ存続しますか、それともbaz returnはここで完全な式が終了することを意味します。bazが戻った後にオブジェクトを破棄することをチェックしたコンパイラですが、それを信頼できますか?