Пространства имён
Варианты
Действия

Поддержка типов (базовые типы, RTTI, свойства типов)

Материал из cppreference.com
< cpp
 
 
Библиотека метапрограммирования
Свойства типов
Категории типов
(C++11)
(C++14)  
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Свойства типов
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(до C++20*)
(C++11)(устарело в C++20)
(C++11)
Константы свойств типа
Метафункции
(C++17)
Поддерживаемые операции
Запросы отношений и свойств
Модификации типов
(C++11)(C++11)(C++11)
Преобразования типов
(C++11)(устарело в C++23)
(C++11)(устарело в C++23)
(C++11)
(C++11)
(C++17)

(C++11)(до C++20*)(C++17)
Рациональная арифметика времени компиляции
Целочисленные последовательности времени компиляции
 

(Смотрите также тип для обзора системы типов.)

Содержание

[править] Базовые типы

[править] Основные типы, определяемые языком

[править] Дополнительные базовые типы и макросы

Определены в заголовочном файле <cstddef>
беззнаковый целочисленный тип, возвращаемый оператором sizeof
(определение типа) [править]
знаковый целочисленный тип, возвращаемый при вычитании двух указателей
(определение типа) [править]
(C++11)
тип литерала нулевого указателя nullptr
(определение типа) [править]
определяемая реализацией константа для нулевого указателя
(макроконстанта) [править]
тривиальный тип с такими же высокими требованиями к выравниванию, как и у любого другого скалярного типа
(определение типа) [править]
смещение в байтах от начала типа со стандартной компоновкой до указанного элемента
(функция-макрос) [править]
(C++17)
тип byte
(перечисление) [править]
Определены в заголовочном файле <cstdbool>
Определены в заголовочном файле <stdbool.h>
__bool_true_false_are_defined
(C++11)(устарело)
макроконстанта совместимости с C, расширяется в целочисленный литерал 1
(макроконстанта) [править]
Определены в заголовочном файле <cstdalign>
Определены в заголовочном файле <stdalign.h>
__alignas_is_defined
(C++11)(устарело)
макроконстанта совместимости с C, расширяется в целочисленный литерал 1
(макроконстанта) [править]

[править] Целочисленные типы фиксированной ширины (начиная с C++11)

[править] Типы с плавающей запятой фиксированной ширины (начиная с C++23)

[править] Числовые ограничения

Определены в заголовочном файле <limits>
предоставляет интерфейс для запроса свойств всех основных числовых типов.
(шаблон класса) [править]

[править] Интерфейс числовых ограничений C

[править] Идентификация типа времени выполнения

Определены в заголовочном файле <typeinfo>
содержит некоторую информацию о типе, сгенерированную реализацией.
Это класс, возвращаемый оператором typeid.
(класс) [править]
исключение, которое возникает, если аргумент в операторе typeid равен null
(класс) [править]
исключение, вызванное недопустимым выражением dynamic_cast, т.е. приведение ссылочного типа не выполняется
(класс) [править]
Определены в заголовочном файле <typeindex>
оболочка вокруг объекта type_info, которая может использоваться в качестве индекса в ассоциативных и неупорядоченных ассоциативных контейнерах
(класс) [править]

[править] Свойства типов (начиная с C++11)

Свойства типов определяют интерфейс на основе шаблона времени компиляции для запроса или изменения их свойств.

Попытка специализации шаблона, определённого в заголовке <type_traits>, приводит к неопределённому поведению, за исключением того, что std::common_type может быть специализирован, как описано в его описании.

Шаблон, определённый в заголовке <type_traits> может быть создан с неполным типом, если не указано иное, несмотря на общий запрет на создание экземпляров стандартных библиотечных шаблонов с неполными типами.

[править] Характеристики типов

Определены в заголовочном файле <type_traits>
Категории основных типов
(C++11)
проверяет, является ли тип void
(шаблон класса) [править]
проверяет, является ли тип std::nullptr_t
(шаблон класса) [править]
проверяет, является ли тип целочисленным типом
(шаблон класса) [править]
проверяет, является ли тип типом с плавающей запятой
(шаблон класса) [править]
(C++11)
проверяет, является ли тип типом массива
(шаблон класса) [править]
(C++11)
проверяет, является ли тип типом перечисления
(шаблон класса) [править]
(C++11)
проверяет, является ли тип типом объединения
(шаблон класса) [править]
(C++11)
проверяет, является ли тип типом класса не объединения
(шаблон класса) [править]
проверяет, является ли тип типом функции
(шаблон класса) [править]
проверяет, является ли тип типом указателя
(шаблон класса) [править]
проверяет, является ли тип левосторонней ссылкой
(шаблон класса) [править]
проверяет, является ли тип правосторонней ссылкой
(шаблон класса) [править]
проверяет, является ли тип указателем на нестатический объект-элемент
(шаблон класса) [править]
проверяет, является ли тип указателем на нестатическую функцию-элемент
(шаблон класса) [править]
Категории составных типов
проверяет, является ли тип фундаментальным типом
(шаблон класса) [править]
проверяет, является ли тип арифметическим типом
(шаблон класса) [править]
(C++11)
проверяет, является ли тип целочисленным типом
(шаблон класса) [править]
(C++11)
проверяет, является ли тип объектным типом
(шаблон класса) [править]
проверяет, является ли тип составным типом
(шаблон класса) [править]
проверяет, является ли тип либо левосторонней ссылкой, либо правосторонней ссылкой
(шаблон класса) [править]
проверяет, является ли тип указателем на нестатическую функцию-элемент или объект-элемент
(шаблон класса) [править]
Характеристики типов
(C++11)
проверяет, является ли тип квалифицированным как const
(шаблон класса) [править]
проверяет, является ли тип volatile квалифицированным
(шаблон класса) [править]
проверяет, является ли тип тривиальным
(шаблон класса) [править]
проверяет, можно ли тривиально скопировать тип
(шаблон класса) [править]
проверяет, является ли тип типом со стандартной компоновкой
(шаблон класса) [править]
(C++11)(устарело в C++20)
проверяет, является ли тип типом данных с простой структурой (POD)
(шаблон класса) [править]
(C++11)(устарело в C++17)(удалено в C++20)
проверяет, является ли тип литеральным
(шаблон класса) [править]
проверяет, влияет ли каждый бит в представлении объекта типа на его значение
(шаблон класса) [править]
(C++11)
проверяет, является ли тип классовым типом (но не объединением) и не имеет нестатических элементов данных
(шаблон класса) [править]
проверяет, является ли тип типом полиморфного класса
(шаблон класса) [править]
проверяет, является ли тип типом абстрактного класса
(шаблон класса) [править]
(C++14)
проверяет, является ли тип окончательным классовым типом
(шаблон класса) [править]
проверяет, является ли тип агрегатным типом
(шаблон класса) [править]
(C++11)
проверяет, является ли тип арифметическим типом со знаком
(шаблон класса) [править]
проверяет, является ли тип беззнаковым арифметическим типом
(шаблон класса) [править]
проверяет, является ли тип типом массива с известной границей
(шаблон класса) [править]
проверяет, является ли тип типом массива с неизвестной границей
(шаблон класса) [править]
проверяет, является ли тип типом перечисления с ограниченной областью видимости
(шаблон класса) [править]
Поддерживаемые операции
проверяет, есть ли у типа конструктор для определённых аргументов
(шаблон класса) [править]
проверяет, есть ли у типа конструктор по умолчанию
(шаблон класса) [править]
проверяет, есть ли у типа конструктор копирования
(шаблон класса) [править]
проверяет, может ли тип быть сконструирован из правосторонней ссылки
(шаблон класса) [править]
проверяет, есть ли у типа оператор присваивания для определённого аргумента
(шаблон класса) [править]
проверяет, есть ли у типа оператор присваивания копированием
(шаблон класса) [править]
проверяет, есть ли у типа оператор присваивания перемещением
(шаблон класса) [править]
проверяет, есть ли у типа неудалённый деструктор
(шаблон класса) [править]
проверяет, есть ли у типа виртуальный деструктор
(шаблон класса) [править]
проверяет, можно ли объекты одного типа обменять с объектами того же или другого типа
(шаблон класса) [править]
Запросы характеристик
получает требования к выравниванию типа
(шаблон класса) [править]
(C++11)
получает количество измерений типа, являющегося массивом
(шаблон класса) [править]
(C++11)
получает размер типа массива по указанному измерению
(шаблон класса) [править]
Отношения типов
(C++11)
проверяет, являются ли два типа одним и тем же типом
(шаблон класса) [править]
проверяет, является ли тип производным от другого типа
(шаблон класса) [править]
проверяет, можно ли преобразовать тип в другой тип
(шаблон класса) [править]
проверяет, может ли тип быть вызван (как если бы std::invoke) с заданными типами аргументов
(шаблон класса) [править]
проверяет, являются ли два типа совместимыми по компоновке
(шаблон класса) [править]
проверяет, является ли тип взаимопреобразуемым по указателю (изначально) базовым классом другого типа
(шаблон класса) [править]
проверяет, являются ли объекты типа взаимопреобразуемыми по указателю с указанным подобъектом этого типа
(шаблон функции) [править]
проверяет, соответствуют ли два указанных элемента друг другу в общей начальной подпоследовательности двух указанных типов
(шаблон функции) [править]

[править] Модификации типов

Шаблоны изменения типов создают новые определения типов, применяя изменения к параметру шаблона. Затем к результирующему типу можно получить доступ через элемент type typedef’а.

Определены в заголовочном файле <type_traits>
Спецификаторы const-volatility
удаляет спецификаторы const и/или volatile из данного типа
(шаблон класса) [править]
(C++11)(C++11)(C++11)
добавляет спецификаторы const и/или volatile к данному типу
(шаблон класса) [править]
Ссылки
удаляет ссылку из данного типа
(шаблон класса) [править]
добавляет левостороннюю или правостороннюю ссылку к данному типу
(шаблон класса) [править]
Указатели
удаляет указатель из данного типа
(шаблон класса) [править]
добавляет указатель в данный тип
(шаблон класса) [править]
Модификаторы знаков
делает данный целочисленный тип знаковым
(шаблон класса) [править]
делает данный целочисленный тип беззнаковым
(шаблон класса) [править]
Массивы
удаляет одну размерность из данного типа массива
(шаблон класса) [править]
удаляет все измерения из данного типа массива
(шаблон класса) [править]

[править] Разные преобразования

Определены в заголовочном файле <type_traits>
(C++11)(устарело в C++23)
определяет тип, подходящий для использования в качестве неинициализированного хранилища для типов заданного размера
(шаблон класса) [править]
(C++11)(устарело в C++23)
определяет тип, подходящий для использования в качестве неинициализированного хранилища для всех данных типов
(шаблон класса) [править]
(C++11)
применяет преобразования типов, как при передаче аргумента функции по значению
(шаблон класса) [править]
объединяет std::remove_cv и std::remove_reference
(шаблон класса) [править]
(C++11)
условно удаляет перегрузку функции или специализацию шаблона из разрешения перегрузки
(шаблон класса) [править]
выбирает тот или иной тип на основе логического значения времени компиляции
(шаблон класса) [править]
определяет общий тип группы типов
(шаблон класса) [править]
определяет общий ссылочный тип группы типов
(шаблон класса) [править]
получает базовый целочисленный тип для данного типа перечисления
(шаблон класса) [править]
(C++11)(удалено в C++20)(C++17)
выводит тип результата вызова вызываемого объекта с набором аргументов
(шаблон класса) [править]
(C++17)
псевдоним шаблона с переменным числом аргументов типа void
(псевдоним шаблона) [править]
возвращает аргумент тип без изменений
(шаблон класса) [править]

[править] Операции над свойствами

Определены в заголовочном файле <type_traits>
вариативная логическая метафункция И
(шаблон класса) [править]
вариативная логическая метафункция ИЛИ
(шаблон класса) [править]
(C++17)
логическая метафункция НЕ
(шаблон класса) [править]

[править] Вспомогательные классы

Определены в заголовочном файле <type_traits>
константа времени компиляции указанного типа с указанным значением
(шаблон класса) [править]

Предусмотрены две специализации std::integral_constant для типа bool:

Определены в заголовочном файле <type_traits>
Тип Определение
true_type std::integral_constant<bool, true>
false_type std::integral_constant<bool, false>

[править] Контекст вычисления константы (начиная с C++20)

Определены в заголовочном файле <type_traits>
определяет, происходит ли вызов в контексте вычисления константы
(функция) [править]

[править] Смотрите также

Документация C по Библиотека поддержки типов