Quote:
3.9 Types [basic.types]
1 [ Note: 3.9 and the subclauses thereof impose requirements on implementations regarding the representation of types.
There are two kinds of types: fundamental types and compound types. Types describe objects (1.8), references (8.3.2),
or functions (8.3.5). —end note ]
2 For any object (other than a base-class subobject) of POD type T, whether or not the object holds a valid value of type T,
the underlying bytes (1.7) making up the object can be copied into an array of char or unsigned char.41) If the content
of the array of char or unsigned char is copied back into the object, the object shall subsequently hold its original
value.
Example:
# define N sizeof (T)
char buf[N];
T obj ; / / obj initialized to its original value
std :: memcpy (buf , & obj , N); / / between these two calls to std::memcpy,
/ / obj might be modified
std :: memcpy (& obj , buf , N); / / at this point, each subobject of obj of scalar type
/ / holds its original value
—end example ]
Or could you be so kind to point me to the section of the standard which declares, what classes which have nonvirtual base classes arn't PODs?