Есть несколько вопросов о времени жизни постоянной ссылки на 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 не обнаруживает никаких ошибок во время выполнения.
Что мне не хватает в ссылках?