nonplainolddata
Nonplainolddata, often written as non-POD, is a label used in C++ to describe types that do not qualify as plain old data. Plain old data historically referred to simple aggregates that behave like C structs: no user-provided constructors or destructors, no virtual functions, and a predictable memory layout. In modern C++, POD is defined as a type that is both standard-layout and trivially copyable; therefore any type that fails one of these properties is considered non-POD.
Non-POD types include classes with user-provided constructors, destructors, or copy/move operations, as well as classes with
Implications of being non-POD include the need to properly construct and destroy objects, and to rely on
Notes: In modern C++, POD is defined as the conjunction of standard-layout and trivially copyable. The is_pod