C++ 标准草案 n3242在 23.2 中,在包含容器要求的表中,指出 X::reference
用于包含 T
的容器必须是 lvalue T
.然而,对于 vector<bool>
, vector<bool>::reference
是另一个类,用于访问存储在 vector 中的各个字节位的代理。
这是否意味着 std::vector
T = bool
的类模板规范,在标准中定义,无法满足容器要求?
最佳答案
Does that mean that
std::vector
class template specification forT = bool
, defined in standard, fails to fulfill container requirements?
是的。
同样,它的迭代器并不是真正的随机访问迭代器,因为operator*
产生一个代理对象。
vector<bool>
一团糟。
关于c++ - vector<bool> 是否违反容器要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12678236/