【发布时间】:2019-01-31 16:22:58
【问题描述】:
在 c++14 中,我有以下类型:
std::tuple<int[2], int>;
如何正确初始化它?这个
std::tuple<int[2], int> a {{2,2},3};
给我这个错误:
/usr/include/c++/5/tuple:108:25: 错误:数组用作初始化器
此时:
std::tuple<std::array<int,2>, int> a {{2,2},3};
可行,但我希望能够使用标准 C 样式数组
【问题讨论】:
-
为什么需要原始数组?
std::array<int,2>解决了这个问题并且更容易使用。如果您担心速度或效率,请注意std::array是零成本抽象,只要您通过优化进行编译,您就会得到相同的汇编代码。 -
std::tuple不可聚合,int[2]不可复制:-/ ... -
@NathanOliver,我同意你的看法。我必须使用使用它们的现有代码,所以我试图看看是否有其他方法