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
.