このコードは有効ですか?
int foo()
{
std::vector<std::string>& v = std::vector<std::string>(5, "X");
// Do something silly...
return 42;
}
何らかの理由で、一時std::vector
オブジェクト(代入記号から右) は、構築直後に破棄する必要があると考えました(したがって、参照が無効になります)。
しかし、デバッグは私が間違っていることを証明し、関数が戻るときに一時変数が破棄される理由がよくわからないことに気付きました。
基本的なことを強く誤解していると思うので、教えてください:)