返回C ++引用包装器

时间:2016-09-17 13:43:09

标签: c++ function reference stl reference-wrapper

返回如下所示的引用包装是否危险:

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()中丢失。

1 个答案:

答案 0 :(得分:0)

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