MEL
Microthread & Execution library
InheritanceCreator.h
1 #pragma once
2 
3 #include <mpl/typelist/TypeList.h>
4 #include <mpl/typelist/Element.h>
5 
6 namespace mel
7 {
8  namespace mpl
9  {
13  namespace _private
14  {
15  template <class TList/*,template <class> class Holder*/>
16  class CreateWideInheritance_Base;
17  template < class H,class T/*,template <class > class Holder*/> class CreateWideInheritance_Base< TypeList<H,T>/*, Holder*/ > :
18  public CreateWideInheritance_Base<H/*,Holder*/>,
19  public CreateWideInheritance_Base<T/*,Holder*/>
20  {
21  };
22  template < class SimpleType/*,template <class> class Holder */> class CreateWideInheritance_Base: public SimpleType
23  {
24  };
25  template < /*template <class> class Holder */> class CreateWideInheritance_Base< NullType/*, Holder*/ >
26  {
27  };
28  }
30 
33  template <class TList/*, template <class> class Holder*/> class CreateWideInheritance
35  : public _private::CreateWideInheritance_Base<TList/*,Holder*/>
37  {
38  public:
39  template<int n> typename Element<TList,n,true>::Result& get()
40  {
41  return static_cast<typename Element<TList,n,true>::Result&>(*this);
42  }
43 
44 
45 
46  };
47  }
48 }
Definition: InheritanceCreator.h:37
Definition: BasicTypes.h:7
Definition: Callback_Impl.h:11
Definition: Element.h:13
Definition: TypeList.h:17