考虑:
struct Point { int x, y; };
int main()
{
const auto [x, y] = Point{};
}
此代码在 C++17 模式下使用 gcc 7.1 编译得很好,但是这个:
#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{};
^~~~~~
这里发生了什么?编译器错误,或者这是结构化绑定应该如何工作?