Why is this struct not standard-layout?
问题 A piece of code is worth a thousands words. #include <iostream> #include <type_traits> using namespace std; struct A { int a; }; struct B : A { int b; }; int main() { cout << is_standard_layout<B>::value << endl; // output false! WHY? return 0; } 回答1: From the definition of standard layout classes (§9 Classes, paragraph 7) [...] * either has no non-static data members in the most derived class and at most one base class with non-static data members, or has no base classes with non-static data