namespace dr2120 { // dr2120: 7 struct A {}; struct B : A {}; struct C { A a; }; struct D { C c[5]; }; struct E : B { D d; }; static_assert(__is_standard_layout(B), ""); static_assert(__is_standard_layout(D), ""); static_assert(!__is_standard_layout(E), ""); }
namespace dr1881 { // dr1881: 7 struct A { int a : 4; }; struct B : A { int b : 3; }; static_assert(__is_standard_layout(A), ""); static_assert(!__is_standard_layout(B), ""); struct C { int : 0; }; struct D : C { int : 0; }; static_assert(__is_standard_layout(C), ""); static_assert(!__is_standard_layout(D), ""); }
namespace dr1813 { // dr1813: 7 struct B { int i; }; struct C : B {}; struct D : C {}; struct E : D { char : 4; }; static_assert(__is_standard_layout(B), ""); static_assert(__is_standard_layout(C), ""); static_assert(__is_standard_layout(D), ""); static_assert(!__is_standard_layout(E), ""); struct Q {}; struct S : Q {}; struct T : Q {}; struct U : S, T {}; static_assert(__is_standard_layout(Q), ""); static_assert(__is_standard_layout(S), ""); static_assert(__is_standard_layout(T), ""); static_assert(!__is_standard_layout(U), ""); }
concept bool Standard_layout_type() { return __is_standard_layout(T); }