无法编译 C++ 17 个结构化绑定
Can't compile C++ 17 structured bindings
以下代码
#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错误。
相关文章:
- 在基于范围的for循环中使用结构化绑定声明
- 使用结构化绑定'Reflection'
- 为什么结构化绑定不使用"auto&"返回对结构成员的引用,而是返回成员本身
- 为什么 boost::comb 对结构化绑定的支持缺少结构化绑定机制对 boost::tuples::cons 的适应?
- 结构化绑定初始值设定项表单 { 赋值表达式 } 对于 clang 上的数组类型失败
- 在 C++14 中手动实现结构化绑定
- 为什么结构化绑定不支持可变数组?
- 在只读(即 const)访问器上执行结构化绑定的最佳实践是什么?
- 带有 std::minmax 和 rvalues 的结构化绑定
- 在无序映射的结构化绑定中推导类型
- 为什么基于范围的 for 循环中的结构化绑定只是一个副本而不是引用?
- 您自己的类型的结构化绑定,不是结构或元组(通过公共成员函数)
- 结构化绑定:遍历元组的双端面
- 结构化绑定是否适用于 std::vector?
- 结构化绑定,无需复制即可获取子向量的连续元素
- 成员变量的结构化绑定
- 结构化绑定语法是否可以在多态 lambda 中使用
- 结构化绑定的用例是什么?
- C++ 有关unordered_map的结构化绑定问题
- 结构化绑定是否可重用?