0

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

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().

4

1 回答 1

1

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

于 2016-09-17T13:44:59.437 回答