SOの定数参照の存続期間についていくつか質問がありますが、それでもわかりません。
このコードは有効ですか?
struct S
{
const int &ref;
S( const int &x ) : ref(x) { }
};
int main( )
{
S s( 0 );
// ...
use( s.ref );
// ...
return 0;
}
式( )が評価された0
後に期限切れになるはずなので、直感的にはノーと言います。S s(0);
ただし、GCCとCLANGはどちらも警告なしに正常にコンパイルされ、valgrindはランタイムエラーを検出しません。
参照について何が欠けていますか?