如何通過初始化程序列表初始化嵌套(2D)std::array
?用於初始化2D std :: array成員的初始化程序列表
template <std::size_t W, std::size_t H>
class Block
{
std::array<std::array<int, W>, H> block;
public:
template <typename ...E>
Block(E&&...e) : block {{std::forward<E>(e)...}} {}
};
類Block
應該能夠初始化如下block
成員:
Block<3, 2> b {{ {1, 2, 3}, {4, 5, 6} }};
注:我們必須直接在C++ 11初始化std::array
的能力:
std::array<std::array<int, 3>, 2> b {{ {1, 2, 3}, {4, 5, 6} }};
我正在使用gcc-4.9.0
通過使'block'私人和提供構造函數,'Block'現在ISN」再一次聚合。由於支撐初始化器從來沒有被推斷出來,所以現在唯一有效的初始化爲「塊<3,2>」類型的對象是'塊<3,2> b {1,2,3,4,5,6}' – dyp
將它回滾到對答案有意義,然後提出一個新問題。 – Shog9