无法编译 C++ 17 个结构化绑定

Can't compile C++ 17 structured bindings

本文关键字:结构化 绑定 C++ 编译      更新时间:2023-10-16

以下代码

#include <iostream>
#include <tuple>
int main()
{
auto [i, c, d] = std::make_tuple(1, 'a', 2.3);
std::cout << "i=" << i << " c=" << c << " d=" << d << 'n';
return 0;
}

没有在我的计算机上编译。我收到以下错误消息:

error: use of undeclared identifier 'i'
error: expected unqualified-id

以及更多相同类型的。

我正在使用:Mac OS X 10.11.6 El Capitan,CLion。当我创建项目时,我确实选择了C++17选项,并且我的CMakeList.txt有以下行:set(CMAKE_CXX_STANDARD 17)

clang--版本-Apple LLVM版本8.0.0(clang-800.0.42.1)

我需要做什么来编译这些代码?

正如@Eljay在评论中所说,clang的旧版本没有完全的C++17支持。

我在没有CLion的情况下转载了这一期。

在10.11.6机器上,使用"Apple LLVM版本8.0.0(clang-800.0.42.1)">

clang++ -std=c++1z junk.cpp

给出了OP报告的错误。(请注意,-std=c++17在这里不是一个有效的选项,这是后来出现的)

在10.14.2机器上,使用"Apple LLVM版本10.0.0(clang-1000.10.44.4)">

clang++ -std=c++17 junk.cpp

编译w/o错误。