Audacity 3.2.0
Classes | Typedefs | Variables
TypeList Namespace Reference

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
 

Detailed Description

Utilities for compile-time type manipulation. Some terminology as in Lisp.

Typedef Documentation

◆ Append_t

template<typename... Lists>
using TypeList::Append_t = typedef typename Append<Lists...>::type

Definition at line 273 of file TypeList.h.

◆ Apply_t

template<template< typename... > class Template, typename TypeList >
using TypeList::Apply_t = typedef typename Apply<Template, TypeList>::type

Definition at line 235 of file TypeList.h.

◆ Bind_t

template<typename TupleLike >
using TypeList::Bind_t = typedef typename Bind<TupleLike>::type

Definition at line 250 of file TypeList.h.

◆ ButLast_t

template<typename TypeList >
using TypeList::ButLast_t = typedef typename ButLast<TypeList>::type

Definition at line 190 of file TypeList.h.

◆ Call_t

template<typename Predicate , typename T >
using TypeList::Call_t = typedef typename Call<Predicate, T>::type

Definition at line 374 of file TypeList.h.

◆ Cons_t

template<typename Type , typename TypeList >
using TypeList::Cons_t = typedef typename Cons<Type, TypeList>::type

Definition at line 141 of file TypeList.h.

◆ Filter_t

template<typename Predicate , typename TypeList >
using TypeList::Filter_t = typedef typename Filter<Predicate, TypeList>::type

Definition at line 503 of file TypeList.h.

◆ First

template<typename TypeList >
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.

◆ First_t

template<typename TypeList >
using TypeList::First_t = typedef typename First<TypeList>::type

Definition at line 134 of file TypeList.h.

◆ Head_t

template<typename TypeList >
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.

◆ Identity

using TypeList::Identity = typedef Compose<>

Definition at line 218 of file TypeList.h.

◆ Is

template<typename Predicate , typename T >
using TypeList::Is = typedef Call<Predicate, T>

Apply a metapredicate to a type.

Definition at line 391 of file TypeList.h.

◆ Is_t

template<typename Predicate , typename T >
using TypeList::Is_t = typedef typename Is<Predicate, T>::type

Definition at line 392 of file TypeList.h.

◆ Last_t

template<typename TypeList >
using TypeList::Last_t = typedef typename Last<TypeList>::type

Definition at line 183 of file TypeList.h.

◆ LeftFold_t

template<template< typename Type, typename Accumulator > class Op, typename TypeList , typename Initial >
using TypeList::LeftFold_t = typedef typename LeftFold<Op, TypeList, Initial>::type

Definition at line 309 of file TypeList.h.

◆ LeftFoldList_t

template<template< typename Prefix, typename Accumulator > class Op, typename TypeList , typename Initial >
using TypeList::LeftFoldList_t = typedef typename LeftFoldList<Op, TypeList, Initial>::type

Definition at line 329 of file TypeList.h.

◆ Length_t

template<typename TypeList >
using TypeList::Length_t = typedef typename Length<TypeList>::type

Definition at line 83 of file TypeList.h.

◆ Map_t

template<typename Metafunction , typename TypeList >
using TypeList::Map_t = typedef typename Map<Metafunction, TypeList>::type

Definition at line 261 of file TypeList.h.

◆ MapConst

template<bool Const, typename TypeList >
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.

◆ MapConst_t

template<bool Const, typename TypeList >
using TypeList::MapConst_t = typedef typename MapConst<Const, TypeList>::type

Definition at line 387 of file TypeList.h.

◆ MapList_t

template<typename Metafunction , typename TypeList >
using TypeList::MapList_t = typedef typename MapList<Metafunction, TypeList>::type

Definition at line 269 of file TypeList.h.

◆ MaybeConst

template<bool Const>
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.

◆ Nil

using TypeList::Nil = typedef List<>

Definition at line 75 of file TypeList.h.

◆ NonEmptyTails_t

template<typename TypeList >
using TypeList::NonEmptyTails_t = typedef typename NonEmptyTails<TypeList>::type

Definition at line 172 of file TypeList.h.

◆ Not

template<typename Predicate >
using TypeList::Not = typedef Compose<Fn<std::negation>, Predicate>

Definition at line 397 of file TypeList.h.

◆ Nth_t

