使用以下代码,我得到一个编译错误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)
我以为这两个样本是等价的.它是编译器错误还是我错过了什么?