我正在使用 Windows 10、Visual Studio 2017 v15.7.1/std:c++latest /permissive-
这个带有结构化绑定的简单代码无法编译:
auto [a, b] = func1(x, y, z); // auto func1() -> std::tuple<double, double, double>
[a, b] = func2(x, y, z); // same signature as func2
说E1277 attributes are not allowed here
。
下面的代码也不会编译,同样的错误
double a, b;
[a, b] = func1(x, y, z);
[a, b] = func2(x, y, z);
代码
auto [a, b] = func1(x, y, z);
auto [a, b] = func2(x, y, z);
也不会编译,理所当然地抱怨重新定义。
它编译的唯一方法是
auto [a1, b1] = func1(x, y, z);
auto [a2, b2] = func2(x, y, z);
坦率地说,这是丑陋的。
这个功能是这样设计的吗?还是 VC++ 错误?