关于std :: array fill的设计决策

Cha*_*l72 11 c++ c++11

std::array 在C++ 11中是一个有用的类,它在C堆栈数组上提供C++ Container接口.

但为什么std::array大多数容器都没有典型的填充构造函数呢?相反,它有一个方法fill.

std::array在这方面,STL容器中有什么独特之处吗?

Bor*_*der 6

从第23.3.2.1节:

数组是一个聚合(8.5.1),可以用语法数组a = {initializer-list}初始化;

如果它工作就像std::vector它不再是POD那样.另外来自同一部分:

应满足总量(8.5.1)的条件.

这些条件是:

聚合是一个数组或类(第9条),没有用户提供的构造函数(12.1),非静态数据成员(9.2)没有大括号或相等的初始化,没有私有或受保护的非静态数据成员(第11条) ),没有基类(第10条),没有虚函数(10.3).


Cas*_*sey 5

是; std::array意味着是一个聚合(C++11§8.5.1),因此可以在可以使用普通数组的情况下使用尽可能多的上下文.聚合可以没有显式构造函数或析构函数.