![]() |
Lumiera 0.pre.04~rc.1
»edit your freedom«
|
A template metaprogramming technique for manipulating collections of types. More...
Go to the source code of this file.
A template metaprogramming technique for manipulating collections of types.
Types<TS...> (the type sequence). To start typelist processing, other templates typically pick up the Types<...>::List type. This allows for LISP-style list processing, with a pattern match on either Node<TY,TYPES> or the type Nil to terminate recursion. In C++ template metaprogramming, "pattern match" is done by partial template specialisations (the compiler will pick up and thus match the template parameters). A type definition acts like a variable declaration in regular programming. Because such a "declaration" can't be changed after the fact, effectively this is a flavour of functional programming; the execution environment is the compiler, and evaluation is set off by some template instantiation.Definition in file typelist.hpp.
Namespaces | |
| namespace | lib |
| Implementation namespace for support and library code. | |
| namespace | lib::meta |
Typedefs | |
| using | NilNode = Node< Nil, Nil > |
Classes | |
| struct | Nil |
| »Empty« mark More... | |
| struct | Node< H, T > |
| Type list with head and tail; T ≡ Nil marks list end. More... | |
| struct | Types< T, TS... > |
| struct | Types<> |
| struct lib::meta::Node |
| struct lib::meta::Types< T, TS... > |