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.