vector <bool>是否违反了容器要求?

Gri*_*wes 4 c++ language-lawyer

23.2中的C++标准草案n3242,在包含容器要求的表中,声明X::reference对于包含容器T必须是lvalue T.然而,因为vector<bool>,vector<bool>::reference是另一个类,用于访问存储在向量中的单个字节位的代理.

这是否意味着标准中定义的std::vector类模板规范T = bool无法满足容器要求?

Jam*_*lis 10

这是否意味着标准中定义的std::vector类模板规范T = bool无法满足容器要求?

是.

类似地,它的迭代器不是真正的随机访问迭代器,因为它operator*产生一个代理对象.

vector<bool> 是一个烂摊子.

  • 不过,最好不要使用专门的`vector`,而是定义一个全新的类型.后见之明是20/20. (8认同)

Joe*_*cou 7

是的,正如这里所说的一个很好的解释.