c++ - vector<bool> 是否违反容器要求?

标签 c++ language-lawyer

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 for T = bool, defined in standard, fails to fulfill container requirements?

是的。

同样,它的迭代器并不是真正的随机访问迭代器,因为operator*产生一个代理对象。

vector<bool>一团糟。

关于c++ - vector<bool> 是否违反容器要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12678236/

相关文章:

c++ - 具有多个客户端的服务器 - 使用 select() 编写

c++ - MSVC6 : Breakpoint stops program

C++ 是否使用放置新的未定义行为两次构造对象?

c++ - 模棱两可的注入(inject)类名不是错误

c - 为什么C语言允许用户创建与已有库函数同名的宏?

c++ - 用户定义的 std 类型推导指南

c++ - libc++ 持续时间错误地隐藏警告?

c++ - 单向链表在中间添加节点

c++ - n维 vector

c++ - 使用 vector C++ 的 trie 实现中的段错误