これがコンパイル時の計算であることは知っていsizeof
ますが、これは私には奇妙に思えます。コンパイラーは、型名または式(型を推測する)のいずれかを取ることができます。しかし、クラス内のタイプをどのように識別しますか?表現を渡すのが唯一の方法のようですが、これはかなり不格好なようです。
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
}