foo
が有効であることが保証されているかどうか、つまり関数の戻り値をconst参照として格納することが許可されているかどうか混乱していますか?関数の戻り値への参照
戻り値がスタックフレームに格納されているため、値が返された直後に無効になる可能性があるため、私は尋ねています。
Foo getFoo() {
return Foo();
}
void bar() {
const auto& foo = getFoo();
// more function calls...
// is foo guaranteed to be valid?
}
はい、有効です。 –
私は質問の別の側面を強調したいと思っていました。重複しているとマークされたハブ・サッターのリンクは、実際には記憶の観点には触れません。新しいスタックフレームが割り当てられたときに、参照されたオブジェクトが上書きされない理由は本当に興味があります。 – user695652
私はそれが実装定義の機能だと思います。 –