【问题标题】:Multiple variable initialization compiler support多变量初始化编译器支持
【发布时间】:2019-05-24 12:38:28
【问题描述】:

在 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。

【问题讨论】:

标签: c++ compiler-errors initialization


【解决方案1】:

这是一个名为 structured binding 的 C++17 功能。

Clang 5 supports them;事实上it did since 4, as do many other compilers。

问题是,您使用的是 Apple Clang,它有 different version numbers。可能是您的编译器太旧,或者您没有像使用 GCC 7.4 那样启用 C++17 功能(其中 C++17 仍处于试验阶段并可选择加入)。

【讨论】:

  • 谢谢 不知道不同的版本,自从我从 cmake 构建以来,我启用了 17 个。由于声誉问题,我无法对答案投赞成票。
  • 现在可以了! ;)
猜你喜欢
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 2021-04-22
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多