Этот код действителен?
int foo()
{
std::vector<std::string>& v = std::vector<std::string>(5, "X");
// Do something silly...
return 42;
}
Я почему-то думал, что временный объект std::vector
(сразу от знака присваивания)должен быть уничтожен сразу после его построения (отображая таким образом ссылку недействительно).
Однако отладка доказывает, что я ошибаюсь, и я понял, что не совсем понимаю, почему временная переменная уничтожается, когда функция возвращает значение.
Думаю, у меня сильное непонимание чего-то фундаментального, так что, пожалуйста, просветите меня :)