/extlibs/Boost/include/boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp
C++ Header | 139 lines | 109 code | 21 blank | 9 comment | 0 complexity | 31654ca5cf6e4953d39085fb26cc4d09 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