相关疑难解决方法(0)

Lambda隐式捕获因结构化绑定声明的变量而失败

使用以下代码,我得到一个编译错误C2065 'a': undeclared identifier(使用Visual Studio 2017):

[] {
    auto [a, b] = [] {return std::make_tuple(1, 2); }();
    auto r = [&] {return a; }(); //error C2065
}();
Run Code Online (Sandbox Code Playgroud)

但是,以下代码编译:

[] {
    int a, b;
    std::tie(a, b) = [] {return std::make_tuple(1, 2); }();
    auto r = [&] {return a; }();
}();
Run Code Online (Sandbox Code Playgroud)

我以为这两个样本是等价的.它是编译器错误还是我错过了什么?

c++ lambda c++17 structured-bindings visual-studio-2017

33
推荐指数
4
解决办法
2931
查看次数