Template | Comments |
template <class T> struct remove_const; | The member typedef type shall name the same type as T except that any top-level const-qualifier has been removed. [ Example: remove_const<const volatile int>::type evaluates to volatile int, whereas remove_const<const int*>::type evaluates to const int*. — end example ] |
template <class T> struct remove_volatile; | The member typedef type shall name the same type as T except that any top-level volatile-qualifier has been removed. [ Example: remove_volatile<const volatile int>::type evaluates to const int, whereas remove_volatile<volatile int*>::type evaluates to volatile int*. — end example ] |
template <class T> struct remove_cv; | The member typedef type shall be the same as T except that any top-level cv-qualifier has been removed. [ Example: remove_cv<const volatile int>::type evaluates to int, whereas remove_cv<const volatile int*>::type 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 shall name the same type as T, otherwise T const. |
template <class T> struct add_volatile; | If T is a reference, function, or top-level volatile-qualified type, then type shall name the same type as T, otherwise T volatile. |
template <class T> struct add_cv; | The member typedef type shall name the same type as add_const<typename add_volatile<T>::type>::type. |