名前空間
変種
操作

実験的ライブラリヘッダ <experimental/reflect>

From cppreference.com
< cpp‎ | header‎ | experimental
 
 
標準ライブラリヘッダー
 
実験的なライブラリヘッダー
実行 P2300
<experimental/execution>
ファイルシステム TS
<experimental/filesystem>
並列処理 TS (v1, v2)
experimental/algorithm
experimental/execution_policy
experimental/exception_list
experimental/numeric
<experimental/simd>
experimental/task_block
ライブラリの基礎 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

並行処理 TS
experimental/atomic
experimental/barrier
experimental/future
experimental/latch
Ranges TS
コルーチンTS
experimental/coroutine
ネットワーキングTS
experimental/buffer
experimental/executor
experimental/internet
experimental/io_context
<experimental/net>
experimental/netfwd
experimental/socket
experimental/timer
リフレクションTS
<experimental/reflect>
 

このヘッダはReflection TSの一部です。

名前空間std::experimental::reflectで定義されています。
インライン名前空間std::experimental::reflect::v1で定義されています。

目次

コンセプト

(reflection TS)
型がメタオブジェクト型であることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型がメタオブジェクトシーケンス型であることを指定します。
(コンセプト)
メタオブジェクト型がテンプレートパラメータスコープを反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、名前(空の場合もある)に関連付けられたエンティティまたはエイリアスを反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、型エイリアス、名前空間エイリアス、またはusing宣言によって導入されたエイリアスを反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、クラスのメンバ宣言を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、列挙子を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、変数またはデータメンバを反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、RecordMemberEnumerator、またはVariableを満たすか、グローバル名前空間以外の名前空間を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、型を持つエンティティを反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、名前空間を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、グローバル名前空間を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、非unionクラス型を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、列挙型を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、クラス型を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、名前空間、クラス、列挙、関数、クロージャ型、テンプレートパラメータスコープを反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、型を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、列挙子またはconstexpr変数を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、get_base_classesから取得した直接基底クラスを反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、関数パラメータを反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、関数(コンストラクタおよびデストラクタを含む)を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、式を反映していることを指定します。
(コンセプト)
メタオブジェクト型が、括弧付き式を反映していることを指定します。
(コンセプト)
メタオブジェクト型が、関数呼び出し式を反映していることを指定します。
(コンセプト)
メタオブジェクト型が、関数型変換式を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、関数(コンストラクタおよびデストラクタを除く)を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、メンバ関数(コンストラクタおよびデストラクタを除く)を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、特殊メンバ関数を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、コンストラクタを反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、デストラクタを反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、演算子関数または変換関数を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、変換関数を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、非ジェネリックラムダのクロージャ型を反映していることを指定します。
(コンセプト)
(reflection TS)
メタオブジェクト型が、ラムダキャプチャを反映していることを指定します。
(コンセプト)

クラス

