Lumiera  0.pre.03
»edityourfreedom«
generator.hpp File Reference

Go to the source code of this file.

Description

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
generator-test.cpp
lumiera::query::ConfigRules usage example
typelist.hpp

Definition in file generator.hpp.

Classes

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 >
 

Namespaces

 lib
 Implementation namespace for support and library code.
 
 lib::meta
 

Class Documentation

◆ lib::meta::InstantiateWithIndex

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