Время жизни временной переменной C++

Этот код действителен?

int foo()
{
    std::vector<std::string>& v = std::vector<std::string>(5, "X");

    // Do something silly...

    return 42;
}

Я почему-то думал, что временный объект std::vector(сразу от знака присваивания)должен быть уничтожен сразу после его построения (отображая таким образом ссылку недействительно).

Однако отладка доказывает, что я ошибаюсь, и я понял, что не совсем понимаю, почему временная переменная уничтожается, когда функция возвращает значение.


Думаю, у меня сильное непонимание чего-то фундаментального, так что, пожалуйста, просветите меня :)

5
задан Yippie-Ki-Yay 10 May 2012 в 18:32
поделиться