2016-09-17 132 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; 
} 

我假定本地/堆栈变量x可以在foo2()丢失。

+0

通常的悬挂指针/参考 –

回答

0

函数std::vector<std::reference_wrapper<int>> foo();从本质上返回一个向量,该向量引用位于已被销毁的函数堆栈中的局部变量。一个悬挂引用的向量。这是未定义的行为。