Namespaces
Variants

Variable templates for type traits (library fundamentals TS)

From cppreference.net

Версия 1 Расширений для основ библиотеки C++ предоставляет ряд constexpr шаблонов переменных для классов type traits, а также другие аналогичные шаблоны классов с публичными членами ::value .

Если не указано иное, следующие шаблоны переменных определены в пространстве имен std::experimental .

**Примечание:** В данном фрагменте HTML-кода весь текст находится внутри тегов ` `, которые содержат C++ код. Согласно инструкциям, текст внутри таких тегов (которые являются специализированными для кода) не должен переводиться, так как это C++ специфические термины и синтаксис, требующие сохранения в оригинальном виде для технической точности. **Примечание:** В данном фрагменте нет текста для перевода, так как весь контент состоит из HTML-тегов, атрибутов и C++ кода внутри тегов ` `, которые согласно инструкциям не подлежат переводу. **Примечание:** В данном фрагменте HTML не содержится переводимого текста - только HTML-теги, атрибуты и код на C++, которые согласно инструкциям не подлежат переводу. **Примечание:** В данном фрагменте HTML-кода весь текст внутри тегов ` ` представляет собой C++ код, который согласно инструкциям не подлежит переводу. HTML-теги и атрибуты также сохранены без изменений. Поскольку весь переводимый текст отсутствует, результат идентичен исходному коду. **Примечание:** В данном фрагменте HTML не содержится переводимого текста - только HTML-теги, атрибуты и код на C++, которые согласно инструкциям не подлежат переводу. **Примечание:** В данном фрагменте HTML-кода весь текст внутри тегов ` ` является C++ кодом, который согласно инструкциям не подлежит переводу. Вне этих тегов нет текста для перевода, поэтому перевод не требуется. **Примечание:** Весь текст в данном HTML-фрагменте находится внутри тегов ` `, которые содержат C++ код. Согласно вашим инструкциям, текст внутри таких тегов (включая C++ ключевые слова, идентификаторы и синтаксис) не подлежит переводу. Поэтому перевод не требуется - исходный код сохранен в оригинальном виде. **Примечание:** Весь код C++ внутри тегов ` ` сохранен без изменений, так как содержит технические термины C++ и синтаксис, которые не подлежат переводу согласно требованиям. HTML-разметка и атрибуты также сохранены в оригинальном виде. **Примечание:** Весь текст в данном HTML-фрагменте находится внутри тегов ` `, которые относятся к категории ` `/`
` тегов (подсветка синтаксиса), поэтому согласно инструкциям перевод не выполняется. Сохранены все HTML-теги, атрибуты и оригинальное форматирование.
**Примечание:** В данном фрагменте HTML-кода отсутствует переводимый текст - все содержимое состоит из HTML-тегов, атрибутов и C++ кода внутри тегов ` `, которые согласно инструкциям не подлежат переводу. **Примечание:** В данном фрагменте кода не содержится переводимого текста - только HTML-разметка и C++ код, которые согласно инструкциям не подлежат переводу. Весь представленный контент сохранен в оригинальном виде.

Содержание

Type traits

Основные категории типов
Шаблон переменной Значение
Определено в заголовке <experimental/type_traits>
template < class T > constexpr bool is_void_v = std:: is_void < T > :: value ;
template < class T > constexpr bool is_null_pointer_v = std:: is_null_pointer < T > :: value ;
template < class T > constexpr bool is_integral_v = std:: is_integral < T > :: value ;
template < class T > constexpr bool is_floating_point_v = std:: is_floating_point < T > :: value ;
template < class T > constexpr bool is_array_v = std:: is_array < T > :: value ;
template < class T > constexpr bool is_pointer_v = std:: is_pointer < T > :: value ;
template < class T > constexpr bool is_lvalue_reference_v = std:: is_lvalue_reference < T > :: value ;
template < class T > constexpr bool is_rvalue_reference_v = std:: is_rvalue_reference < T > :: value ;
template < class T > constexpr bool is_member_object_pointer_v = std:: is_member_object_pointer < T > :: value ;
template < class T > constexpr bool is_member_function_pointer_v = std:: is_member_function_pointer < T > :: value ;
template < class T > constexpr bool is_enum_v = std:: is_enum < T > :: value ;
template < class T > constexpr bool is_union_v = std:: is_union < T > :: value ;
template < class T > constexpr bool is_class_v = std:: is_class < T > :: value ;
template < class T > constexpr bool is_function_v = std:: is_function < T > :: value ;
Категории составных типов
Шаблон переменной Значение
Определено в заголовочном файле <experimental/type_traits>
template < class T > constexpr bool is_reference_v = std:: is_reference < T > :: value ;
template < class T > constexpr bool is_arithmetic_v = std:: is_arithmetic < T > :: value ;
template < class T > constexpr bool is_fundamental_v = std:: is_fundamental < T > :: value ;
template < class T > constexpr bool is_object_v = std:: is_object < T > :: value ;
template < class T > constexpr bool is_scalar_v = std:: is_scalar < T > :: value ;
template < class T > constexpr bool is_compound_v = std:: is_compound < T > :: value ;
template < class T > constexpr bool is_member_pointer_v = std:: is_member_pointer < T > :: value ;
Свойства типов
Шаблон переменной Значение
Определено в заголовке <experimental/type_traits>
template < class T > constexpr bool is_const_v = std:: is_const < T > :: value ;
template < class T > constexpr bool is_volatile_v = std:: is_volatile < T > :: value ;
template < class T > constexpr bool is_trivial_v = std:: is_trivial < T > :: value ;
template < class T > constexpr bool is_trivially_copyable_v = std:: is_trivially_copyable < T > :: value ;
template < class T > constexpr bool is_standard_layout_v = std:: is_standard_layout < T > :: value ;
template < class T > constexpr bool is_pod_v = std:: is_pod < T > :: value ;
template < class T > constexpr bool is_literal_type_v = std:: is_literal_type < T > :: value ;
template < class T > constexpr bool is_empty_v = std:: is_empty < T > :: value ;
template < class T > constexpr bool is_polymorphic_v = std:: is_polymorphic < T > :: value ;
template < class T > constexpr bool is_abstract_v = std:: is_abstract < T > :: value ;
template < class T > constexpr bool is_final_v = std:: is_final < T > :: value ;
template < class T > constexpr bool is_signed_v = std:: is_signed < T > :: value ;
template < class T > constexpr bool is_unsigned_v = std:: is_unsigned < T > :: value ;
**Примечание:** В данном фрагменте HTML-кода весь текст внутри тегов ` ` является C++ кодом, который согласно инструкциям не подлежит переводу. HTML-теги и атрибуты также сохранены в оригинале. Вне C++ кода переводить нечего, так как остальной текст состоит только из HTML-разметки и идентификаторов. Перевод выполнен в соответствии со всеми указанными требованиями: - HTML-теги и атрибуты сохранены без изменений - Текст внутри тегов не переведен (C++ код) - C++ специфические термины сохранены в оригинале - Сохранено исходное форматирование **Примечание:** В данном фрагменте HTML-кода весь текст уже является C++ кодом внутри тегов ` `, поэтому переводу подлежат только комментарии и пояснения, которых здесь нет. HTML-теги, атрибуты и C++ код сохранены в оригинальном виде в соответствии с требованиями. **Примечание:** В данном фрагменте HTML-кода весь текст уже является C++ кодом, который находится внутри тегов ` `. Согласно инструкциям, C++ специфические термины и код внутри таких тегов не подлежат переводу. Поэтому перевод не требуется, исходный код сохранен без изменений. **Примечание:** В данном случае весь текст внутри тегов ` ` является C++ кодом, поэтому он не был переведен в соответствии с требованиями. HTML теги и атрибуты также сохранены без изменений. **Примечание:** В данном фрагменте нет текста для перевода, так как весь контент состоит из: - HTML-тегов и атрибутов (не подлежат переводу) - C++ кода внутри тегов (не подлежит переводу согласно правилам) - Идентификаторов и технических терминов C++ (is_nothrow_destructible, template, constexpr, bool и т.д.) Все элементы сохранены в оригинальном формате без изменений.
Поддерживаемые операции
Шаблон переменной Значение
Определено в заголовке <experimental/type_traits>
template < class T, class ... Args > constexpr bool is_constructible_v = std:: is_constructible < T, Args... > :: value ;
template < class T, class ... Args > constexpr bool is_trivially_constructible_v = std:: is_trivially_constructible < T, Args... > :: value ;
template < class T, class ... Args > constexpr bool is_nothrow_constructible_v = std:: is_nothrow_constructible < T, Args... > :: value ;
template < class T > constexpr bool is_default_constructible_v = std:: is_default_constructible < T > :: value ;
template < class T > constexpr bool is_trivially_default_constructible_v = std:: is_trivially_default_constructible < T > :: value ;
template < class T > constexpr bool is_nothrow_default_constructible_v = std:: is_nothrow_default_constructible < T > :: value ;
template < class T > constexpr bool is_copy_constructible_v = std:: is_copy_constructible < T > :: value ;
template < class T > constexpr bool is_trivially_copy_constructible_v = std:: is_trivially_copy_constructible < T > :: value ;
template < class T > constexpr bool is_nothrow_copy_constructible_v = std:: is_nothrow_copy_constructible < T > :: value ;
template < class T > constexpr bool is_move_constructible_v = std:: is_move_constructible < T > :: value ;
template < class T > constexpr bool is_trivially_move_constructible_v = std:: is_trivially_move_constructible < T > :: value ;
template < class T > constexpr bool is_nothrow_move_constructible_v = std:: is_nothrow_move_constructible < T > :: value ;
template < class T, class U > constexpr bool is_assignable_v = std:: is_assignable < T, U > :: value ;
template < class T, class U > constexpr bool is_trivially_assignable_v = std:: is_trivially_assignable < T, U > :: value ;
template < class T, class U > constexpr bool is_nothrow_assignable_v = std:: is_nothrow_assignable < T, U > :: value ;
template < class T > constexpr bool is_copy_assignable_v = std:: is_copy_assignable < T > :: value ;
template < class T > constexpr bool is_trivially_copy_assignable_v = std:: is_trivially_copy_assignable < T > :: value ;
template < class T > constexpr bool is_nothrow_copy_assignable_v = std:: is_nothrow_copy_assignable < T > :: value ;
template < class T > constexpr bool is_move_assignable_v = std:: is_move_assignable < T > :: value ;
template < class T > constexpr bool is_trivially_move_assignable_v = std:: is_trivially_move_assignable < T > :: value ;
template < class T > constexpr bool is_nothrow_move_assignable_v = std:: is_nothrow_move_assignable < T > :: value ;
template < class T > constexpr bool is_destructible_v = std:: is_destructible < T > :: value ;
template < class T > constexpr bool is_trivially_destructible_v = std:: is_trivially_destructible < T > :: value ;
template < class T > constexpr bool is_nothrow_destructible_v = std:: is_nothrow_destructible < T > :: value ;
template < class T > constexpr bool has_virtual_destructor_v = std:: has_virtual_destructor < T > :: value ;
**Примечание:** В данном фрагменте HTML-кода весь текст внутри тегов ` ` представляет собой C++ код, который согласно инструкциям не подлежит переводу. Вне этих тегов отсутствует текстовый контент для перевода. **Примечание:** Весь код C++ внутри тегов ` ` оставлен без изменений, так как содержит технические термины C++ и синтаксис, которые не подлежат переводу согласно требованиям. HTML-разметка и атрибуты также сохранены в оригинальном виде. **Примечание:** В данном фрагменте HTML-кода отсутствует переводимый текст - только HTML-теги, атрибуты и C++ код, которые согласно инструкциям не подлежат переводу. Весь контент состоит из технических элементов программирования, которые сохраняются в оригинальном виде.
Запросы свойств
Шаблон переменной Значение
Определено в заголовочном файле <experimental/type_traits>
template < class T > constexpr std:: size_t alignment_of_v = std:: alignment_of < T > :: value ;
template < class T > constexpr std:: size_t rank_v = std:: rank < T > :: value ;
template < class T, unsigned I = 0 > constexpr std:: size_t extent_v = std:: extent < T, I > :: value ;
Отношения между типами
Шаблон переменной Значение
Определено в заголовочном файле <experimental/type_traits>
template < class T, class U > constexpr bool is_same_v = std:: is_same < T, U > :: value ;
template < class Base, class Derived > constexpr bool is_base_of_v = std:: is_base_of < Base, Derived > :: value ;
template < class From, class To > constexpr bool is_convertible_v = std:: is_convertible < From, To > :: value ;

Другие шаблоны переменных

std::ratio сравнение
Шаблон переменной Значение
Определено в заголовочном файле <experimental/ratio>
template < class R1, class R2 > constexpr bool ratio_equal_v = std:: ratio_equal < R1, R2 > :: value ;
template < class R1, class R2 > constexpr bool ratio_not_equal_v = std:: ratio_not_equal < R1, R2 > :: value ;
template < class R1, class R2 > constexpr bool ratio_less_v = std:: ratio_less < R1, R2 > :: value ;
template < class R1, class R2 > constexpr bool ratio_less_equal_v = std:: ratio_less_equal < R1, R2 > :: value ;
template < class R1, class R2 > constexpr bool ratio_greater_v = std:: ratio_greater < R1, R2 > :: value ;
template < class R1, class R2 > constexpr bool ratio_greater_equal_v = std:: ratio_greater_equal < R1, R2 > :: value ;
Разное
Шаблон переменной Значение
Определено в заголовочном файле <experimental/tuple>
template < class T > constexpr std:: size_t tuple_size_v = std:: tuple_size < T > :: value ;
Определено в заголовке <experimental/chrono>
template < class Rep > constexpr bool treat_as_floating_point_v = std:: chrono :: treat_as_floating_point < Rep > :: value ; [1]
Определено в заголовочном файле <experimental/system_error>
template < class T > constexpr bool is_error_code_enum_v = std:: is_error_code_enum < T > :: value ;
template < class T > constexpr bool is_error_condition_enum_v = std:: is_error_condition_enum < T > :: value ;
Определено в заголовочном файле <experimental/functional>
template < class T > constexpr bool is_bind_expression_v = std:: is_bind_expression < T > :: value ;
template < class T > constexpr int is_placeholder_v = std:: is_placeholder < T > :: value ;
Определено в заголовочном файле <experimental/memory>
template < class T, class Alloc > constexpr bool uses_allocator_v = std:: uses_allocator < T, Alloc > :: value ;

Примечания

[1]: Определено в пространстве имен std::chrono::experimental .