PageRenderTime 27ms CodeModel.GetById 11ms app.highlight 11ms RepoModel.GetById 2ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/mpl/aux_/preprocessed/bcc551/inherit.hpp

http://hadesmem.googlecode.com/
C++ Header | 141 lines | 111 code | 21 blank | 9 comment | 0 complexity | 1e3aa69197939b6acb96bede897f567c MD5 | raw file
  1
  2// Copyright Aleksey Gurtovoy 2001-2004
  3//
  4// Distributed under the Boost Software License, Version 1.0. 
  5// (See accompanying file LICENSE_1_0.txt or copy at 
  6// http://www.boost.org/LICENSE_1_0.txt)
  7//
  8
  9// Preprocessed version of "boost/mpl/inherit.hpp" header
 10// -- DO NOT modify by hand!
 11
 12namespace boost { namespace mpl {
 13
 14template<
 15      typename BOOST_MPL_AUX_NA_PARAM(T1)
 16    , typename BOOST_MPL_AUX_NA_PARAM(T2)
 17    >
 18struct inherit2
 19    : T1, T2
 20{
 21    typedef inherit2 type;
 22    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
 23};
 24
 25template< typename T1 >
 26struct inherit2< T1,empty_base >
 27{
 28    typedef T1 type;
 29    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
 30};
 31
 32template< typename T2 >
 33struct inherit2< empty_base,T2 >
 34{
 35    typedef T2 type;
 36    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
 37};
 38
 39template<>
 40struct inherit2< empty_base,empty_base >
 41{
 42    typedef empty_base type;
 43    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
 44};
 45
 46BOOST_MPL_AUX_NA_SPEC(2, inherit2)
 47
 48template<
 49      typename T1 = na, typename T2 = na, typename T3 = na
 50    >
 51struct inherit3
 52    : inherit2<
 53          typename inherit2<
 54              T1, T2
 55            >::type
 56        , T3
 57        >
 58{
 59    BOOST_MPL_AUX_LAMBDA_SUPPORT(
 60          3
 61        , inherit3
 62        , ( T1, T2, T3)
 63        )
 64};
 65
 66BOOST_MPL_AUX_NA_SPEC(3, inherit3)
 67
 68template<
 69      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
 70    >
 71struct inherit4
 72    : inherit2<
 73          typename inherit3<
 74              T1, T2, T3
 75            >::type
 76        , T4
 77        >
 78{
 79    BOOST_MPL_AUX_LAMBDA_SUPPORT(
 80          4
 81        , inherit4
 82        , ( T1, T2, T3, T4)
 83        )
 84};
 85
 86BOOST_MPL_AUX_NA_SPEC(4, inherit4)
 87
 88template<
 89      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
 90    , typename T5 = na
 91    >
 92struct inherit5
 93    : inherit2<
 94          typename inherit4<
 95              T1, T2, T3, T4
 96            >::type
 97        , T5
 98        >
 99{
100    BOOST_MPL_AUX_LAMBDA_SUPPORT(
101          5
102        , inherit5
103        , ( T1, T2, T3, T4, T5)
104        )
105};
106
107BOOST_MPL_AUX_NA_SPEC(5, inherit5)
108
109/// primary template
110
111template<
112      typename T1 = empty_base, typename T2 = empty_base
113    , typename T3 = empty_base, typename T4 = empty_base
114    , typename T5 = empty_base
115    >
116struct inherit
117    : inherit5< T1,T2,T3,T4,T5 >
118{
119};
120
121template<>
122struct inherit< na,na,na,na,na >
123{
124    template<
125
126          typename T1 = empty_base, typename T2 = empty_base
127        , typename T3 = empty_base, typename T4 = empty_base
128        , typename T5 = empty_base
129
130        >
131    struct apply
132        : inherit< T1,T2,T3,T4,T5 >
133    {
134    };
135};
136
137BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
138BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
139BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
140}}
141