使用数组作为元组成员:有效的C 11元组声明?

以下代码可以使用G 4.7.2进行编译:

#include <tuple>
std::tuple<float,int[2]> x;

但是,对于clang 3.2,会产生以下错误:

错误:数组初始化程序必须是初始化程序列表.

如果我从元组声明中删除浮点类型,则错误消失.上面的元组声明有效吗?

($CXX -std = c 11 -c file.cpp)

解决方法:

我认为标准中没有任何内容禁止您声明.但是,一旦尝试初始化,复制,移动或分配元组,就会遇到问题,因为对于这些操作,元组的所有成员类型都必须能够用作初始化程序,可复制构造,可复制分配和可移动分配(第2.0.4.2.1节).数组不是所有情况.

使用std :: array而不是C样式的数组会更好:

#include <tuple>
#include <array>
std::tuple<float,std::array<int,2> > x;
上一篇:为什么在Python中将单个元素元组解释为该元素?


下一篇:python-将字符串的列转换为以pandas列出