[class.prop] (original) (raw)

11 Classes [class]

11.2 Properties of classes [class.prop]

A trivially copyable class is a class:

A trivial class is a class that is trivially copyable and has one or more eligible default constructors ([class.default.ctor]), all of which are trivial.

[ Note

:

In particular, a trivially copyable or trivial class does not have virtual functions or virtual base classes.

end note

]

A class S is a standard-layout class if it:

[ Example

:

struct B { int i; };
struct C : B { };
struct D : C { };
struct E : D { char : 4; };

struct Q {}; struct S : Q { }; struct T : Q { }; struct U : S, T { };

end example

]

[ Note

:

Standard-layout classes are useful for communicating with code written in other programming languages.

end note

]

[ Example

:

struct N {
int i; int j; virtual ~N(); };

struct T {
int i; private: int j; };

struct SL {
int i; int j; ~SL(); };

struct POD {
int i; int j; };

end example

]

A class S is an implicit-lifetime classif it is an aggregate or has at least one trivial eligible constructor and a trivial, non-deleted destructor.