template<size_t N, typename TypeList >
using TypeList::Nth_t = typedef typename Nth<N, TypeList>::type

Definition at line 127 of file TypeList.h.

◆ PushBack_t

template<typename TypeList , typename Type >
using TypeList::PushBack_t = typedef typename PushBack<TypeList, Type>::type

Definition at line 155 of file TypeList.h.

◆ PushFront_t

template<typename TypeList , typename Type >
using TypeList::PushFront_t = typedef typename PushFront<TypeList, Type>::type

Definition at line 150 of file TypeList.h.

◆ Rest

template<typename TypeList >
using TypeList::Rest = typedef Tail<TypeList>

Synonym for Tail.

Definition at line 113 of file TypeList.h.

◆ Rest_t

template<typename TypeList >
using TypeList::Rest_t = typedef Tail_t<TypeList>

Definition at line 114 of file TypeList.h.

◆ Reverse_t

template<typename TypeList >
using TypeList::Reverse_t = typedef typename Reverse<TypeList>::type

Definition at line 368 of file TypeList.h.

◆ RightFold_t

template<template< typename Type, typename Accumulator > class Op, typename TypeList , typename Initial >
using TypeList::RightFold_t = typedef typename RightFold<Op, TypeList, Initial>::type

Definition at line 347 of file TypeList.h.

◆ RightFoldList_t

template<template< typename Tail, typename Accumulator > class Op, typename TypeList , typename Initial >
using TypeList::RightFoldList_t = typedef typename RightFoldList<Op, TypeList, Initial>::type

Definition at line 365 of file TypeList.h.

◆ Second

template<typename TypeList >
using TypeList::Second = typedef Nth<1, TypeList>

Definition at line 136 of file TypeList.h.

◆ Second_t

template<typename TypeList >
using TypeList::Second_t = typedef typename Second<TypeList>::type

Definition at line 137 of file TypeList.h.

◆ StablePartition_t

template<typename Predicate , typename TypeList >
using TypeList::StablePartition_t = typedef typename StablePartition<Predicate, TypeList>::type

Definition at line 496 of file TypeList.h.

◆ Tail_t

template<typename TypeList >
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.

◆ Tails_t

template<typename TypeList >
using TypeList::Tails_t = typedef typename Tails<TypeList>::type

Definition at line 180 of file TypeList.h.

Variable Documentation

◆ Every_v

template<typename Predicate , typename TypeList >
constexpr auto TypeList::Every_v
constexpr
Initial value:

The constant value in the corresponding type.

Definition at line 442 of file TypeList.h.

◆ HasBaseIn_v

template<typename Item , typename TypeList >
constexpr auto TypeList::HasBaseIn_v
constexpr
Initial value:
=
Whether the given type is derived from any member of the list.
Definition: TypeList.h:480

Definition at line 481 of file TypeList.h.

◆ In_v

template<typename Item , typename TypeList >
constexpr auto TypeList::In_v
constexpr
Initial value:

Definition at line 475 of file TypeList.h.

◆ Is_v

template<typename Predicate , typename T >
constexpr bool TypeList::Is_v
staticconstexpr
Initial value:
=
typename Is< Predicate, T >::type Is_t
Definition: TypeList.h:393

Definition at line 394 of file TypeList.h.

◆ Length_v

template<typename TypeList >
constexpr auto TypeList::Length_v = Length_t<TypeList>::value
constexpr

Definition at line 84 of file TypeList.h.

◆ NotAny_v

template<typename Predicate , typename TypeList >
constexpr auto TypeList::NotAny_v
constexpr
Initial value:

The constant value in the corresponding type.

Definition at line 468 of file TypeList.h.

◆ NotEvery_v

template<typename Predicate , typename TypeList >
constexpr auto TypeList::NotEvery_v
constexpr
Initial value:

The constant value in the corresponding type.

Definition at line 459 of file TypeList.h.

◆ Null_v

template<typename TypeList >
constexpr auto TypeList::Null_v = Null<TypeList>::value
constexpr

Definition at line 78 of file TypeList.h.

◆ Some_v

template<typename Predicate , typename TypeList >
constexpr auto TypeList::Some_v
constexpr
Initial value:

The constant value in the corresponding type.

Definition at line 450 of file TypeList.h.