Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
下面的代码在 G++ 4.7.2 中编译得很好:
#include <tuple> std::tuple<float,int[2]> x;
但是,使用 clang++ 3.2 会产生以下错误:
错误:数组初始值设定项必须是初始值设定项列表。
如果我float从元组声明中删除类型,错误就会消失。上面的元组声明有效吗?
float
( $CXX -std=c++11 -c file.cpp )
我认为标准中没有任何内容禁止您的声明。但是,一旦尝试初始化、复制、移动或分配元组,您就会遇到问题,因为对于这些操作,元组的所有成员类型都必须能够用作初始化器、可复制构造、可复制分配和可移动分配,分别(§20.4.2.1)。数组都不是这种情况。
最好不要使用std::arrayC 样式的数组:
std::array
#include <tuple> #include <array> std::tuple<float,std::array<int,2> > x;