C++ named requirements: StandardLayoutType (since C++11)

Specifies that a type is a standard layout type. Standard layout types are useful for communicating with code written in other programming languages.

# Defect reports

DRApplied toBehavior as publishedCorrect behavior
CWG 1672C++11first non-static data member rule ignoredexistence of empty base classesfirst non-static data member rulemade recursive
CWG 1813C++11class with a member defined in an indirect basewasn’t technically standard-layoutall member declarations must bein the same class
CWG 2120C++11array as first member wasn’t considered whencomparing the first element type with type of a basearray members are considered

# See also