在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
的情况下生成。那么“空”在这里意味着什么?
答案 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
同义。