私はチャットで、次の例を示された。ref-to-const一時的な生涯延長は「一度しか動作しません」という標準的な言い回しはありますか?
#include <iostream>
struct foo { ~foo() { std::cout << "destroying!\n"; } };
const foo& func(const foo& a, const foo&) { return a; }
int main()
{
foo x;
const foo& y = func(foo(), x);
std::cout << "main\n";
}
destroying!
main
destroying!
foo
、一時の寿命はそれを取得にもかかわらず、main
の全体に拡張されていないことを証明しているように見えますその範囲内のref-to-const
にバインドされています。
おそらく、その後、生涯延長は「1回だけ」機能します。つまり、func
の引数が初期化されたときに適用されますが、連続するバインディングを介して渡されることはありません。
私の解釈は正しいですか?もしそうなら(そして個々のパラグラフが直接適用可能な場合)、この振る舞いを定義する標準的な言い回しは何ですか?
'func'の第2引数は何ですか?あなたがそれを残すと(そして 'x')何が起こるでしょうか? –
@ KonradRudolph:これは、テキスト "main"の出力に対する破壊命令を示すためのものです。 –