2016-09-17 3 views
0

Опасно ли возвращать ссылку обертку, как показано ниже:Возврат C++ ссылки обертка

std::vector<std::reference_wrapper<int>> foo() { 

    int x = 10; 

    std::vector<std::reference_wrapper<int>> vec; 
    vec.push_back(x); 
    return vec; 

} 

foo2() { 
    std::cout << foo()[0] << std::endl; 
} 

Я предполагаю, что локальный/стек переменные й может быть потерян в foo2().

+0

Обычный оборванный указатель/ссылка –

ответ

0

Функция std::vector<std::reference_wrapper<int>> foo(); по существу возвращает вектор со ссылками на локальные переменные, находящиеся в стеке функций, которое было уничтожено. Вектор оборванных ссылок. Это неопределенное поведение.