The Boost type-traits library contains a set of very specific traits classes, each of which encapsulate a single trait from the C++ type system; for example, is a type a pointer or a reference type? Or does a type have a trivial constructor, or a const-qualifier?
The type-traits library also contains a set of classes that perform a specific
transformation on a type; for example, they can remove a top-level const or
volatile qualifier from a type. Each class that performs a transformation defines
a single typedef-member
that is the result of the transformation.