如何通过初始化列表初始化嵌套(2D)
注意:在 C++11 中,我们有能力直接初始化
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
现在不再是聚合了。由于大括号初始化器永远不会被自动推导出来,因此类型为Block<3,2>
的对象唯一有效的初始化方式是Block<3,2> b {1,2,3,4,5,6}
。 - dyp