我想要一個有數組元素作爲成員的元組。特別是,我想這個數組元素是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