C ++使用C样式数组聚合初始化

时间:2019-01-31 16:22:58

标签: c++ stdarray stdtuple

在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样式数组

1 个答案:

答案 0 :(得分:7)

std::tuple不是汇总,也不提供list-initializer constructor。这样就无法在C数组中使用该类型的列表初始化。

但是您可以使用std::make_tuple

auto a = std::make_tuple<int[2], int>({2,2},3);