返回如下所示的引用包装是否危险:
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;
}
我假设本地/堆栈变量x可能会在foo2()
中丢失。
答案 0 :(得分:0)
函数std::vector<std::reference_wrapper<int>> foo();
本质上返回一个向量,该向量引用位于函数堆栈中的局部变量,该变量已被销毁。悬挂参考的矢量。这是未定义的行为。