repr 0.1
Reconstructable string representations and more
Loading...
Searching...
No Matches
librepr::TypeListBase< List, Ts > Struct Template Reference

#include <list.h>

Inheritance diagram for librepr::TypeListBase< List, Ts >:
[legend]
Collaboration diagram for librepr::TypeListBase< List, Ts >:
[legend]

Public Types

template<template< typename > class F>
using map = List< F< Ts >... >
 
template<template< typename > class F>
using map_t = List< typename F< Ts >::type... >
 
template<std::size_t Idx>
using get = typename pack::Split< Idx, List< Ts... > >::type
 
template<std::size_t Idx>
using split = List< typename do_split< Idx >::head, typename do_split< Idx >::tail >
 
template<std::size_t Idx>
using head = typename do_split< Idx >::head
 
template<std::size_t Idx>
using tail = typename do_split< Idx >::tail
 
template<typename T >
using append = List< Ts..., T >
 
template<typename T >
using prepend = List< T, Ts... >
 
template<template< typename... > class T>
using to = T< Ts... >
 

Static Public Member Functions

template<typename F , typename... Args>
static constexpr decltype(auto) invoke (F &&callable, Args &&... args)
 
template<typename F , typename... Args>
static constexpr void for_each (F &&callable, Args &&... args)
 
template<typename F , typename... Args>
static constexpr void enumerate (F &&callable, Args &&... args)
 

Static Public Attributes

static constexpr std::size_t size = sizeof...(Ts)
 

Member Typedef Documentation

◆ append

template<template< typename... > class List, typename... Ts>
template<typename T >
using librepr::TypeListBase< List, Ts >::append = List<Ts..., T>

◆ get

template<template< typename... > class List, typename... Ts>
template<std::size_t Idx>
using librepr::TypeListBase< List, Ts >::get = typename pack::Split<Idx, List<Ts...> >::type

◆ head

template<template< typename... > class List, typename... Ts>
template<std::size_t Idx>
using librepr::TypeListBase< List, Ts >::head = typename do_split<Idx>::head

◆ map

template<template< typename... > class List, typename... Ts>
template<template< typename > class F>
using librepr::TypeListBase< List, Ts >::map = List<F<Ts>...>

◆ map_t

template<template< typename... > class List, typename... Ts>
template<template< typename > class F>
using librepr::TypeListBase< List, Ts >::map_t = List<typename F<Ts>::type...>

◆ prepend

template<template< typename... > class List, typename... Ts>
template<typename T >
using librepr::TypeListBase< List, Ts >::prepend = List<T, Ts...>

◆ split

template<template< typename... > class List, typename... Ts>
template<std::size_t Idx>
using librepr::TypeListBase< List, Ts >::split = List<typename do_split<Idx>::head, typename do_split<Idx>::tail>

◆ tail

template<template< typename... > class List, typename... Ts>
template<std::size_t Idx>
using librepr::TypeListBase< List, Ts >::tail = typename do_split<Idx>::tail

◆ to

template<template< typename... > class List, typename... Ts>
template<template< typename... > class T>
using librepr::TypeListBase< List, Ts >::to = T<Ts...>

Member Function Documentation

◆ enumerate()

template<template< typename... > class List, typename... Ts>
template<typename F , typename... Args>
static constexpr void librepr::TypeListBase< List, Ts >::enumerate ( F &&  callable,
Args &&...  args 
)
inlinestaticconstexpr

◆ for_each()

template<template< typename... > class List, typename... Ts>
template<typename F , typename... Args>
static constexpr void librepr::TypeListBase< List, Ts >::for_each ( F &&  callable,
Args &&...  args 
)
inlinestaticconstexpr

◆ invoke()

template<template< typename... > class List, typename... Ts>
template<typename F , typename... Args>
static constexpr decltype(auto) librepr::TypeListBase< List, Ts >::invoke ( F &&  callable,
Args &&...  args 
)
inlinestaticconstexpr

Member Data Documentation

◆ size

template<template< typename... > class List, typename... Ts>
constexpr std::size_t librepr::TypeListBase< List, Ts >::size = sizeof...(Ts)
staticconstexpr

The documentation for this struct was generated from the following file: