In addition to std::is_trivial
and std::is_trivially_copyable
, C++11 provides a number of type traits for checking whether types have trivial constructors, destructors and copy/move assignment operators, i.e:
std::is_trivially_constructible
std::is_trivially_default_constructible
std::is_trivially_copy_constructible
std::is_trivially_move_constructible
std::is_trivially_assignable
std::is_trivially_copy_assignable
std::is_trivially_move_assignable
std::is_trivially_destructible
What is their original intended purpose? Surely some C++ committee paper(s) must explain the rationale for their inclusion in the C++ standard library.