Ich weiß, dass sizeof
eine Kompilierzeit Berechnung ist, aber das scheint mir seltsam: Der Compiler kann entweder einen Typnamen oder einen Ausdruck (von dem er den Typ ableitet). Aber wie identifizieren Sie einen Typ innerhalb einer Klasse? Es scheint die einzige Möglichkeit zu sein, einen Ausdruck zu übergeben, der ziemlich klobig erscheint.Warum analysiert sizeof Strukturelemente nicht?
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
}
Unterstützung für 'sizeof (X :: x)' in C++ 0x enthalten ist (vgl http://www.open -std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html). –
@James +1 bei Ihrem Kommentar. Meine Antwort (gelöscht) hätte eigentlich ein Kommentar sein sollen, denn Tom hat C++ 0x nicht erwähnt. Vielleicht will er es in C++ 98 :) – AraK
Ja, meine Frage ist über C++ 98. Aber selbst wenn ich mit "-std = C++ 0x" baue, funktioniert es nicht (GCC 4.3.2). Gibt es Compiler-Implementierungen, die es noch unterstützen? – Tom