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

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

Note: the standard doesn't define a named requirement with this name. This is a type category defined by the core language. It is included here as a named requirement only for consistency.

[edit] Requirements

The following types are collectively called standard-layout types:

[edit] Properties

See Standard-layout.

[edit] Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
CWG 1672 C++11 first non-static data member rule ignoredexistence of empty base classes first non-static data member rulemade recursive
CWG 1813 C++11 class with a member defined in an indirect basewasn't technically standard-layout all member declarations must bein the same class
CWG 2120 C++11 array as first member wasn't considered whencomparing the first element type with type of a base array members are considered

[edit] See also