The better way to describe the definition of different kinds of classes is to draw their subsets on the space of all possible c++ classes.
A good textual description can be found here
Characteristics of each set of classes
Regular
Behaves as any numerical type : you can default construct, copy and compare it.
Trivial
Guarantees a contiguous memory layout
The layout can vary between compilers
There are no side effects on construction
Standard layout
Guarantees a contiguous memory layout
The layout is stable between compilers
Aggregates
Can be brace-list initialized.
Literal
Literal types can be initialized inline in static constexpr members.
Intersections of several sets
Plain old data = std layout & trivial
Stable memory layout
No construction/destruction side effects
These types can be used for serialization/deserialization across process and different languages.