Skip to main content

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.

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.

Requirements

The following types are collectively called standard-layout types:

Properties

See Standard-layout.

Defect reports

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

DRApplied toBehavior as publishedCorrect behavior
CWG 1672C++11first non-static data member rule ignored existence of empty base classesfirst non-static data member rule made recursive
CWG 1813C++11class with a member defined in an indirect base wasn't technically standard-layoutall member declarations must be in the same class
CWG 2120C++11array as first member wasn't considered when comparing the first element type with type of a basearray members are considered

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.

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.

Requirements

The following types are collectively called standard-layout types:

Properties

See Standard-layout.

Defect reports

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

DRApplied toBehavior as publishedCorrect behavior
CWG 1672C++11first non-static data member rule ignored existence of empty base classesfirst non-static data member rule made recursive
CWG 1813C++11class with a member defined in an indirect base wasn't technically standard-layoutall member declarations must be in the same class
CWG 2120C++11array as first member wasn't considered when comparing the first element type with type of a basearray members are considered