Experimental library header <experimental/reflect>
From cppreference.net
<
cpp
|
header
|
experimental
Этот заголовок является частью 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)
|
указывает, что тип метаобъекта отражает выражение в скобках
(концепт) |
|
(reflection TS)
|
указывает, что метаобъектный тип отражает
function-call-expression
(концепт) |
|
(reflection TS)
|
указывает, что тип метаобъекта отражает
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) |
Классы |
|
|
|
|
(reflection TS)
|
проверяет, отражают ли два метаобъектных типа одну и ту же сущность или псевдоним
(шаблон класса) |
|
(reflection TS)
|
получает предполагаемый номер строки объявления отраженной сущности или псевдонима
(шаблон класса) |
|
(reflection TS)
|
получает определенный реализацией номер колонки объявления отраженной сущности или псевдонима
(шаблон класса) |
|
(reflection TS)
|
получает предполагаемое имя файла объявления отраженной сущности или псевдонима
(шаблон класса) |
|
|
|
(reflection TS)
|
получает размер последовательности метаобъектов
(шаблон класса) |
|
(reflection TS)
|
получает тип метаобъекта с указанным индексом в последовательности
(шаблон класса) |
|
(reflection TS)
|
применяет шаблон к последовательности метаобъектов
(шаблон класса) |
|
|
|
(reflection TS)
|
проверяет, является ли отражённая сущность или псевдоним именованными
(шаблон класса) |
|
(reflection TS)
|
получает неквалифицированное имя отражённой сущности или псевдонима
(шаблон класса) |
|
(reflection TS)
|
получает определенное реализацией отображаемое имя отражаемой сущности или псевдонима
(шаблон класса) |
|
|
|
(reflection TS)
|
получает тип метаобъекта, отражающий связанную сущность отраженного алиаса
(шаблон класса) |
|
|
|
(reflection TS)
|
получает тип метаобъекта, отражающий тип отраженной сущности или псевдонима
(шаблон класса) |
|
(reflection TS)
|
получает тип отраженной сущности или псевдонима
(шаблон класса) |
|
(reflection TS)
|
проверяет, отражает ли метаобъектный тип тип перечисления
(шаблон класса) |
|
(reflection TS)
|
проверяет, отражает ли метаобъектный тип тип объединения
(шаблон класса) |
|
(reflection TS)
|
проверяет, отражает ли тип метаобъекта тип класса, не являющегося объединением, объявление которого использует
class
или
struct
соответственно
(шаблон класса) |
|
|
|
(reflection TS)
|
получает тип метаобъекта, отражающий область видимости отраженной сущности или псевдонима
(шаблон класса) |
|
|
|
(reflection TS)
|
получает тип метаобъекта, отражающий базовый класс в заданном отношении базовых классов
(шаблон класса) |
|
|
|
(reflection TS)
|
проверяет, является ли отражённый член или базовый класс публичным
(шаблон класса) |
|
(reflection TS)
|
проверяет, является ли отражённый член или базовый класс защищённым
(шаблон класса) |
|
(reflection TS)
|
проверяет, является ли отражённый член или базовый класс приватным
(шаблон класса) |
|
|
|
получает тип последовательности метаобъектов, элементы которой отражают публичные, доступные или все члены данных отраженного класса
(шаблон класса) |
|
|
получает тип последовательности метаобъектов, элементы которой отражают публичные, доступные или все функции-члены отражаемого класса
(шаблон класса) |
|
|
(reflection TS)
|
получает тип последовательности метаобъектов, элементы которой отражают все конструкторы отражаемого класса
(шаблон класса) |
|
(reflection TS)
|
получает тип последовательности метаобъектов, элементы которой отражают все операторные функции и функции преобразования, объявленные в отражаемом классе
(шаблон класса) |
|
(reflection TS)
|
получает тип метаобъекта, отражающий деструктор отраженного класса
(шаблон класса) |
|
получает тип последовательности метаобъектов, элементы которой отражают публичные, доступные или все вложенные типы или typedef-члены отраженного класса
(шаблон класса) |
|
|
получает тип последовательности метаобъектов, элементы которой отражают публичные, доступные или все базовые классы отражаемого класса
(шаблон класса) |
|
|
|
|
(reflection TS)
|
проверяет, является ли отражённое перечисление scoped
(шаблон класса) |
|
(reflection TS)
|
получает тип последовательности метаобъектов, элементы которой отражают перечислители отраженного перечисления
(шаблон класса) |
|
(reflection TS)
|
получает тип метаобъекта, отражающий базовый тип отраженного перечисления
(шаблон класса) |
|
|
|
(reflection TS)
|
получает значение отраженной переменной, которое является константным выражением
(шаблон класса) |
|
(reflection TS)
|
проверяет, объявлена ли переменная с
thread_local
(шаблон класса) |
|
|
|
(reflection TS)
|
проверяет, имеет ли отражённый параметр аргумент по умолчанию
(шаблон класса) |
|
|
|
(reflection TS)
|
получает тип последовательности метаобъектов, элементы которой отражают параметры отраженной функции
(шаблон класса) |
|
(reflection TS)
|
проверяет, содержит ли список параметров отраженной функции параметр с многоточием
(шаблон класса) |
|
(reflection TS)
|
проверяет, является ли отражённая функция небросающей исключения
(шаблон класса) |
|
(reflection TS)
|
проверяет, является ли отражённая функция удалённой
(шаблон класса) |
|
|
|
(reflection TS)
|
проверяет, является ли отражённая переменная или функция constexpr
(шаблон класса) |
|
|
|
(reflection TS)
|
проверяет, является ли отражённое пространство имён или функция встроенными
(шаблон класса) |
|
|
|
(reflection TS)
|
получает тип метаобъекта, отражающий выражение без скобок отражённого выражения в скобках
(шаблон класса) |
|
|
|
(reflection TS)
|
получает тип метаобъекта, отражающий функцию в отраженном
function-call-expression
(шаблон класса) |
|
|
|
(reflection TS)
|
получает тип метаобъекта, отражающий конструктор в отраженном
functional-type-conv-expression
(шаблон класса) |
|
|
|
(reflection TS)
|
получает адрес отраженной переменной или функции, или значение указателя на член для отраженного нестатического члена
(шаблон класса) |
|
|
|
проверяет, объявлена ли отражённая функция-член с квалификаторами
const
,
volatile
,
&
или
&&
соответственно
(шаблон класса) |
|
|
(reflection TS)
|
проверяет, переопределяет ли отражённая функция-член функцию-член базового класса
(шаблон класса) |
|
|
|
(reflection TS)
|
проверяет, помечен ли отраженный класс или функция-член как
final
(шаблон класса) |
|
|
|
(reflection TS)
|
проверяет, имеет ли отраженная переменная статическую продолжительность хранения, или является ли отраженная функция-член статической
(шаблон класса) |
|
|
|
(reflection TS)
|
проверяет, является ли отраженная специальная функция-член неявно объявленной
(шаблон класса) |
|
(reflection TS)
|
проверяет, является ли отраженная специальная функция-член заданной по умолчанию в своей первой декларации
(шаблон класса) |
|
|
|
(reflection TS)
|
проверяет, объявлен ли отражённый конструктор или функция преобразования с
explicit
(шаблон класса) |
|
|
|
(reflection TS)
|
проверяет, является ли отражённая функция-член виртуальной
(шаблон класса) |
|
(reflection TS)
|
проверяет, является ли отражённая функция-член чисто виртуальной
(шаблон класса) |
|
|
|
(reflection TS)
|
получает тип последовательности метаобъектов, элементы которой отражают захваты отраженного типа замыкания
(шаблон класса) |
|
(reflection TS)
|
проверяет, является ли capture-default лямбда-выражения отраженного типа замыкания
=
или
&
соответственно
(шаблон класса) |
|
(reflection TS)
|
проверяет, объявлен ли
operator()
отражённого типа замыкания с квалификатором
const
(шаблон класса) |
|
|
|
(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