我知道这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
}