Рассмотрим:
struct Point { int x, y; };
int main()
{
const auto [x, y] = Point{};
}
Этот код компилируется с помощью gcc 7.1 в режиме С++ 17, однако этот:
#include <utility>
struct Point { int x, y; };
int main()
{
const auto [x, y] = Point{};
}
дает ошибку:
bug.cpp: In function 'int main()':
bug.cpp:7:16: error: 'std::tuple_size<const Point>::value' is not an integral constant expression
const auto [x, y] = Point{};
^~~~~~
Что здесь происходит? Ошибка компилятора, или как это должно работать структурированные привязки?