Object 操作
(reflection TS)
2つのメタオブジェクト型が同じエンティティまたはエイリアスを反映しているかどうかをチェックします。
(クラステンプレート)
(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)
メタオブジェクト型がunion型を反映しているかどうかをチェックします。
(クラステンプレート)
メタオブジェクト型が、それぞれclassまたはstructを使用して宣言された非unionクラス型を反映しているかどうかをチェックします。
(クラステンプレート)
ScopeMember 操作
(reflection TS)
反映されたエンティティまたはエイリアスのスコープを反映するメタオブジェクト型を取得します。
(クラステンプレート)
Base 操作
(reflection TS)
指定された基底クラス関係における基底クラスを反映するメタオブジェクト型を取得します。
(クラステンプレート)
RecordMember および Base 操作
(reflection TS)
反映されたメンバまたは基底クラスがpublicであるかどうかをチェックします。
(クラステンプレート)
(reflection TS)
反映されたメンバまたは基底クラスがprotectedであるかどうかをチェックします。
(クラステンプレート)
(reflection TS)
反映されたメンバまたは基底クラスがprivateであるかどうかをチェックします。
(クラステンプレート)
Record 操作
反映されたクラスのpublic、accessible、またはすべてのデータメンバを反映する要素を持つメタオブジェクトシーケンス型を取得します。
(クラステンプレート)
反映されたクラスのpublic、accessible、またはすべてのメンバ関数を反映する要素を持つメタオブジェクトシーケンス型を取得します。
(クラステンプレート)
(reflection TS)
反映されたクラスのすべてのコンストラクタを反映する要素を持つメタオブジェクトシーケンス型を取得します。
(クラステンプレート)
(reflection TS)
反映されたクラスで宣言されたすべての演算子関数と変換関数を反映する要素を持つメタオブジェクトシーケンス型を取得します。
(クラステンプレート)
(reflection TS)
反映されたクラスのデストラクタを反映するメタオブジェクト型を取得します。
(クラステンプレート)
反映されたクラスのpublic、accessible、またはすべてのネストされた型またはメンバtypedefを反映する要素を持つメタオブジェクトシーケンス型を取得します。
(クラステンプレート)
反映されたクラスのpublic、accessible、またはすべての基底クラスを反映する要素を持つメタオブジェクトシーケンス型を取得します。
(クラステンプレート)
Enum 操作
(reflection TS)
反映された列挙がスコープ付きかどうかをチェックします。
(クラステンプレート)
(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)
反映された関数呼び出し式の関数を反映するメタオブジェクト型を取得します。
(クラステンプレート)
FunctionalTypeConversion 操作
(reflection TS)
反映された関数型変換式のコンストラクタを反映するメタオブジェクト型を取得します。
(クラステンプレート)
Variable および Function 操作
(reflection TS)
反映された変数または関数のアドレス、または反映された非静的メンバへのポインタ・トゥ・メンバ値を取得します。
(クラステンプレート)
MemberFunction 操作
反映されたメンバ関数がそれぞれconstvolatile&、または&&修飾子で宣言されているかどうかをチェックします。
(クラステンプレート)
(reflection TS)
反映されたメンバ関数が基底クラスのメンバ関数をオーバーライドしているかどうかをチェックします。
(クラステンプレート)
Record および MemberFunction 操作
(reflection TS)
反映されたクラスまたはメンバ関数がfinalでマークされているかどうかをチェックします。
(クラステンプレート)
Variable および MemberFunction 操作
(reflection TS)
反映された変数が静的記憶域期間であるか、または反映されたメンバ関数が静的かどうかをチェックします。
(クラステンプレート)
SpecialMemberFunction 操作
反映された特殊メンバ関数が暗黙宣言されているかどうかをチェックします。
(クラステンプレート)
(reflection TS)
反映された特殊メンバ関数が最初の宣言でデフォルト化されているかどうかをチェックします。
(クラステンプレート)
Constructor および ConversionOperator 操作
(reflection TS)
反映されたコンストラクタまたは変換関数がexplicitで宣言されているかどうかをチェックします。
(クラステンプレート)
MemberFunction および Destructor 操作
(reflection TS)
反映されたメンバ関数が仮想関数かどうかをチェックします。
(クラステンプレート)
(reflection TS)
反映されたメンバ関数が純粋仮想関数かどうかをチェックします。
(クラステンプレート)
Lambda 操作
(reflection TS)
反映されたクロージャ型のキャプチャを反映する要素を持つメタオブジェクトシーケンス型を取得します。
(クラステンプレート)
反映されたクロージャ型のラムダ式のキャプチャデフォルトがそれぞれ=または&であるかどうかをチェックします。
(クラステンプレート)
反映されたクロージャ型のoperator()constで宣言されているかどうかをチェックします。
(クラステンプレート)
LambdaCapture 操作
(reflection TS)
反映されたラムダキャプチャが明示的にキャプチャされているかどうかをチェックします。
(クラステンプレート)
(reflection TS)
反映されたラムダキャプチャがinit-captureであるかどうかをチェックします。
(クラステンプレート)

[編集] Synopsis

