¿Cómo surgió std :: vector <bool>?

15

Hoy, prácticamente todos los desarrolladores de C ++ están de acuerdo en que std::vector<bool>fue un error, ya que engañosamente no es un contenedor, y sus casos de uso se superponen en gran medida con los de std::bitsettodos modos.

¿Cómo se votó en el estándar? ¿Fue controvertido en ese momento? ¿Cuáles fueron los principales argumentos de apoyo?

xcvii
fuente
¿No fue std::vectorescrito antes std::bitset?
dan04
33
Además, Herb Sutter escribe extensamente sobre std::vector<bool> aquí y aquí . Creo que si profundizas un poco más en sus escritos, encontrarás toda la información que necesitas.
Robert Harvey
1
Ver también gotw.ca/publications/mill09.htm
Robert Harvey

Respuestas:

10

De Herb Sutter usando la referencia citada:

La especialización vectorial se puso intencionalmente en el estándar para proporcionar un ejemplo de cómo escribir un contenedor proxy. Un "contenedor proxy" es un contenedor cuyos objetos no se obtienen directamente; en lugar de proporcionarle punteros o referencias a un objeto contenido, un contenedor proxy le proporciona objetos proxy que pueden usarse para acceder o manipular indirectamente un objeto contenido. Las colecciones proxy pueden ser útiles en los casos en que los objetos dentro de la colección no siempre se pueden acceder de forma confiable directamente como si estuvieran en la memoria, como por ejemplo con una colección basada en disco que automáticamente pagina piezas de sí mismo dentro y fuera de la memoria debajo de las cubiertas como necesario. Entonces, la idea era mostrar cómo hacer que una colección tan proxy cumpla con los requisitos de un "contenedor"

Y sí, hubo discusión en el momento.

  1. Para todos los detalles sangrientos, navegue a DejaNews y realice una búsqueda poderosa de Subject = "vector and bool" y Forum = " c ++ ". Las discusiones tuvieron lugar en enero / febrero de 1997. También encontrará discusiones más recientes de personas que preguntan cómo desactivar la especialización de vectores; vea el final de este artículo para mi consejo.

El resto es historia. Y odio ver una pregunta sin respuesta con tan buenos enlaces.

david.pfx
fuente