example - ¿Por qué es std:: list más grande en c++ 11?
list c++ example (1)
con este código:
#include <iostream>
#include <list>
int main() {
std::cout << sizeof(std::list<void*>) << std::endl;
};
Logré notar que en GCC 4.7 el tamaño de std::list<void*>
en C ++ 98 es de 16 bytes, y su tamaño en C ++ 11 es de 24 bytes.
Me preguntaba qué cambió en std :: list que lo hizo más grande.
C ++ 11 requiere list::size()
para ejecutarse en tiempo constante. GCC hizo esto posible al agregar el tamaño como miembro de datos . GCC no lo hizo para el modo C ++ 98, porque eso rompería la compatibilidad binaria.
No mezcle el código compilado en el modo C ++ 98 con el código compilado en el modo C ++ 11. No funciona
Actualización : al parecer, la gente de GCC tuvo un cambio de corazón y la conformidad con C ++ 11 es menos importante que mantener la compatibilidad por ahora, por lo que list::size()
ya no se ejecutará en tiempo constante en GCC 4.7.2. Lo hará en una versión futura, en los modos C ++ 98 y C ++ 11.