在C++14中,我有以下类型:
std::tuple<int[2], int>;
我该如何正确地初始化它?这个
std::tuple<int[2], int> a {{2,2},3};
给我报了这个错误:
/usr/include/c++/5/tuple:108:25: error: 数组被用作初始化器
而这段代码则没有问题:
std::tuple<std::array<int,2>, int> a {{2,2},3};
这个功能可以工作,但我希望能够使用标准的C风格数组进行操作。
std::array<int,2>
可以解决这个问题,并且使用起来更加容易。如果你担心速度或效率,需要注意的是std::array
是零成本抽象,只要启用优化编译,你可以获得相同的汇编代码。 - NathanOliverstd::tuple
不是聚合体,int[2]
不可复制 :-/ ... - Jarod42