Provides type-level operations for refl-cpp related use-cases. More...
Classes | |
| struct | append |
| Appends a type to the list. More... | |
| struct | as_tuple< T< Ts... > > |
| Provides a member typedef which is a std::tuple specialization with template type parameters equivalent to the type parameters of the provided type. More... | |
| struct | as_type_list< T< Ts... > > |
| Provides a member typedef type which is a type_list with template type parameters equivalent to the type parameters of the provided type. More... | |
| struct | concat |
| Concatenates N lists together. More... | |
| struct | contains< T, type_list< Ts... > > |
| Checks whether T is contained in the list of types. More... | |
| struct | contains_base< T, type_list< Ts... > > |
| Checks whether a type deriving from T is contained in the list of types. More... | |
| struct | contains_instance< T, type_list< Ts... > > |
| Checks whether an instance of the template T is contained in the list of types. More... | |
| struct | filter< Predicate, type_list< Ts... > > |
| Filters a type_list according to a predicate template. More... | |
| struct | get< N, type_list< Ts... > > |
| Provides a member typedef type which is the N-th type in the provided type_list. More... | |
| struct | index_of< T, type_list< Ts... > > |
| The index of the type in the type list, -1 if it doesn't exist. More... | |
| struct | index_of_base< T, type_list< Ts... > > |
| The index of the type in the type list that is derived from T, -1 if it doesn't exist. More... | |
| struct | index_of_instance< T, type_list< Ts... > > |
| The index of the type in the type list that is a template instance of T, -1 if it doesn't exist. More... | |
| struct | is_container |
| Checks whether objects of the type T support member .begin() and .end() operations. More... | |
| struct | is_descriptor |
| A trait for detecting whether the type 'T' is a refl-cpp descriptor. More... | |
| struct | is_field |
| A trait for detecting whether the type 'T' is a field descriptor. More... | |
| struct | is_function |
| A trait for detecting whether the type 'T' is a function descriptor. More... | |
| struct | is_instance |
| Detects whether T is a template specialization. More... | |
| struct | is_instance_of |
| Detects whther the type U is a template specialization of T. More... | |
| struct | is_member |
| A trait for detecting whether the type 'T' is a member descriptor. More... | |
| struct | is_property |
| Checks whether T is marked as a property. More... | |
| struct | is_proxy |
| struct | is_reflectable |
| Checks whether there is reflection metadata for the type T. More... | |
| struct | is_type |
| Detects whether the type T is a type_descriptor. More... | |
| struct | map< Mapper, type_list< Ts... > > |
| Transforms a type_list according to a predicate template. More... | |
| struct | prepend |
| Prepends a type to the list. More... | |
| struct | remove_qualifiers |
| Removes all reference and cv-qualifiers from T. More... | |
| struct | reverse |
| Reverses a list of types. More... | |
| struct | skip< N, type_list< Ts... > > |
| Skips the first N types in the provided type_list. More... | |
| struct | unique |
| Creates a new list containing the repeating elements in the source list only once. More... | |
Typedefs | |
| template<typename T > | |
| using | remove_qualifiers_t = typename remove_qualifiers< T >::type |
| Removes all reference and cv-qualifiers from T. More... | |
| template<size_t N, typename TypeList > | |
| using | get_t = typename get< N, TypeList >::type |
| The N-th type in the provided type_list. More... | |
| template<size_t N, typename TypeList > | |
| using | skip_t = typename skip< N, TypeList >::type |
| Skips the first N types in the provided type_list. More... | |
| template<typename T > | |
| using | as_type_list_t = typename as_type_list< T >::type |
| A typedef for a type_list with template type parameters equivalent to the type parameters of the provided type. More... | |
| template<typename T > | |
| using | as_tuple_t = typename as_tuple< T >::type |
| A typedef for a std::tuple specialization with template type parameters equivalent to the type parameters of the provided type. More... | |
| template<typename TypeList > | |
| using | first = get< 0, TypeList > |
| Accesses first type in the list. More... | |
| template<typename TypeList > | |
| using | first_t = typename first< TypeList >::type |
| Accesses last type in the list. More... | |
| template<typename TypeList > | |
| using | last = get< TypeList::size - 1, TypeList > |
| Accesses last type in the list. More... | |
| template<typename TypeList > | |
| using | last_t = typename last< TypeList >::type |
| Accesses last type in the list. More... | |
| template<typename TypeList > | |
| using | tail = skip< 1, TypeList > |
| Returns all but the first element of the list. More... | |
| template<typename TypeList > | |
| using | tail_t = typename tail< TypeList >::type |
| Returns all but the first element of the list. More... | |
| template<size_t N, typename TypeList > | |
| using | take = detail::take< type_list<>, N, TypeList > |
| Returns the first N elements of the list. More... | |
| template<size_t N, typename TypeList > | |
| using | take_t = typename take< N, TypeList >::type |
| Returns the first N elements of the list. More... | |
| template<typename TypeList > | |
| using | init = take< TypeList::size - 1, TypeList > |
| Returns all but the last element of the list. More... | |
| template<typename TypeList > | |
| using | init_t = typename init< TypeList >::type |
| Returns all but the last element of the list. More... | |
| template<typename TypeList > | |
| using | reverse_t = typename reverse< TypeList >::type |
| Reverses a list of types. More... | |
| template<typename... Ts> | |
| using | concat_t = typename concat< Ts... >::type |
| Concatenates two lists together. More... | |
| template<typename T , typename TypeList > | |
| using | append_t = typename append< T, TypeList >::type |
| Appends a type to the list. More... | |
| template<typename T , typename TypeList > | |
| using | prepend_t = typename prepend< T, TypeList >::type |
| Prepends a type to the list. More... | |
| template<template< typename > typename Predicate, typename TypeList > | |
| using | filter_t = typename filter< Predicate, TypeList >::type |
| Filters a type_list according to a predicate template with a static boolean member named "value" (e.g. More... | |
| template<template< typename > typename Mapper, typename... Ts> | |
| using | map_t = typename map< Mapper, Ts... >::type |
| Transforms a type_list according to a predicate template with a typedef named "type" (e.g. More... | |
| template<typename T > | |
| using | unique_t = typename unique< T >::type |
| Creates a new list containing the repeating elements in the source list only once. More... | |
Variables | |
| template<typename T > | |
| constexpr bool | is_type_v { is_type<T>::value } |
| Detects whether the type T is a type_descriptor. More... | |
Provides type-level operations for refl-cpp related use-cases.
The refl::trait namespace provides type-level operations useful for compile-time metaprogramming.
| using refl::trait::append_t = typedef typename append<T, TypeList>::type |
Appends a type to the list.
| using refl::trait::as_tuple_t = typedef typename as_tuple<T>::type |
A typedef for a std::tuple specialization with template type parameters equivalent to the type parameters of the provided type.
The provided type must be a template specialization.
| using refl::trait::as_type_list_t = typedef typename as_type_list<T>::type |
A typedef for a type_list with template type parameters equivalent to the type parameters of the provided type.
The provided type must be a template instance.
| using refl::trait::concat_t = typedef typename concat<Ts...>::type |
Concatenates two lists together.
| using refl::trait::filter_t = typedef typename filter<Predicate, TypeList>::type |
Filters a type_list according to a predicate template with a static boolean member named "value" (e.g.
std::is_trivial)
| using refl::trait::first = typedef get<0, TypeList> |
Accesses first type in the list.
| using refl::trait::first_t = typedef typename first<TypeList>::type |
Accesses last type in the list.
| using refl::trait::get_t = typedef typename get<N, TypeList>::type |
The N-th type in the provided type_list.
| using refl::trait::init = typedef take<TypeList::size - 1, TypeList> |
Returns all but the last element of the list.
| using refl::trait::init_t = typedef typename init<TypeList>::type |
Returns all but the last element of the list.
| using refl::trait::last = typedef get<TypeList::size - 1, TypeList> |
Accesses last type in the list.
| using refl::trait::last_t = typedef typename last<TypeList>::type |
Accesses last type in the list.
| using refl::trait::map_t = typedef typename map<Mapper, Ts...>::type |
Transforms a type_list according to a predicate template with a typedef named "type" (e.g.
std::remove_reference)
| using refl::trait::prepend_t = typedef typename prepend<T, TypeList>::type |
Prepends a type to the list.
| using refl::trait::remove_qualifiers_t = typedef typename remove_qualifiers<T>::type |
Removes all reference and cv-qualifiers from T.
Equivalent to std::remove_cvref_t which is not currently available on all C++17 compilers.
| using refl::trait::reverse_t = typedef typename reverse<TypeList>::type |
Reverses a list of types.
| using refl::trait::skip_t = typedef typename skip<N, TypeList>::type |
Skips the first N types in the provided type_list.
| using refl::trait::tail = typedef skip<1, TypeList> |
Returns all but the first element of the list.
| using refl::trait::tail_t = typedef typename tail<TypeList>::type |
Returns all but the first element of the list.
| using refl::trait::take = typedef detail::take<type_list<>, N, TypeList> |
Returns the first N elements of the list.
| using refl::trait::take_t = typedef typename take<N, TypeList>::type |
Returns the first N elements of the list.
| using refl::trait::unique_t = typedef typename unique<T>::type |
Creates a new list containing the repeating elements in the source list only once.