namespace std::experimental::reflect {
inline namespace v1 {
 
// 21.12.3 Concepts for meta-object types
template <class T>
concept Object = /* see description */;
template <class T>
concept ObjectSequence = /* see description */; // refines Object
template <class T>
concept TemplateParameterScope = /* see description */; // refines Scope
template <class T>
concept Named = /* see description */;          // refines Object
template <class T>
concept Alias = /* see description */;          // refines Named and ScopeMember
template <class T>
concept RecordMember = /* see description */;   // refines ScopeMember
template <class T>
concept Enumerator = /* see description */;     // refines Constant
template <class T>
concept Variable = /* see description */;       // refines Typed and ScopeMember
template <class T>
concept ScopeMember = /* see description */;    // refines Named
template <class T>
concept Typed = /* see description */;          // refines Object
template <class T>
concept Namespace = /* see description */;      // refines Named and Scope
template <class T>
concept GlobalScope = /* see description */;    // refines Namespace
template <class T>
concept Class = /* see description */;          // refines Record
template <class T>
concept Enum = /* see description */;           // refines Type, Scope, and ScopeMember
template <class T>
concept Record = /* see description */;         // refines Type, Scope, and ScopeMember
template <class T>
concept Scope = /* see description */;          // refines Object
template <class T>
concept Type = /* see description */;           // refines Named
template <class T>
concept Constant = /* see description */;       // refines Typed and ScopeMember
template <class T>
concept Base = /* see description */;           // refines Object
template <class T>
concept FunctionParameter = /* see description */; // refines Typed and ScopeMember
template <class T>
concept Callable = /* see description */;       // refines Scope and ScopeMember
template <class T>
concept Expression = /* see description */;     // refines Object
template <class T>
concept ParenthesizedExpression = /* see description */; // refines Expression
template <class T>
concept FunctionCallExpression = /* see description */; // refines Expression
template <class T>
concept FunctionalTypeConversion = /* see description */; // refines Expression
template <class T>
concept Function = /* see description */;       // refines Typed and Callable
template <class T>
concept MemberFunction = /* see description */; // refines RecordMember and Function
template <class T>
concept SpecialMemberFunction = /* see description */; // refines RecordMember
template <class T>
concept Constructor = /* see description */;    // refines Callable and RecordMember
template <class T>
concept Destructor = /* see description */;     // refines Callable and SpecialMemberFunction
template <class T>
concept Operator = /* see description */;       // refines Function
template <class T>
concept ConversionOperator = /* see description */; // refines MemberFunction and Operator
template <class T>
concept Lambda = /* see description */;         // refines Type and Scope
template <class T>
concept LambdaCapture = /* see description */;  // refines Variable
 
// 21.12.4 Meta-object operations
// Multi-concept operations
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>::value;
template <class T>
requires RecordMember<T> || Base<T>
  constexpr auto is_protected_v = is_protected<T>::value;
template <class T>
requires RecordMember<T> || Base<T>
  constexpr auto is_private_v = is_private<T>::value;
template <class T>
requires Variable<T> || Callable<T>
  constexpr auto is_constexpr_v = is_constexpr<T>::value;
template <class T>
requires Variable<T> || MemberFunction<T>
  constexpr auto is_static_v = is_static<T>::value;
template <class T>
requires Class<T> || MemberFunction<T>
  constexpr auto is_final_v = is_final<T>::value;
template <class T>
requires Constructor<T> || ConversionOperator<T>
  constexpr auto is_explicit_v = is_explicit<T>::value;
template <class T>
requires Namespace<T> || Callable<T>
  constexpr auto is_inline_v = is_inline<T>::value;
template <class T>
requires Base<T> || MemberFunction<T> || Destructor<T>
  constexpr auto is_virtual_v = is_virtual<T>::value;
template <class T>
requires MemberFunction<T> || Destructor<T>
  constexpr auto is_pure_virtual_v = is_pure_virtual<T>::value;
template <class T>
requires Variable<T> || Function<T>
  constexpr auto get_pointer_v = get_pointer<T>::value;
 
// 21.12.4.1 Object operations
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>::value;
template <class T>
  constexpr auto get_source_line_v = get_source_line<T>::value;
template <class T>
  constexpr auto get_source_column_v = get_source_column<T>::value;
template <class T>
  constexpr auto get_source_file_name_v = get_source_file_name<T>::value;
 
// 21.12.4.2 ObjectSequence operations
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>::value;
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 Named operations
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>::value;
template <Named T>
  constexpr auto get_name_v = get_name<T>::value;
template <Named T>
  constexpr auto get_display_name_v = get_display_name<T>::value;
 
// 21.12.4.4 Alias operations
template <Alias T> struct get_aliased;
 
template <Alias T>
  using get_aliased_t = typename get_aliased<T>::type;
 
// 21.12.4.5 Type operations
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>::value;
template <Class T>
  constexpr auto uses_class_key_v = uses_class_key<T>::value;
template <Class T>
  constexpr auto uses_struct_key_v = uses_struct_key<T>::value;
template <Type T>
  constexpr auto is_union_v = is_union<T>::value;
 
// 21.12.4.6 Member operations
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 Record operations
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 Enum operations
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>::value;
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 Value operations
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>::value;
template <Variable T>
  constexpr auto is_thread_local_v = is_thread_local<T>::value;
 
// 21.12.4.10 Base operations
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 Namespace operations
template <Namespace T> struct is_inline<T>;
 
// 21.12.4.12 FunctionParameter operations
template <FunctionParameter T> struct has_default_argument;
 
template <FunctionParameter T>
  constexpr auto has_default_argument_v = has_default_argument<T>::value;
 
// 21.12.4.13 Callable operations
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>::value;
template <Callable T>
  constexpr auto is_deleted_v = is_deleted<T>::value;
 
// 21.12.4.14 ParenthesizedExpression operations
template <ParenthesizedExpression T> struct get_subexpression;
 
template <ParenthesizedExpression T>
  using get_subexpression_t = typename get_subexpression<T>::type;
 
// 21.12.4.15 FunctionCallExpression operations
template <FunctionCallExpression T> struct get_callable;
 
template <FunctionCallExpression T>
  using get_callable_t = typename get_callable<T>::type;
 
// 21.12.4.16 FunctionalTypeConversion operations
template <FunctionalTypeConversion T> struct get_constructor;
 
template <FunctionalTypeConversion T>
  using get_constructor_t = typename get_constructor<T>::type;
 
// 21.12.4.17 Function operations
template <Function T> struct get_pointer<T>;
 
// 21.12.4.18 MemberFunction operations
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>::value;
template <MemberFunction T>
  constexpr auto is_volatile_v = is_volatile<T>::value;
template <MemberFunction T>
  constexpr auto has_lvalueref_qualifier_v = has_lvalueref_qualifier<T>::value;
template <MemberFunction T>
  constexpr auto has_rvalueref_qualifier_v = has_rvalueref_qualifier<T>::value;
template <MemberFunction T>
  constexpr auto is_override_v = is_override<T>::value;
 
// 21.12.4.19 SpecialMemberFunction operations
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>::value;
template <SpecialMemberFunction T>
  constexpr auto is_defaulted_v = is_defaulted<T>::value;
 
// 21.12.4.20 Constructor operations
template <Constructor T> struct is_explicit<T>;
 
// 21.12.4.21 Destructor operations
template <Destructor T> struct is_virtual<T>;
template <Destructor T> struct is_pure_virtual<T>;
 
// 21.12.4.22 ConversionOperator operations
template <ConversionOperator T> struct is_explicit<T>;
 
// 21.12.4.23 Lambda operations
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>::value;
template <Lambda T>
  constexpr auto uses_default_reference_capture_v = uses_default_reference_capture<T>::value;
template <Lambda T>
  constexpr auto is_call_operator_const_v = is_call_operator_const<T>::value;
 
// 21.12.4.24 LambdaCapture operations
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>::value;
template <LambdaCapture T>
  constexpr auto is_init_capture_v = is_init_capture<T>::value;
 
} // inline namespace v1
} // namespace std::experimental::reflect
English 日本語 中文(简体) 中文(繁體)