Поделиться через


<type_traits>

Определяет шаблон, предоставляющий константы времени компиляции со свойствами аргументов их типа.

#include <type_traits>

Заметки

Предикат типа — это шаблон, который принимает один или два аргумента типа. Если значение предиката типа равно true, он является открыто производным (явно или косвенно) от типа Определение типа (Typedef) true_type. Если значение предиката типа равно false, он является открыто производным (явно или косвенно) от типа Определение типа (Typedef) false_type.

Модификатор типа — это шаблон, который принимает один или несколько аргументов шаблона и содержит один из указанных ниже элементов.

  • typedef modified-type type;

Запрос типа — это шаблон, который принимает один или несколько аргументов шаблона. Запрос типа является открыто производным (явно или косвенно) от integral_constant<std::size_t, value>. Он содержит значение, которое передается как аргумент value.

Шаблоны псевдонимов

Существуют шаблоны псевдонимов для typename foo<T>::type, где "foo" — это имя класса шаблона. Например, add_const содержит шаблон псевдонима для типа add_const_t, определенный следующим образом.

template<class T>
    using add_const_t = typename add_const<T>::type;

add_const_t

aligned_storage_t

make_signed_t

remove_pointer_t

add_cv_t

aligned_union_t

make_unsigned_t

remove_reference_t

add_lvalue_reference_t

common_type_t

remove_all_extents_t

remove_volatile_t

add_pointer_t

conditional_t

remove_const_t

result_of_t

add_rvalue_reference_t

decay_t

remove_cv_t

underlying_type_t

add_volatile_t

enable_if_t

remove_extent_t

Классы

add_const

Делает тип const из типа.

add_cv

Делает тип const/volatile из типа.

add_pointer

Делает из типа указатель на тип.

add_reference

Делает из типа ссылку на тип.

add_volatile

Делает тип volatile из типа.

aligned_storage

Создает должным образом выровненный тип.

alignment_of

Получает выравнивание типа.

common_type

Делает из двух типов экземпляр общего типа.

conditional

Делает из двух типов экземпляр общего типа.

decay

Создает нессылочный, неконстантный или долговременный тип либо указатель на тип.

enable_if

Создает экземпляр типа или неопределенный тип.

extent

Получает измерение массива.

has_nothrow_assign

Проверяет, не вызывает ли тип исключение при назначении.

has_nothrow_constructor

Проверяет, не вызывает ли тип исключение при использовании конструктора по умолчанию.

has_nothrow_copy

Проверяет, не вызывает ли тип исключение при использовании конструктора копии.

has_nothrow_copy_constructor

Проверяет, не вызывает ли тип исключение при использовании конструктора копии.

has_nothrow_default_constructor

Проверяет, не вызывает ли тип исключение при использовании конструктора по умолчанию.

has_trivial_assign

Проверяет, есть ли у типа тривиальное назначение.

has_trivial_constructor

Проверяет, есть ли у типа тривиальный конструктор по умолчанию.

has_trivial_copy

Проверяет, есть ли у типа тривиальный конструктор копии.

has_trivial_copy_constructor

Проверяет, есть ли у типа тривиальный конструктор копии.

has_trivial_default_constructor

Проверяет, есть ли у типа тривиальный конструктор по умолчанию.

has_trivial_destructor

Проверяет, есть ли у типа тривиальный деструктор.

has_virtual_destructor

Проверяет, есть ли у типа виртуальный деструктор.

is_abstract

Проверяет, является ли тип абстрактным классом.

is_arithmetic

Проверяет, является ли тип арифметическим.

is_array

Проверяет, является ли тип массивом.

is_base_of

Проверяет, является ли один тип базовым для другого.

is_class

Проверяет, является ли тип классом.

is_compound

Проверяет, является ли тип нескалярным.

is_const

Проверяет, является ли тип константой.

is_convertible

Проверяет, можно ли преобразовать один тип в другой.

is_empty

Проверяет, является ли тип пустым классом.

is_enum

Проверяет, является ли тип перечислением.

is_floating_point

Проверяет, является ли тип вещественным (с плавающей запятой).

is_function

Проверяет, является ли тип типом функции.

is_fundamental

Проверяет, является ли тип void или арифметическим типом.

is_integral

Проверяет, является ли тип целочисленным.

is_lvalue_reference

Проверяет, является ли тип ссылкой на lvalue.

is_member_function_pointer

Проверяет, является ли тип указателем на функцию-член.

is_member_object_pointer

Проверяет, является ли тип указателем на объект-член.

is_member_pointer

Проверяет, является ли тип указателем на член.

is_object

Проверяет, является ли тип типом объекта.

is_pod

Проверяет, является ли тип типом POD.

is_pointer

Проверяет, является ли тип указателем.

is_polymorphic

Проверяет, есть ли у типа виртуальная функция.

is_reference

Проверяет, является ли тип ссылкой.

is_rvalue_reference

Проверяет, является ли тип ссылкой на rvalue.

is_same

Определяет, совпадают ли два типа.

is_scalar

Проверяет, является ли тип скалярным.

is_signed

Проверяет, является ли тип знаковым целочисленным типом.

is_standard_layout

Проверяет, является ли тип стандартным макетом.

is_union

Проверяет, является ли тип объединением.

is_unsigned

Проверяет, является ли тип беззнаковым целочисленным типом.

is_void

Проверяет, является ли тип типом void.

is_volatile

Проверяет, является ли тип переменным типом.

make_signed

Создает тип или наименьшей знаковый тип, размер которого больше или равен размеру типа.

make_unsigned

Создает тип или наименьший беззнаковый тип, размер которого больше или равен размеру типа.

rank

Получает количество измерений массива.

remove_all_extents

Создает из типа массива тип, не относящийся к массиву.

remove_const

Делает из типа неконстантный тип.

remove_cv

Создает неконстантный/долговременный тип из типа.

remove_extent

Создает тип элемента из типа массива.

remove_pointer

Делает тип из указателя на тип.

remove_reference

Делает из типа нессылочный тип.

remove_volatile

Создает долговременный тип из типа.

integral_constant

Создает целочисленную константу из типа и значения.

Определения типов

false_type

Содержит целочисленную константу со значением false.

true_type

Содержит целочисленную константу со значением true.

См. также

Ссылки

<functional>