Я использую 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 ++?