Audacity 3.2.0
|
Utilities for compile-time type manipulation. Some terminology as in Lisp. More...
Classes | |
struct | And |
struct | And< Predicate, Predicates... > |
struct | And<> |
struct | Append |
struct | Append< TypeList, TypeLists... > |
struct | Append<> |
struct | Apply |
Bind the types in TypeList to the parameters of a variadic Template. More... | |
struct | Apply< Template, List< Types... > > |
struct | Bind |
Destructure any tuple-like type into a TypeList. More... | |
struct | Bind1st |
Given a binary template and a fixed argument, make a metafunction. More... | |
struct | Bind2nd |
Given a binary template and a fixed argument, make a metafunction. More... | |
struct | ButLast |
struct | ButLast< List< Type > > |
struct | ButLast< List< Type, Types... > > |
struct | Call |
Apply a metafunction to a type. More... | |
struct | Compose |
struct | Compose< Metafunction, Metafunctions... > |
struct | Compose<> |
struct | Cons |
Build a type list from a type and another type list. More... | |
struct | Cons< Type, List< Types... > > |
struct | Every |
struct | Filter |
Select only the subsequence of the type list satisfying the predicate. More... | |
struct | Fn |
struct | Fn< Template, Templates... > |
struct | Fn<> |
struct | HasBaseIn |
Whether the given type is derived from any member of the list. More... | |
struct | Head |
Delays expansion of nested alias head ; so Head<Nil> is legal. More... | |
struct | Head< List< Types... > > |
struct | In |
struct | Last |
struct | Last< List< Type > > |
struct | Last< List< Type, Types... > > |
struct | LeftFold |
Left fold reduction of a list of types by a binary template. More... | |
struct | LeftFoldList |
Like LeftFold, but passing nonempty prefixes, not elements, to Op. More... | |
struct | Length |
struct | Length< List< Types... > > |
struct | List |
Primary template for a list of arbitrary types. More... | |
struct | List< Type, Types... > |
Non-empty specialization also defines first and rest. More... | |
struct | List<> |
Empty specialization. More... | |
struct | Map |
Transform a list of types by the given metafunction. More... | |
struct | MapList |
struct | NonEmptyTails |
struct | NotAny |
struct | NotEvery |
struct | Nth |
struct | Null |
struct | Null< List< Types... > > |
struct | Or |
struct | Or< Predicate, Predicates... > |
struct | Or<> |
struct | PushBack |
PushBack – no Common Lisp equivalent name. More... | |
struct | PushBack< List< Types... >, Type > |
struct | PushFront |
An alternative more suggestive of C++ than Lisp conventions. More... | |
struct | Reverse |
struct | RightFold |
Right fold reduction of a list of types by a binary template. More... | |
struct | RightFoldList |
Like RightFold, but passing nonempty tails, not elements, to Op. More... | |
struct | Some |
struct | StablePartition |
struct | Tail |
Delays expansion of nested alias rest; so Tail<Nil> is legal. More... | |
struct | Tail< List< Types... > > |
struct | Tails |
struct | type_identity |
standard in C++20; add a level of indirection to a type More... | |
Typedefs | |
using | Nil = List<> |
template<typename TypeList > | |
using | Length_t = typename Length< TypeList >::type |
template<typename TypeList > | |
using | Head_t = typename Head< TypeList >::type |
template<typename TypeList > | |
using | Tail_t = typename Tail< TypeList >::type |
template<typename TypeList > | |
using | Rest = Tail< TypeList > |
Synonym for Tail. More... | |
template<typename TypeList > | |
using | Rest_t = Tail_t< TypeList > |
template<size_t N, typename TypeList > | |
using | Nth_t = typename Nth< N, TypeList >::type |
template<typename TypeList > | |
using | First = Nth< 0, TypeList > |
template<typename TypeList > | |
using | First_t = typename First< TypeList >::type |
template<typename TypeList > | |
using | Second = Nth< 1, TypeList > |
template<typename TypeList > | |
using | Second_t = typename Second< TypeList >::type |
template<typename Type , typename TypeList > | |
using | Cons_t = typename Cons< Type, TypeList >::type |
template<typename TypeList , typename Type > | |
using | PushFront_t = typename PushFront< TypeList, Type >::type |
template<typename TypeList , typename Type > | |
using | PushBack_t = typename PushBack< TypeList, Type >::type |
template<typename TypeList > | |
using | NonEmptyTails_t = typename NonEmptyTails< TypeList >::type |
template<typename TypeList > | |
using | Tails_t = typename Tails< TypeList >::type |
template<typename TypeList > | |
using | Last_t = typename Last< TypeList >::type |
template<typename TypeList > | |
using | ButLast_t = typename ButLast< TypeList >::type |
using | Identity = Compose<> |
template<template< typename... > class Template, typename TypeList > | |
using | Apply_t = typename Apply< Template, TypeList >::type |
template<typename TupleLike > | |
using | Bind_t = typename Bind< TupleLike >::type |
template<typename Metafunction , typename TypeList > | |
using | Map_t = typename Map< Metafunction, TypeList >::type |
template<typename Metafunction , typename TypeList > | |
using | MapList_t = typename MapList< Metafunction, TypeList >::type |
template<typename... Lists> | |
using | Append_t = typename Append< Lists... >::type |
template<template< typename Type, typename Accumulator > class Op, typename TypeList , typename Initial > | |
using | LeftFold_t = typename LeftFold< Op, TypeList, Initial >::type |
template<template< typename Prefix, typename Accumulator > class Op, typename TypeList , typename Initial > | |
using | LeftFoldList_t = typename LeftFoldList< Op, TypeList, Initial >::type |
template<template< typename Type, typename Accumulator > class Op, typename TypeList , typename Initial > | |
using | RightFold_t = typename RightFold< Op, TypeList, Initial >::type |
template<template< typename Tail, typename Accumulator > class Op, typename TypeList , typename Initial > | |
using | RightFoldList_t = typename RightFoldList< Op, TypeList, Initial >::type |
template<typename TypeList > | |
using | Reverse_t = typename Reverse< TypeList >::type |
template<typename Predicate , typename T > | |
using | Call_t = typename Call< Predicate, T >::type |
template<bool Const> | |
using | MaybeConst = std::conditional_t< Const, Fn< std::add_const_t >, Identity > |
Conditionally add const to a type. More... | |
template<bool Const, typename TypeList > | |
using | MapConst = std::conditional_t< Const, Map< Fn< std::add_const_t >, TypeList >, type_identity< TypeList > > |
Conditionally map const over a type list. More... | |
template<bool Const, typename TypeList > | |
using | MapConst_t = typename MapConst< Const, TypeList >::type |
template<typename Predicate , typename T > | |
using | Is = Call< Predicate, T > |
Apply a metapredicate to a type. More... | |
template<typename Predicate , typename T > | |
using | Is_t = typename Is< Predicate, T >::type |
template<typename Predicate > | |
using | Not = Compose< Fn< std::negation >, Predicate > |
template<typename Predicate , typename TypeList > | |
using | StablePartition_t = typename StablePartition< Predicate, TypeList >::type |
template<typename Predicate , typename TypeList > | |
using | Filter_t = typename Filter< Predicate, TypeList >::type |
Variables | |
template<typename TypeList > | |
constexpr auto | Null_v = Null<TypeList>::value |
template<typename TypeList > | |
constexpr auto | Length_v = Length_t<TypeList>::value |
template<typename Predicate , typename T > | |
static constexpr bool | Is_v |
template<typename Predicate , typename TypeList > | |
constexpr auto | Every_v |
The constant value in the corresponding type. More... | |
template<typename Predicate , typename TypeList > | |
constexpr auto | Some_v |
The constant value in the corresponding type. More... | |
template<typename Predicate , typename TypeList > | |
constexpr auto | NotEvery_v |
The constant value in the corresponding type. More... | |
template<typename Predicate , typename TypeList > | |
constexpr auto | NotAny_v |
The constant value in the corresponding type. More... | |
template<typename Item , typename TypeList > | |
constexpr auto | In_v |
template<typename Item , typename TypeList > | |
constexpr auto | HasBaseIn_v |
Utilities for compile-time type manipulation. Some terminology as in Lisp.
using TypeList::Append_t = typedef typename Append<Lists...>::type |
Definition at line 273 of file TypeList.h.
using TypeList::Apply_t = typedef typename Apply<Template, TypeList>::type |
Definition at line 235 of file TypeList.h.
using TypeList::Bind_t = typedef typename Bind<TupleLike>::type |
Definition at line 250 of file TypeList.h.
using TypeList::ButLast_t = typedef typename ButLast<TypeList>::type |
Definition at line 190 of file TypeList.h.
using TypeList::Call_t = typedef typename Call<Predicate, T>::type |
Definition at line 374 of file TypeList.h.
using TypeList::Cons_t = typedef typename Cons<Type, TypeList>::type |
Definition at line 141 of file TypeList.h.
using TypeList::Filter_t = typedef typename Filter<Predicate, TypeList>::type |
Definition at line 503 of file TypeList.h.
using TypeList::First = typedef Nth<0, TypeList> |
Nth is zero-based but "First, Second," etc. are not. Sorry, but that's Lisp convention. (And C++ too: get as applied to pairs, but "first", "second")
Definition at line 133 of file TypeList.h.
using TypeList::First_t = typedef typename First<TypeList>::type |
Definition at line 134 of file TypeList.h.
using TypeList::Head_t = typedef typename Head<TypeList>::type |
Could simply define template<typename TypeList> using Head_t = typename TypeList::head;
But instead it is defined in terms of Head
Definition at line 95 of file TypeList.h.
using TypeList::Identity = typedef Compose<> |
Definition at line 218 of file TypeList.h.
using TypeList::Is = typedef Call<Predicate, T> |
Apply a metapredicate to a type.
Definition at line 391 of file TypeList.h.
using TypeList::Is_t = typedef typename Is<Predicate, T>::type |
Definition at line 392 of file TypeList.h.
using TypeList::Last_t = typedef typename Last<TypeList>::type |
Definition at line 183 of file TypeList.h.
using TypeList::LeftFold_t = typedef typename LeftFold<Op, TypeList, Initial>::type |
Definition at line 309 of file TypeList.h.
using TypeList::LeftFoldList_t = typedef typename LeftFoldList<Op, TypeList, Initial>::type |
Definition at line 329 of file TypeList.h.
using TypeList::Length_t = typedef typename Length<TypeList>::type |
Definition at line 83 of file TypeList.h.
using TypeList::Map_t = typedef typename Map<Metafunction, TypeList>::type |
Definition at line 261 of file TypeList.h.
using TypeList::MapConst = typedef std::conditional_t<Const, Map<Fn<std::add_const_t>, TypeList>, type_identity<TypeList> > |
Conditionally map const over a type list.
Definition at line 382 of file TypeList.h.
using TypeList::MapConst_t = typedef typename MapConst<Const, TypeList>::type |
Definition at line 387 of file TypeList.h.
using TypeList::MapList_t = typedef typename MapList<Metafunction, TypeList>::type |
Definition at line 269 of file TypeList.h.
using TypeList::MaybeConst = typedef std::conditional_t<Const, Fn<std::add_const_t>, Identity> |
Conditionally add const to a type.
Definition at line 378 of file TypeList.h.
using TypeList::Nil = typedef List<> |
Definition at line 75 of file TypeList.h.
using TypeList::NonEmptyTails_t = typedef typename NonEmptyTails<TypeList>::type |
Definition at line 172 of file TypeList.h.
using TypeList::Not = typedef Compose<Fn<std::negation>, Predicate> |
Definition at line 397 of file TypeList.h.
using TypeList::Nth_t = typedef typename Nth<N, TypeList>::type |
Definition at line 127 of file TypeList.h.
using TypeList::PushBack_t = typedef typename PushBack<TypeList, Type>::type |
Definition at line 155 of file TypeList.h.
using TypeList::PushFront_t = typedef typename PushFront<TypeList, Type>::type |
Definition at line 150 of file TypeList.h.
using TypeList::Rest = typedef Tail<TypeList> |
Synonym for Tail.
Definition at line 113 of file TypeList.h.
using TypeList::Rest_t = typedef Tail_t<TypeList> |
Definition at line 114 of file TypeList.h.
using TypeList::Reverse_t = typedef typename Reverse<TypeList>::type |
Definition at line 368 of file TypeList.h.
using TypeList::RightFold_t = typedef typename RightFold<Op, TypeList, Initial>::type |
Definition at line 347 of file TypeList.h.
using TypeList::RightFoldList_t = typedef typename RightFoldList<Op, TypeList, Initial>::type |
Definition at line 365 of file TypeList.h.
using TypeList::Second = typedef Nth<1, TypeList> |
Definition at line 136 of file TypeList.h.
using TypeList::Second_t = typedef typename Second<TypeList>::type |
Definition at line 137 of file TypeList.h.
using TypeList::StablePartition_t = typedef typename StablePartition<Predicate, TypeList>::type |
Definition at line 496 of file TypeList.h.
using TypeList::Tail_t = typedef typename Tail<TypeList>::type |
Could simply define template<typename TypeList> using Tail_t = typename TypeList::tail;
But instead it is defined in terms of Tail
Definition at line 107 of file TypeList.h.
using TypeList::Tails_t = typedef typename Tails<TypeList>::type |
Definition at line 180 of file TypeList.h.
|
constexpr |
The constant value in the corresponding type.
Definition at line 442 of file TypeList.h.
|
constexpr |
Definition at line 481 of file TypeList.h.
|
constexpr |
Definition at line 475 of file TypeList.h.
|
staticconstexpr |
Definition at line 394 of file TypeList.h.
|
constexpr |
Definition at line 84 of file TypeList.h.
|
constexpr |
The constant value in the corresponding type.
Definition at line 468 of file TypeList.h.
|
constexpr |
The constant value in the corresponding type.
Definition at line 459 of file TypeList.h.
|
constexpr |
Definition at line 78 of file TypeList.h.
|
constexpr |
The constant value in the corresponding type.
Definition at line 450 of file TypeList.h.