最佳答案
第23.3.7节 vector<bool>
类[ vector.bool ]第1段规定:
template <class Allocator> class vector<bool, Allocator> {
public:
// types:
typedef bool const_reference;
...
但是这个程序在使用 libc + + 时无法编译:
#include <vector>
#include <type_traits>
int
main()
{
static_assert(std::is_same<std::vector<bool>::const_reference, bool>{}, "?");
}
此外,我注意到 C + + 标准在这个规范中一直保持一致,可以追溯到 C + + 98。我还注意到,自从首次引入 libc + + 以来,libc + + 一直没有遵循这个规范。
这种不符合的动机是什么?