Почему вектор <bool> не является контейнером STL?

Пункт 18 книги Скотта МейерсаЭффективный STL: 50 конкретных способов улучшить использование стандартной библиотеки шаблонов говорит, чтобы избежатьvector <bool> поскольку это не контейнер STL, и он не содержит bools.

Следующий код:

vector <bool> v; 
bool *pb =&v[0];

не будет компилироваться, нарушая требования контейнеров STL.

Ошибка:

cannot convert 'std::vector<bool>::reference* {aka std::_Bit_reference*}' to 'bool*' in initialization

vector<T>::operator [] тип возвращаемого значения должен быть T &, но почему это особый случай дляvector<bool>?

Что значитvector<bool> действительно состоит из?

Пункт далее говорит:

deque<bool> v; // is a STL container and it really contains bools

Может ли это быть использовано в качестве альтернативыvector<bool>?

Может кто-нибудь, пожалуйста, объясните это?

Ответы на вопрос(6)

Ваш ответ на вопрос