Sé que sizeof
es un cálculo en tiempo de compilación, pero me parece extraño: el compilador puede tomar un nombre de tipo o una expresión (de la cual deduce el tipo). ¿Pero cómo identificas un tipo dentro de una clase? Parece que la única forma es pasar una expresión, que parece bastante torpe.¿Por qué sizeof parse struct members?
struct X { int x; };
int main() {
// return sizeof(X::x); // doesn't work
return sizeof(X()::x); // works, and requires X to be default-constructible
}
Soporte para 'sizeof (X :: x)' se incluye en C++ 0x (cf. http://www.open -std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html). –
@James +1 en tu comentario. Mi respuesta (eliminada) debería haber sido un comentario en realidad, porque Tom no mencionó C++ 0x. Tal vez lo quiere en C++ 98 :) – AraK
Sí, mi pregunta es sobre C++ 98. Sin embargo, incluso si construyo con '-std = C++ 0x', no funciona (GCC 4.3.2). ¿Hay alguna implementación de compilador que lo soporte todavía? – Tom