| | |
| template<class T> struct remove_const; | The member typedef type denotes the type formed
by removing any top-level const-qualifier from T. [ Example 1: remove_const_t<const volatile int> evaluates
to volatile int, whereas remove_const_t<const int*> evaluates to
const int*. — end example] |
| template<class T> struct remove_volatile; | The member typedef type denotes the type formed
by removing any top-level volatile-qualifier from T. [ Example 2: remove_volatile_t<const volatile int>
evaluates to const int,
whereas remove_volatile_t<volatile int*> evaluates to volatile int*. — end example] |
| template<class T> struct remove_cv; | The member typedef type denotes the type formed
by removing any top-level cv-qualifiers from T. [ Example 3: remove_cv_t<const volatile int>
evaluates to int, whereas remove_cv_t<const volatile int*>
evaluates to const volatile int*. — end example] |
| template<class T> struct add_const; | If T is a reference, function, or top-level const-qualified
type, then type denotes T, otherwise
T const. |
| template<class T> struct add_volatile; | If T is a reference, function, or top-level volatile-qualified
type, then type denotes T, otherwise
T volatile. |
| template<class T> struct add_cv; | The member typedef type denotes
add_const_t<add_volatile_t<T>>. |