在C++中,空类占用一个字节,但其派生类不会增加额外的大小(利用了编译器的优化),所以可以通过比对其派生类与非派生类的大小判断是否为空。
template<typename T>
struct EmptyHelper : T{
int group[256];
}
struct EmptyHelper{
int group[256];
}
template<typename T>
bool isEmptyClass(){
return sizeof(EmptyHelper2) == sizeof(EmptyHelper<T>);
}