Lumiera  0.pre.03
generator.hpp File Reference

Go to the source code of this file.


Helpers for working with lib::meta::Types (i.e.

lists-of-types). The main purpose is to build interfaces and polymorphic implementations (using virtual functions) based on templated Types or Collections of types, which is not possible without Template Metaprogramming.

The facilities in this header work by instantiating another template, which is passed in as (template template) parameter, for each of a given sequence of types. What varies is the way how this "for each" instantiation is mixed or inherited into the resulting product.

See also
lumiera::query::ConfigRules usage example

Definition in file generator.hpp.


struct  InheritFrom< T >
 Helper to just inherit from the given type(s) More...
class  InstantiateChained< TYPES, _X_, BASE >
 Build a single inheritance chain of template instantiations. More...
class  InstantiateChained< Node< TY, TYPES >, _X_, BASE >
class  InstantiateChained< NullType, _X_, BASE >
class  InstantiateForEach< TYPES, _X_, BASE >
 Apply a template to a collection of types. More...
class  InstantiateForEach< Node< TY, TYPES >, _X_, BASE >
class  InstantiateForEach< NullType, _X_, BASE >
class  InstantiateWithIndex< TYPES, _X_, BASE, i >
 A Variation of InstantiateChained providing an incremented Index value template parameter. More...
class  InstantiateWithIndex< Node< TY, TYPES >, _X_, BASE, i >
class  InstantiateWithIndex< NullType, _X_, BASE, i >


 Implementation namespace for support and library code.

Class Documentation

◆ lib::meta::InstantiateWithIndex

class lib::meta::InstantiateWithIndex
+ Collaboration diagram for InstantiateWithIndex< TYPES, _X_, BASE, i >: