Namespaces
Variants

Experimental library header <experimental/reflect>

From cppreference.net
Standard library headers
Experimental library headers
Execution P2300
<experimental/execution>
Filesystem TS
<experimental/filesystem>
Parallelism TS (v1, v2)
experimental/algorithm
experimental/execution_policy
experimental/exception_list
experimental/numeric
<experimental/simd>
experimental/task_block
Library Fundamentals TS (v1, v2, v3)
experimental/algorithm
<experimental/any>
experimental/array
experimental/chrono
experimental/deque
experimental/forward_list
<experimental/functional>
experimental/future
experimental/iterator
experimental/list
experimental/map
experimental/memory
<experimental/memory_resource>
experimental/numeric
<experimental/optional>
experimental/propagate_const
experimental/random
experimental/ratio
experimental/regex
experimental/scope
experimental/set
experimental/source_location
experimental/string
<experimental/string_view>
experimental/system_error
experimental/tuple
experimental/type_traits
experimental/unordered_map
experimental/unordered_set
experimental/utility
experimental/vector

Concurrency TS
experimental/atomic
experimental/barrier
experimental/future
experimental/latch
Ranges TS
Coroutines TS
experimental/coroutine
Networking TS
experimental/buffer
experimental/executor
experimental/internet
experimental/io_context
<experimental/net>
experimental/netfwd
experimental/socket
experimental/timer
Reflection TS
<experimental/reflect>

Этот заголовок является частью Reflection TS .

Определено в пространстве имён std::experimental::reflect
Определено во встроенном пространстве имён std::experimental::reflect::v1

Содержание

Концепции

(reflection TS)
определяет, что тип является метаобъектным типом
(концепт)
(reflection TS)
определяет, что тип метаобъекта является типом последовательности метаобъектов
(концепт)
(reflection TS)
указывает, что тип метаобъекта отражает область параметров шаблона
(концепт)
(reflection TS)
указывает, что тип метаобъекта отражает сущность или псевдоним с ассоциированным (возможно, пустым) именем
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает псевдоним типа, псевдоним пространства имен или псевдоним, введенный с помощью using-объявления
(концепт)
(reflection TS)
указывает, что тип метаобъекта отражает member-declaration класса
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает перечислитель
(концепт)
(reflection TS)
указывает, что тип метаобъекта отражает переменную или член данных
(concept)
(reflection TS)
указывает, что тип метаобъекта удовлетворяет требованиям RecordMember , Enumerator , или Variable , или отражает пространство имен, отличное от глобального пространства имен
(концепт)
(reflection TS)
указывает, что тип метаобъекта отражает сущность, имеющую тип
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает пространство имен
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает глобальное пространство имен
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает тип класса, не являющегося объединением
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает тип перечисления
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает тип класса
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает пространство имён, класс, перечисление, функцию, тип замыкания, область параметров шаблона
(концепт)
(reflection TS)
указывает, что тип метаобъекта отражает тип
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает перечислитель или constexpr переменную
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает прямое базовое класс, полученное из get_base_classes
(концепт)
(reflection TS)
указывает, что тип метаобъекта отражает параметр функции
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает функцию (включая конструкторы и деструкторы)
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает выражение
(concept)
указывает, что тип метаобъекта отражает выражение в скобках
(концепт)
(reflection TS)
указывает, что метаобъектный тип отражает function-call-expression
(концепт)
указывает, что тип метаобъекта отражает functional-type-conv-expression
(концепт)
(reflection TS)
указывает, что тип метаобъекта отражает функцию (исключая конструкторы и деструкторы)
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает функцию-член (исключая конструкторы и деструкторы)
(концепт)
(reflection TS)
указывает, что тип метаобъекта отражает специальную функцию-член
(концепт)
(reflection TS)
указывает, что тип метаобъекта отражает конструктор
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает деструктор
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает операторную функцию или функцию преобразования
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает функцию преобразования
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает тип замыкания необобщённого лямбда-выражения
(concept)
(reflection TS)
указывает, что тип метаобъекта отражает захват лямбды
(concept)

Классы

Object операции
(reflection TS)
проверяет, отражают ли два метаобъектных типа одну и ту же сущность или псевдоним
(шаблон класса)
(reflection TS)
получает предполагаемый номер строки объявления отраженной сущности или псевдонима
(шаблон класса)
(reflection TS)
получает определенный реализацией номер колонки объявления отраженной сущности или псевдонима
(шаблон класса)
(reflection TS)
получает предполагаемое имя файла объявления отраженной сущности или псевдонима
(шаблон класса)
ObjectSequence операции
(reflection TS)
получает размер последовательности метаобъектов
(шаблон класса)
(reflection TS)
получает тип метаобъекта с указанным индексом в последовательности
(шаблон класса)
(reflection TS)
применяет шаблон к последовательности метаобъектов
(шаблон класса)
Named операции
(reflection TS)
проверяет, является ли отражённая сущность или псевдоним именованными
(шаблон класса)
(reflection TS)
получает неквалифицированное имя отражённой сущности или псевдонима
(шаблон класса)
(reflection TS)
получает определенное реализацией отображаемое имя отражаемой сущности или псевдонима
(шаблон класса)
Alias операции
(reflection TS)
получает тип метаобъекта, отражающий связанную сущность отраженного алиаса
(шаблон класса)
Type операции
(reflection TS)
получает тип метаобъекта, отражающий тип отраженной сущности или псевдонима
(шаблон класса)
(reflection TS)
получает тип отраженной сущности или псевдонима
(шаблон класса)
(reflection TS)
проверяет, отражает ли метаобъектный тип тип перечисления
(шаблон класса)
(reflection TS)
проверяет, отражает ли метаобъектный тип тип объединения
(шаблон класса)
проверяет, отражает ли тип метаобъекта тип класса, не являющегося объединением, объявление которого использует class или struct соответственно
(шаблон класса)
ScopeMember операции
(reflection TS)
получает тип метаобъекта, отражающий область видимости отраженной сущности или псевдонима
(шаблон класса)
Base операции
(reflection TS)
получает тип метаобъекта, отражающий базовый класс в заданном отношении базовых классов
(шаблон класса)
RecordMember и Base операции
(reflection TS)
проверяет, является ли отражённый член или базовый класс публичным
(шаблон класса)
(reflection TS)
проверяет, является ли отражённый член или базовый класс защищённым
(шаблон класса)
(reflection TS)
проверяет, является ли отражённый член или базовый класс приватным
(шаблон класса)
Record операции
получает тип последовательности метаобъектов, элементы которой отражают публичные, доступные или все члены данных отраженного класса
(шаблон класса)
получает тип последовательности метаобъектов, элементы которой отражают публичные, доступные или все функции-члены отражаемого класса
(шаблон класса)
(reflection TS)
получает тип последовательности метаобъектов, элементы которой отражают все конструкторы отражаемого класса
(шаблон класса)
(reflection TS)
получает тип последовательности метаобъектов, элементы которой отражают все операторные функции и функции преобразования, объявленные в отражаемом классе
(шаблон класса)
(reflection TS)
получает тип метаобъекта, отражающий деструктор отраженного класса
(шаблон класса)
получает тип последовательности метаобъектов, элементы которой отражают публичные, доступные или все вложенные типы или typedef-члены отраженного класса
(шаблон класса)
получает тип последовательности метаобъектов, элементы которой отражают публичные, доступные или все базовые классы отражаемого класса
(шаблон класса)
Enum операции
(reflection TS)
проверяет, является ли отражённое перечисление scoped
(шаблон класса)
(reflection TS)
получает тип последовательности метаобъектов, элементы которой отражают перечислители отраженного перечисления
(шаблон класса)
(reflection TS)
получает тип метаобъекта, отражающий базовый тип отраженного перечисления
(шаблон класса)
Variable операции
(reflection TS)
получает значение отраженной переменной, которое является константным выражением
(шаблон класса)
(reflection TS)
проверяет, объявлена ли переменная с thread_local
(шаблон класса)
FunctionParameter операции
(reflection TS)
проверяет, имеет ли отражённый параметр аргумент по умолчанию
(шаблон класса)
Callable операции
(reflection TS)
получает тип последовательности метаобъектов, элементы которой отражают параметры отраженной функции
(шаблон класса)
(reflection TS)
проверяет, содержит ли список параметров отраженной функции параметр с многоточием
(шаблон класса)
(reflection TS)
проверяет, является ли отражённая функция небросающей исключения
(шаблон класса)
(reflection TS)
проверяет, является ли отражённая функция удалённой
(шаблон класса)
Variable и Callable операции
(reflection TS)
проверяет, является ли отражённая переменная или функция constexpr
(шаблон класса)
Namespace и Callable операции
(reflection TS)
проверяет, является ли отражённое пространство имён или функция встроенными
(шаблон класса)
ParenthesizedExpression операции
(reflection TS)
получает тип метаобъекта, отражающий выражение без скобок отражённого выражения в скобках
(шаблон класса)
FunctionCallExpression операции
(reflection TS)
получает тип метаобъекта, отражающий функцию в отраженном function-call-expression
(шаблон класса)
FunctionalTypeConversion операции
(reflection TS)
получает тип метаобъекта, отражающий конструктор в отраженном functional-type-conv-expression
(шаблон класса)
Variable и Function операции
(reflection TS)
получает адрес отраженной переменной или функции, или значение указателя на член для отраженного нестатического члена
(шаблон класса)
MemberFunction операции
проверяет, объявлена ли отражённая функция-член с квалификаторами const , volatile , & или && соответственно
(шаблон класса)
(reflection TS)
проверяет, переопределяет ли отражённая функция-член функцию-член базового класса
(шаблон класса)
Record и MemberFunction операции
(reflection TS)
проверяет, помечен ли отраженный класс или функция-член как final
(шаблон класса)
Variable и MemberFunction операции
(reflection TS)
проверяет, имеет ли отраженная переменная статическую продолжительность хранения, или является ли отраженная функция-член статической
(шаблон класса)
SpecialMemberFunction операции
(reflection TS)
проверяет, является ли отраженная специальная функция-член неявно объявленной
(шаблон класса)
(reflection TS)
проверяет, является ли отраженная специальная функция-член заданной по умолчанию в своей первой декларации
(шаблон класса)
Constructor и ConversionOperator операции
(reflection TS)
проверяет, объявлен ли отражённый конструктор или функция преобразования с explicit
(шаблон класса)
MemberFunction и Destructor операции
(reflection TS)
проверяет, является ли отражённая функция-член виртуальной
(шаблон класса)
(reflection TS)
проверяет, является ли отражённая функция-член чисто виртуальной
(шаблон класса)
Lambda операции
(reflection TS)
получает тип последовательности метаобъектов, элементы которой отражают захваты отраженного типа замыкания
(шаблон класса)
проверяет, является ли capture-default лямбда-выражения отраженного типа замыкания = или & соответственно
(шаблон класса)
(reflection TS)
проверяет, объявлен ли operator() отражённого типа замыкания с квалификатором const
(шаблон класса)
LambdaCapture операции
(reflection TS)
проверяет, является ли захват отражённой лямбды явным
(шаблон класса)
(reflection TS)
проверяет, является ли отражённый захват лямбды init-захватом
(шаблон класса)

Синопсис

namespace std::экспериментальный::reflect {
inline namespace v1 {
// 21.12.3 Концепции для метаобъектных типов
template <class T>
concept Object = /* см. описание */;
template <class T>
concept ObjectSequence = /* см. описание */; // уточняет Object
template <class T>
concept TemplateParameterScope = /* см. описание */; // уточняет Scope
template <class T>
concept Named = /* см. описание */;          // уточняет Object
template <class T>
concept Alias = /* см. описание */;          // уточняет Named и ScopeMember
template <class T>
concept RecordMember = /* см. описание */;   // уточняет ScopeMember
template <class T>
concept Enumerator = /* см. описание */;     // уточняет Constant
template <class T>
concept Variable = /* см. описание */;       // уточняет Typed и ScopeMember
template <class T>
concept ScopeMember = /* см. описание */;    // уточняет Named
template <class T>
concept Typed = /* см. описание */;          // уточняет Object
template <class T>
concept Namespace = /* см. описание */;      // уточняет Named и Scope
template <class T>
concept GlobalScope = /* см. описание */;    // уточняет Namespace
template <class T>
concept Class = /* см. описание */;          // уточняет Record
template <class T>
concept Enum = /* см. описание */;           // уточняет Type, Scope и ScopeMember
template <class T>
concept Record = /* см. описание */;         // уточняет Type, Scope и ScopeMember
template <class T>
concept Scope = /* см. описание */;          // уточняет Object
template <class T>
concept Type = /* см. описание */;           // уточняет Named
template <class T>
concept Constant = /* см. описание */;       // уточняет Typed и ScopeMember
template <class T>
concept Base = /* см. описание */;           // уточняет Object
template <class T>
concept FunctionParameter = /* см. описание */; // уточняет Typed и ScopeMember
template <class T>
concept Callable = /* см. описание */;       // уточняет Scope и ScopeMember
template <class T>
concept Expression = /* см. описание */;     // уточняет Object
template <class T>
concept ParenthesizedExpression = /* см. описание */; // уточняет Expression
template <class T>
concept FunctionCallExpression = /* см. описание */; // уточняет Expression
template <class T>
concept FunctionalTypeConversion = /* см. описание */; // уточняет Expression
template <class T>
concept Function = /* см. описание */;       // уточняет Typed и Callable
template <class T>
concept MemberFunction = /* см. описание */; // уточняет RecordMember и Function
template <class T>
concept SpecialMemberFunction = /* см. описание */; // уточняет RecordMember
template <class T>
concept Constructor = /* см. описание */;    // уточняет Callable и RecordMember
template <class T>
concept Destructor = /* см. описание */;     // уточняет Callable и SpecialMemberFunction
template <class T>
concept Operator = /* см. описание */;       // уточняет Function
template <class T>
concept ConversionOperator = /* см. описание */; // уточняет MemberFunction и Operator
template <class T>
concept Lambda = /* см. описание */;         // уточняет Type и Scope
template <class T>
concept LambdaCapture = /* см. описание */;  // уточняет Variable
// 21.12.4 Метаобъектные операции
// Операции с несколькими концептами
template <Object T> struct is_public;
template <Object T> struct is_protected;
template <Object T> struct is_private;
template <Object T> struct is_constexpr;
template <Object T> struct is_static;
template <Object T> struct is_final;
template <Object T> struct is_explicit;
template <Object T> struct is_inline;
template <Object T> struct is_virtual;
template <Object T> struct is_pure_virtual;
template <Object T> struct get_pointer;
template <class T>
requires RecordMember<T> || Base<T>
  constexpr auto is_public_v = is_public<T>::значение;
template <class T>
requires RecordMember<T> || Base<T>
  constexpr auto is_protected_v = is_protected<T>::значение;
template <class T>
requires RecordMember<T> || Base<T>
  constexpr auto is_private_v = is_private<T>::значение;
template <class T>
requires Variable<T> || Callable<T>
  constexpr auto is_constexpr_v = is_constexpr<T>::значение;
template <class T>
requires Variable<T> || MemberFunction<T>
  constexpr auto is_static_v = is_static<T>::значение;
template <class T>
requires Class<T> || MemberFunction<T>
  constexpr auto is_final_v = is_final<T>::значение;
template <class T>
requires Constructor<T> || ConversionOperator<T>
  constexpr auto is_explicit_v = is_explicit<T>::значение;
template <class T>
requires Namespace<T> || Callable<T>
  constexpr auto is_inline_v = is_inline<T>::значение;
template <class T>
requires Base<T> || MemberFunction<T> || Destructor<T>
  constexpr auto is_virtual_v = is_virtual<T>::значение;
template <class T>
requires MemberFunction<T> || Destructor<T>
  constexpr auto is_pure_virtual_v = is_pure_virtual<T>::значение;
template <class T>
requires Variable<T> || Function<T>
  constexpr auto get_pointer_v = get_pointer<T>::значение;
// 21.12.4.1 Операции с объектами
template <Object T1, Object T2> struct reflects_same;
template <Object T> struct get_source_line;
template <Object T> struct get_source_column;
template <Object T> struct get_source_file_name;
template <Object T1, Object T2>
  constexpr auto reflects_same_v = reflects_same<T1, T2>::значение;
template <class T>
  constexpr auto get_source_line_v = get_source_line<T>::значение;
template <class T>
  constexpr auto get_source_column_v = get_source_column<T>::значение;
template <class T>
  constexpr auto get_source_file_name_v = get_source_file_name<T>::значение;
// 21.12.4.2 Операции ObjectSequence
template <ObjectSequence T> struct get_size;
template <size_t I, ObjectSequence T> struct get_element;
template <template <class...> class Tpl, ObjectSequence T>
  struct unpack_sequence;
template <ObjectSequence T>
  constexpr auto get_size_v = get_size<T>::значение;
template <size_t I, ObjectSequence T>
  using get_element_t = typename get_element<I, T>::type;
template <template <class...> class Tpl, ObjectSequence T>
  using unpack_sequence_t = typename unpack_sequence<Tpl, T>::type;
// 21.12.4.3 Именованные операции
template <Named T> struct is_unnamed;
template <Named T> struct get_name;
template <Named T> struct get_display_name;
template <Named T>
  constexpr auto is_unnamed_v = is_unnamed<T>::значение;
template <Named T>
  constexpr auto get_name_v = get_name<T>::значение;
template <Named T>
  constexpr auto get_display_name_v = get_display_name<T>::значение;
// 21.12.4.4 Операции псевдонимов
template <Alias T> struct get_aliased;
template <Alias T>
  using get_aliased_t = typename get_aliased<T>::type;
// 21.12.4.5 Операции с типами
template <Typed T> struct get_type;
template <Type T> struct get_reflected_type;
template <Type T> struct is_enum;
template <Class T> struct uses_class_key;
template <Class T> struct uses_struct_key;
template <Type T> struct is_union;
template <Typed T>
  using get_type_t = typename get_type<T>::type;
template <Type T>
  using get_reflected_type_t = typename get_reflected_type<T>::type;
template <Type T>
  constexpr auto is_enum_v = is_enum<T>::значение;
template <Class T>
  constexpr auto uses_class_key_v = uses_class_key<T>::значение;
template <Class T>
  constexpr auto uses_struct_key_v = uses_struct_key<T>::значение;
template <Type T>
  constexpr auto is_union_v = is_union<T>::значение;
// 21.12.4.6 Операции-члены
template <ScopeMember T> struct get_scope;
template <RecordMember T> struct is_public<T>;
template <RecordMember T> struct is_protected<T>;
template <RecordMember T> struct is_private<T>;
template <ScopeMember T>
  using get_scope_t = typename get_scope<T>::type;
// 21.12.4.7 Операции с записями
template <Record T> struct get_public_data_members;
template <Record T> struct get_accessible_data_members;
template <Record T> struct get_data_members;
template <Record T> struct get_public_member_functions;
template <Record T> struct get_accessible_member_functions;
template <Record T> struct get_member_functions;
template <Record T> struct get_public_member_types;
template <Record T> struct get_accessible_member_types;
template <Record T> struct get_member_types;
template <Record T> struct get_constructors;
template <Record T> struct get_destructor;
template <Record T> struct get_operators;
template <Class T> struct get_public_base_classes;
template <Class T> struct get_accessible_base_classes;
template <Class T> struct get_base_classes;
template <Class T> struct is_final<T>;
template <Record T>
  using get_public_data_members_t = typename get_public_data_members<T>::type;
template <Record T>
  using get_accessible_data_members_t = typename get_accessible_data_members<T>::type;
template <Record T>
  using get_data_members_t = typename get_data_members<T>::type;
template <Record T>
  using get_public_member_functions_t = typename get_public_member_functions<T>::type;
template <Record T>
  using get_accessible_member_functions_t = typename get_accessible_member_functions<T>::type;
template <Record T>
  using get_member_functions_t = typename get_member_functions<T>::type;
template <Record T>
  using get_public_member_types_t = typename get_public_member_types<T>::type;
template <Record T>
  using get_accessible_member_types_t = typename get_accessible_member_types<T>::type;
template <Record T>
  using get_member_types_t = typename get_member_types<T>::type;
template <Record T>
  using get_constructors_t = typename get_constructors<T>::type;
template <Record T>
  using get_destructor_t = typename get_destructor<T>::type;
template <Record T>
  using get_operators_t = typename get_operators<T>::type;
template <Class T>
  using get_public_base_classes_t = typename get_public_base_classes<T>::type;
template <Class T>
  using get_accessible_base_classes_t = typename get_accessible_base_classes<T>::type;
template <Class T>
  using get_base_classes_t = typename get_base_classes<T>::type;
// 21.12.4.8 Операции с перечислениями
template <Enum T> struct is_scoped_enum;
template <Enum T> struct get_enumerators;
template <Enum T> struct get_underlying_type;
template <Enum T>
  constexpr auto is_scoped_enum_v = is_scoped_enum<T>::значение;
template <Enum T>
  using get_enumerators_t = typename get_enumerators<T>::type;
template <Enum T>
  using get_underlying_type_t = typename get_underlying_type<T>::type;
// 21.12.4.9 Операции со значениями
template <Constant T> struct get_constant;
template <Variable T> struct is_constexpr<T>;
template <Variable T> struct is_static<T>;
template <Variable T> struct is_thread_local;
template <Variable T> struct get_pointer<T>;
template <Constant T>
  constexpr auto get_constant_v = get_constant<T>::значение;
template <Variable T>
  constexpr auto is_thread_local_v = is_thread_local<T>::значение;
// 21.12.4.10 Базовые операции
template <Base T> struct get_class;
template <Base T> struct is_virtual<T>;
template <Base T> struct is_public<T>;
template <Base T> struct is_protected<T>;
template <Base T> struct is_private<T>;
template <Base T>
  using get_class_t = typename get_class<T>::type;
// 21.12.4.11 Операции пространства имён
template <Namespace T> struct is_inline<T>;
// 21.12.4.12 Операции FunctionParameter
template <FunctionParameter T> struct has_default_argument;
template <FunctionParameter T>
  constexpr auto has_default_argument_v = has_default_argument<T>::значение;
// 21.12.4.13 Вызываемые операции
template <Callable T> struct get_parameters;
template <Callable T> struct is_vararg;
template <Callable T> struct is_constexpr<T>;
template <Callable T> struct is_noexcept;
template <Callable T> struct is_inline<T>;
template <Callable T> struct is_deleted;
template <Callable T>
  using get_parameters_t = typename get_parameters<T>::type;
template <Callable T>
  constexpr auto is_vararg_v = is_vararg<T>::значение;
template <Callable T>
  constexpr auto is_deleted_v = is_deleted<T>::значение;
// 21.12.4.14 Операции ParenthesizedExpression
template <ParenthesizedExpression T> struct get_subexpression;
template <ParenthesizedExpression T>
  using get_subexpression_t = typename get_subexpression<T>::type;
// 21.12.4.15 Операции FunctionCallExpression
template <FunctionCallExpression T> struct get_callable;
template <FunctionCallExpression T>
  using get_callable_t = typename get_callable<T>::type;
// 21.12.4.16 Операции FunctionalTypeConversion
template <FunctionalTypeConversion T> struct get_constructor;
template <FunctionalTypeConversion T>
  using get_constructor_t = typename get_constructor<T>::type;
// 21.12.4.17 Операции с функциями
template <Function T> struct get_pointer<T>;
// 21.12.4.18 Операции с функциями-членами
template <MemberFunction T> struct is_static<T>;
template <MemberFunction T> struct is_const;
template <MemberFunction T> struct is_volatile;
template <MemberFunction T> struct has_lvalueref_qualifier;
template <MemberFunction T> struct has_rvalueref_qualifier;
template <MemberFunction T> struct is_virtual<T>;
template <MemberFunction T> struct is_pure_virtual<T>;
template <MemberFunction T> struct is_override;
template <MemberFunction T> struct is_final<T>;
template <MemberFunction T>
  constexpr auto is_const_v = is_const<T>::значение;
template <MemberFunction T>
  constexpr auto is_volatile_v = is_volatile<T>::значение;
template <MemberFunction T>
  constexpr auto has_lvalueref_qualifier_v = has_lvalueref_qualifier<T>::значение;
template <MemberFunction T>
  constexpr auto has_rvalueref_qualifier_v = has_rvalueref_qualifier<T>::значение;
template <MemberFunction T>
  constexpr auto is_override_v = is_override<T>::значение;
// 21.12.4.19 Операции со специальными функциями-членами
template <SpecialMemberFunction T> struct is_implicitly_declared;
template <SpecialMemberFunction T> struct is_defaulted;
template <SpecialMemberFunction T>
  constexpr auto is_implicitly_declared_v = is_implicitly_declared<T>::значение;
template <SpecialMemberFunction T>
  constexpr auto is_defaulted_v = is_defaulted<T>::значение;
// 21.12.4.20 Операции конструктора
template <Constructor T> struct is_explicit<T>;
// 21.12.4.21 Операции деструктора
template <Destructor T> struct is_virtual<T>;
template <Destructor T> struct is_pure_virtual<T>;
// 21.12.4.22 Операции ConversionOperator
template <ConversionOperator T> struct is_explicit<T>;
// 21.12.4.23 Лямбда-операции
template <Lambda T> struct get_captures;
template <Lambda T> struct uses_default_copy_capture;
template <Lambda T> struct uses_default_reference_capture;
template <Lambda T> struct is_call_operator_const;
template <Lambda T>
  using get_captures_t = typename get_captures<T>::type;
template <Lambda T>
  constexpr auto uses_default_copy_capture_v = uses_default_copy_capture<T>::значение;
template <Lambda T>
  constexpr auto uses_default_reference_capture_v = uses_default_reference_capture<T>::значение;
template <Lambda T>
  constexpr auto is_call_operator_const_v = is_call_operator_const<T>::значение;
// 21.12.4.24 Операции захвата лямбда-выражений
template <LambdaCapture T> struct is_explicitly_captured;
template <LambdaCapture T> struct is_init_capture;
template <LambdaCapture T>
  constexpr auto is_explicitly_captured_v = is_explicitly_captured<T>::значение;
template <LambdaCapture T>
  constexpr auto is_init_capture_v = is_init_capture<T>::значение;
} // inline namespace v1
} // namespace std::experimental::reflect