1
libc ++のvector <bool> :: const_referenceがboolではないのはなぜですか?
セクション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 ++はこの仕様に一貫して準拠していないことにも注意してください。 この不適合の動機は何ですか?