describes components used by C++ programs, particularly in
templates, to support the widest possible range of types, optimise
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
The type classification traits describe a complete taxonomy
of all possible C++ types, and state where in that taxonomy a given
The type property inspection traits allow important
characteristics of types or of combinations of types to be inspected.
type transformations allow certain properties of types to be manipulated.