Шаблон | Комментарии |
template <class T>
struct remove_const; |
Элемент typedef именует type тот же тип, T
за исключением того, что любой константный квалификатор верхнего уровня был удален. [ Example: remove_const_t<const volatile int> оценивается volatile intкак, тогда как remove_const_t<const int*> оценивается
как const int*. ] — end example |
template <class T>
struct remove_volatile; |
Элемент typedef именует type тот же тип, T
за исключением того, что все квалификаторы volatile верхнего уровня были удалены. [ Example: remove_volatile_t<const volatile int>
оценивается const intкак, тогда как remove_volatile_t<volatile int*> оценивается как volatile int*.
] — end example |
template <class T>
struct remove_cv; |
Элемент typedef type должен быть таким же, как T
за исключением того, что любой квалификатор cv верхнего уровня был удален. [ Example: remove_cv_t<const volatile int>
оценивается intкак, тогда как remove_cv_t<const volatile int*>
оценивается как const volatile int*. ] — end example |
template <class T>
struct add_const; |
Если T это ссылка, функция или тип верхнего уровня с указанием const, тогда type именуется тот же тип, что и T, в противном случае
T const. |
template <class T>
struct add_volatile; |
Если T является ссылкой, функцией или типом верхнего уровня, квалифицированным с указанием изменчивости, тогда type именуется тот же тип, что и T, в противном случае
T volatile. |
template <class T>
struct add_cv; |
Элемент typedef type называет тот же тип, что и
add_const_t<add_volatile_t<T>>. |