多变量初始化编译器支持
Multiple variable initialization compiler support
在 g++ 7.4 下,我可以像这样声明和初始化多个变量:
std::pair<T, T> foo();
int main ()
{ auto [a, b] = foo(); }
但是在 Apple clang-703 下它给了我一个错误。
我在两个编译器中都找不到关于支持此功能的任何信息。现代编译器支持它还是我不应该使用它?另外,该功能的名称是什么?
编辑:
错误是:
auto [a, b] = foo();
^1 ^2
1 => 使用未声明的标识符 'a'.
2 => 应为不合格 ID。
这是一个称为 structured binding 的 C++17 特性。
Clang 5 supports them; in fact it did since 4, as do many other compilers.
问题是,您使用的是 Apple Clang,它具有 。可能您的编译器太旧了,或者您没有像使用 GCC 7.4 那样启用 C++17 功能(其中 C++17 仍处于实验阶段并且 opt-in)。
在 g++ 7.4 下,我可以像这样声明和初始化多个变量:
std::pair<T, T> foo();
int main ()
{ auto [a, b] = foo(); }
但是在 Apple clang-703 下它给了我一个错误。
我在两个编译器中都找不到关于支持此功能的任何信息。现代编译器支持它还是我不应该使用它?另外,该功能的名称是什么?
编辑: 错误是:
auto [a, b] = foo();
^1 ^2
1 => 使用未声明的标识符 'a'.
2 => 应为不合格 ID。
这是一个称为 structured binding 的 C++17 特性。
Clang 5 supports them; in fact it did since 4, as do many other compilers.
问题是,您使用的是 Apple Clang,它具有