Experimental library header <experimental/reflect> - cppreference.com (original) (raw)
This header is part of the Reflection TS.
| Defined in namespace std::experimental::reflect |
|---|
| Defined in inline namespace std::experimental::reflect::v1 |
| Contents 1 Concepts 2 Classes 2.1 Object operations 2.2 ObjectSequence operations 2.3 Named operations 2.4 Alias operations 2.5 Type operations 2.6 ScopeMember operations 2.7 Base operations 2.8 RecordMember and Base operations 2.9 Record operations 2.10 Enum operations 2.11 Variable operations 2.12 FunctionParameter operations 2.13 Callable operations 2.14 Variable and Callable operations 2.15 Namespace and Callable operations 2.16 ParenthesizedExpression operations 2.17 FunctionCallExpression operations 2.18 FunctionalTypeConversion operations 2.19 Variable and Function operations 2.20 MemberFunction operations 2.21 Record and MemberFunction operations 2.22 Variable and MemberFunction operations 2.23 SpecialMemberFunction operations 2.24 Constructor and ConversionOperator operations 2.25 MemberFunction and Destructor operations 2.26 Lambda operations 2.27 LambdaCapture operations 3 Synopsis Concepts |
| Classes |
| Object operations |
| ObjectSequence operations |
| Named operations |
| Alias operations |
| Type operations |
| ScopeMember operations |
| Base operations |
| RecordMember and Base operations |
| Record operations |
| Enum operations |
| Variable operations |
| FunctionParameter operations |
| Callable operations |
| Variable and Callable operations |
| Namespace and Callable operations |
| ParenthesizedExpression operations |
| FunctionCallExpression operations |
| FunctionalTypeConversion operations |
| Variable and Function operations |
| MemberFunction operations |
| Record and MemberFunction operations |
| Variable and MemberFunction operations |
| SpecialMemberFunction operations |
| Constructor and ConversionOperator operations |
| MemberFunction and Destructor operations |
| Lambda operations |
| LambdaCapture operations |
[edit] Synopsis
namespace std::experimental::reflect { inline namespace v1 { // 21.12.3 Concepts for meta-object types template concept Object = /* see description /; template concept ObjectSequence = / see description /; // refines Object template concept TemplateParameterScope = / see description /; // refines Scope template concept Named = / see description /; // refines Object template concept Alias = / see description /; // refines Named and ScopeMember template concept RecordMember = / see description /; // refines ScopeMember template concept Enumerator = / see description /; // refines Constant template concept Variable = / see description /; // refines Typed and ScopeMember template concept ScopeMember = / see description /; // refines Named template concept Typed = / see description /; // refines Object template concept Namespace = / see description /; // refines Named and Scope template concept GlobalScope = / see description /; // refines Namespace template concept Class = / see description /; // refines Record template concept Enum = / see description /; // refines Type, Scope, and ScopeMember template concept Record = / see description /; // refines Type, Scope, and ScopeMember template concept Scope = / see description /; // refines Object template concept Type = / see description /; // refines Named template concept Constant = / see description /; // refines Typed and ScopeMember template concept Base = / see description /; // refines Object template concept FunctionParameter = / see description /; // refines Typed and ScopeMember template concept Callable = / see description /; // refines Scope and ScopeMember template concept Expression = / see description /; // refines Object template concept ParenthesizedExpression = / see description /; // refines Expression template concept FunctionCallExpression = / see description /; // refines Expression template concept FunctionalTypeConversion = / see description /; // refines Expression template concept Function = / see description /; // refines Typed and Callable template concept MemberFunction = / see description /; // refines RecordMember and Function template concept SpecialMemberFunction = / see description /; // refines RecordMember template concept Constructor = / see description /; // refines Callable and RecordMember template concept Destructor = / see description /; // refines Callable and SpecialMemberFunction template concept Operator = / see description /; // refines Function template concept ConversionOperator = / see description /; // refines MemberFunction and Operator template concept Lambda = / see description /; // refines Type and Scope template concept LambdaCapture = / see description */; // refines Variable // 21.12.4 Meta-object operations // Multi-concept operations template struct is_public; template struct is_protected; template struct is_private; template struct is_constexpr; template struct is_static; template struct is_final; template struct is_explicit; template struct is_inline; template struct is_virtual; template struct is_pure_virtual; template struct get_pointer; template requires RecordMember || Base constexpr auto is_public_v = is_public::value; template requires RecordMember || Base constexpr auto is_protected_v = is_protected::value; template requires RecordMember || Base constexpr auto is_private_v = is_private::value; template requires Variable || Callable constexpr auto is_constexpr_v = is_constexpr::value; template requires Variable || MemberFunction constexpr auto is_static_v = is_static::value; template requires Class || MemberFunction constexpr auto is_final_v = is_final::value; template requires Constructor || ConversionOperator constexpr auto is_explicit_v = is_explicit::value; template requires Namespace || Callable constexpr auto is_inline_v = is_inline::value; template requires Base || MemberFunction || Destructor constexpr auto is_virtual_v = is_virtual::value; template requires MemberFunction || Destructor constexpr auto is_pure_virtual_v = is_pure_virtual::value; template requires Variable || Function constexpr auto get_pointer_v = get_pointer::value; // 21.12.4.1 Object operations template <Object T1, Object T2> struct reflects_same; template struct get_source_line; template struct get_source_column; template struct get_source_file_name; template <Object T1, Object T2> constexpr auto reflects_same_v = reflects_same<T1, T2>::value; template constexpr auto get_source_line_v = get_source_line::value; template constexpr auto get_source_column_v = get_source_column::value; template constexpr auto get_source_file_name_v = get_source_file_name::value; // 21.12.4.2 ObjectSequence operations template struct get_size; template <size_t I, ObjectSequence T> struct get_element; template <template <class...> class Tpl, ObjectSequence T> struct unpack_sequence; template constexpr auto get_size_v = get_size::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 struct is_unnamed; template struct get_name; template struct get_display_name; template constexpr auto is_unnamed_v = is_unnamed::value; template constexpr auto get_name_v = get_name::value; template constexpr auto get_display_name_v = get_display_name::value; // 21.12.4.4 Alias operations template struct get_aliased; template using get_aliased_t = typename get_aliased::type; // 21.12.4.5 Type operations template struct get_type; template struct get_reflected_type; template struct is_enum; template struct uses_class_key; template struct uses_struct_key; template struct is_union; template using get_type_t = typename get_type::type; template using get_reflected_type_t = typename get_reflected_type::type; template constexpr auto is_enum_v = is_enum::value; template constexpr auto uses_class_key_v = uses_class_key::value; template constexpr auto uses_struct_key_v = uses_struct_key::value; template constexpr auto is_union_v = is_union::value; // 21.12.4.6 Member operations template struct get_scope; template struct is_public; template struct is_protected; template struct is_private; template using get_scope_t = typename get_scope::type; // 21.12.4.7 Record operations template struct get_public_data_members; template struct get_accessible_data_members; template struct get_data_members; template struct get_public_member_functions; template struct get_accessible_member_functions; template struct get_member_functions; template struct get_public_member_types; template struct get_accessible_member_types; template struct get_member_types; template struct get_constructors; template struct get_destructor; template struct get_operators; template struct get_public_base_classes; template struct get_accessible_base_classes; template struct get_base_classes; template struct is_final; template using get_public_data_members_t = typename get_public_data_members::type; template using get_accessible_data_members_t = typename get_accessible_data_members::type; template using get_data_members_t = typename get_data_members::type; template using get_public_member_functions_t = typename get_public_member_functions::type; template using get_accessible_member_functions_t = typename get_accessible_member_functions::type; template using get_member_functions_t = typename get_member_functions::type; template using get_public_member_types_t = typename get_public_member_types::type; template using get_accessible_member_types_t = typename get_accessible_member_types::type; template using get_member_types_t = typename get_member_types::type; template using get_constructors_t = typename get_constructors::type; template using get_destructor_t = typename get_destructor::type; template using get_operators_t = typename get_operators::type; template using get_public_base_classes_t = typename get_public_base_classes::type; template using get_accessible_base_classes_t = typename get_accessible_base_classes::type; template using get_base_classes_t = typename get_base_classes::type; // 21.12.4.8 Enum operations template struct is_scoped_enum; template struct get_enumerators; template struct get_underlying_type; template constexpr auto is_scoped_enum_v = is_scoped_enum::value; template using get_enumerators_t = typename get_enumerators::type; template using get_underlying_type_t = typename get_underlying_type::type; // 21.12.4.9 Value operations template struct get_constant; template struct is_constexpr; template struct is_static; template struct is_thread_local; template struct get_pointer; template constexpr auto get_constant_v = get_constant::value; template constexpr auto is_thread_local_v = is_thread_local::value; // 21.12.4.10 Base operations template struct get_class; template struct is_virtual; template struct is_public; template struct is_protected; template struct is_private; template using get_class_t = typename get_class::type; // 21.12.4.11 Namespace operations template struct is_inline; // 21.12.4.12 FunctionParameter operations template struct has_default_argument; template constexpr auto has_default_argument_v = has_default_argument::value; // 21.12.4.13 Callable operations template struct get_parameters; template struct is_vararg; template struct is_constexpr; template struct is_noexcept; template struct is_inline; template struct is_deleted; template using get_parameters_t = typename get_parameters::type; template constexpr auto is_vararg_v = is_vararg::value; template constexpr auto is_deleted_v = is_deleted::value; // 21.12.4.14 ParenthesizedExpression operations template struct get_subexpression; template using get_subexpression_t = typename get_subexpression::type; // 21.12.4.15 FunctionCallExpression operations template struct get_callable; template using get_callable_t = typename get_callable::type; // 21.12.4.16 FunctionalTypeConversion operations template struct get_constructor; template using get_constructor_t = typename get_constructor::type; // 21.12.4.17 Function operations template struct get_pointer; // 21.12.4.18 MemberFunction operations template struct is_static; template struct is_const; template struct is_volatile; template struct has_lvalueref_qualifier; template struct has_rvalueref_qualifier; template struct is_virtual; template struct is_pure_virtual; template struct is_override; template struct is_final; template constexpr auto is_const_v = is_const::value; template constexpr auto is_volatile_v = is_volatile::value; template constexpr auto has_lvalueref_qualifier_v = has_lvalueref_qualifier::value; template constexpr auto has_rvalueref_qualifier_v = has_rvalueref_qualifier::value; template constexpr auto is_override_v = is_override::value; // 21.12.4.19 SpecialMemberFunction operations template struct is_implicitly_declared; template struct is_defaulted; template constexpr auto is_implicitly_declared_v = is_implicitly_declared::value; template constexpr auto is_defaulted_v = is_defaulted::value; // 21.12.4.20 Constructor operations template struct is_explicit; // 21.12.4.21 Destructor operations template struct is_virtual; template struct is_pure_virtual; // 21.12.4.22 ConversionOperator operations template struct is_explicit; // 21.12.4.23 Lambda operations template struct get_captures; template struct uses_default_copy_capture; template struct uses_default_reference_capture; template struct is_call_operator_const; template using get_captures_t = typename get_captures::type; template constexpr auto uses_default_copy_capture_v = uses_default_copy_capture::value; template constexpr auto uses_default_reference_capture_v = uses_default_reference_capture::value; template constexpr auto is_call_operator_const_v = is_call_operator_const::value; // 21.12.4.24 LambdaCapture operations template struct is_explicitly_captured; template struct is_init_capture; template constexpr auto is_explicitly_captured_v = is_explicitly_captured::value; template constexpr auto is_init_capture_v = is_init_capture::value; } // inline namespace v1 } // namespace std::experimental::reflect