我想要一个有数组元素作为成员的元组。特别是,我想这个数组元素是2D的 - 所以任何答案必须工作超过1D。我最喜欢的是我可以用初始化列表初始化的东西,例如std::tuple<ARRAY_TYPE, ...>({{0, 1}, {2, 3}}, ...)
。什么是用数组(C或std :: array)元素构造C++元组的单行表达式?
看起来这样的元组很难构造,需要手动初始化(即对于循环等)。这是我试过的:
std::tuple<int[M][N], ...>
- 由于C风格数组的限制,这不起作用。元组本身是一个有效的类型,但初始化需要手动完成(而不是在构造中)。
std::tuple<std::array<std::array<int, M>, N>, ...>
- 我认为这会起作用,但由于某种原因,像std::tuple<std::array<std::array<int, 2>, 2>, ...>({{0, 1}, {2, 3}}, ...)
之类的东西会失败,并显示“没有匹配的构造函数错误”。它确实在1D工作。
std::tuple<std::vector<std::vector<int>>, ...>({{0, 1}, {2, 3}}, ...)
实际上确实工作,但载体似乎有点小题大做这里
任何想法,SO?有什么办法可以让C风格的数组工作?这将是理想的。
[This](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387)可能是相关的,并且在C++ 17中显然是预期的。 – Quentin