Subclause
[type.traits] describes components used by C++ programs, particularly in
templates, to support the widest possible range of types, optimize
template code usage, detect type related user errors, and perform
type inference and transformation at compile time
. It includes type
classification traits, type property inspection traits, and type
transformations
. The type classification traits describe a complete taxonomy
of all possible C++ types, and state where in that taxonomy a given
type belongs
. The type property inspection traits allow important
characteristics of types or of combinations of types to be inspected
. The
type transformations allow certain properties of types to be manipulated
.