¿Por qué la optimización de clase base vacía (EBO) no se aplica completamente en Visual C++?¿Por qué la optimización de la clase base vacía no funciona?
Si tengo muchas clases base, ¿hay alguna forma de ayudar al compilador a realizar esta optimización?
#include <iostream>
struct T1 { };
struct T2 { };
struct T3 { };
struct T4 { };
struct T5 { };
struct T6 { };
struct Test : T1, T2, T3, T4, T5, T6 { };
int main() { std::cout << sizeof(Test); } // Prints 5
¿Está compilando en modo de depuración? – jpm
@jpm: No, está en modo de lanzamiento. – Mehrdad
Cualquier optimización que afecte el diseño de la memoria tendría que hacerse de manera consistente en todas las unidades de compilación. Así que esto tendría que ser obligatorio o no, en absoluto, de una manera similar a por qué el compilador no puede reordenar los miembros de struct/class. – Mysticial