“除了默认构造的数组不为空”是什么意思?

时间:2015-01-30 04:47:30

标签: c++ c++11 stdarray

在N3337中,我正在阅读§23.3.2.1/ 3,它指出:

  

array满足容器和容器的所有要求   可逆容器(23.2),但默认构造为array   对象不是空的,并且交换没有恒定的复杂性。

在§23.2.1,表96容器要求中,它显示了一个默认的构造对象X u;,其中发布条件为u.empty()。大概那么,以下内容:

std::array<int, 0> a;

应该在a.empty()输出1的情况下生成。那么“空”在这里意味着什么?

1 个答案:

答案 0 :(得分:8)

您正在查看边框情况 - 零大小的数组是否为空?忽略该特定问题,标准引用表示默认构造中的一般std::array<T,N> arr不满足后置条件arr.empty()。事实上,只有std::array<T, N>时,empty()才是N==0。此定义也很自然 - std::array<T,N>::size()constexpr,其值为N,而empty()应与size() == 0同义。