¿Por qué vector <bool> no es un contenedor STL?

Artículo 18 del libro de Scott Meyers.STL efectivo: 50 maneras específicas de mejorar su uso de la biblioteca de plantillas estándar dice que evitarvector <bool> ya que no es un contenedor de STL y realmente no contiene bools.

El siguiente código:

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

no compilará, violando el requisito de los contenedores STL.

Error:

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

vector<T>::operator [] se supone que el tipo de retorno es T &, pero ¿por qué es un caso especial paravector<bool>?

Que hacevector<bool> realmente consiste en?

El artículo dice además:

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

¿Se puede utilizar esto como una alternativa avector<bool>?

¿Alguien puede explicar esto?

Respuestas a la pregunta(6)

Su respuesta a la pregunta