Why is this struct not standard-layout?
c++, c++11, standard-layout, struct, type-traits
Solution
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 members, and [...]
Both the most-derived class and its base have non-static data members in your case. So it's not standard layout.
Problem
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; } ```