PageRenderTime 10ms CodeModel.GetById 1ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 1ms

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

http://hadesmem.googlecode.com/
C++ Header | 139 lines | 109 code | 21 blank | 9 comment | 0 complexity | 942ec219150de23fd8b93b5cfdba0ac0 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 the main "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, typename T2, typename T3, typename T4, typename T5
127
128        >
129    struct apply
130        : inherit< T1,T2,T3,T4,T5 >
131    {
132    };
133};
134
135BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
136BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
137BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
138}}
139