GMP 0.3.0
Generative Metaprogramming library for C++
Loading...
Searching...
No Matches
type_list.hpp File Reference
#include <concepts>
#include <cstddef>
#include <utility>
#include <type_traits>

Go to the source code of this file.

Classes

struct  gmp::type_list<... >
 A variadic template structure representing a list of types. More...
 
struct  gmp::type_list_size< type_list< Types... > >
 
struct  gmp::type_list_element< Idx, type_list< Head, Types... > >
 
struct  gmp::type_list_element< 0, type_list< Head, Types... > >
 
struct  gmp::type_list_tail< T >
 Remove the first element from a type list. More...
 
struct  gmp::type_list_tail< type_list< Head, Types... > >
 
struct  gmp::type_list_concat< TypeList1, TypeList2, RestTypeLists >
 Concatenate multiple type lists into a single type list. More...
 
struct  gmp::type_list_concat< type_list< LTypes... >, type_list< RTypes... > >
 
struct  gmp::type_list_contains< U, type_list< Types... > >
 
struct  gmp::type_list_remove< Idx, type_list< Head, Types... > >
 Public implementation of type-list element removal. More...
 
struct  gmp::type_list_remove< 0, type_list< Head, Types... > >
 
struct  gmp::type_list_insert< Idx, NewType, type_list< Head, Types... > >
 
struct  gmp::type_list_insert< 0, NewType, type_list< Types... > >
 
struct  gmp::filter< T, typename >
 Internal placeholder used during type-list filtering machinery. More...
 
struct  gmp::type_list_reverse< type_list< Types... > >
 
struct  gmp::type_list_reverse< type_list<> >
 
struct  gmp::type_list_unique< type_list< Head, Types... > >
 
struct  gmp::type_list_unique< type_list<> >
 
struct  gmp::type_list_filter< type_list< Head, Types... >, Pred >
 
struct  gmp::type_list_filter< type_list<>, Pred >
 

Namespaces

namespace  gmp
 

Concepts

concept  gmp::type_list_like
 Concept to check if a type is type_list-like.
 

Typedefs

template<std::size_t Idx, typename T >
using gmp::type_list_element_t = type_list_element< Idx, T >::type
 
template<type_list_like T>
using gmp::type_list_head = type_list_element_t< 0, T >
 
template<type_list_like T>
using gmp::type_list_last = type_list_element_t< type_list_size_v< T > - 1, T >
 Alias for the last element type in a type list.
 
template<typename T >
using gmp::type_list_tail_t = type_list_tail< T >::type
 
template<type_list_like... TypeLists>
using gmp::type_list_concat_t = type_list_concat< TypeLists... >::type
 
template<std::size_t Idx, type_list_like T>
using gmp::type_list_remove_t = type_list_remove< Idx, T >::type
 
template<type_list_like T>
using gmp::type_list_pop_front = type_list_remove_t< 0, T >
 
template<type_list_like T>
using gmp::type_list_pop_back = type_list_remove_t< type_list_size_v< T > - 1, T >
 
template<std::size_t Idx, typename NewType , type_list_like T>
using gmp::type_list_insert_t = type_list_insert< Idx, NewType, T >::type
 
template<typename NewType , type_list_like T>
using gmp::type_list_push_front = type_list_insert_t< 0, NewType, T >
 
template<typename NewType , type_list_like T>
using gmp::type_list_push_back = type_list_insert_t< type_list_size_v< T >, NewType, T >
 
template<type_list_like T>
using gmp::type_list_reverse_t = type_list_reverse< T >::type
 
template<typename T >
using gmp::type_list_unique_t = type_list_unique< T >::type
 
template<type_list_like T, template< typename > class Pred>
using gmp::type_list_filter_t = type_list_filter< T, Pred >::type
 

Variables

template<typename T >
constexpr std::size_t gmp::type_list_size_v
 
template<typename U , type_list_like T>
constexpr bool gmp::type_list_contains_v