【问题标题】:Return C++ reference wrapper [duplicate]返回 C++ 参考包装器 [重复]
【发布时间】:2016-09-17 13:43:09
【问题描述】:

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

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

【问题讨论】:

  • 一个普通的悬空指针/参考

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 2018-10-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多