Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:41:07

0001 
0002 // Copyright Aleksey Gurtovoy 2001-2004
0003 //
0004 // Distributed under the Boost Software License, Version 1.0. 
0005 // (See accompanying file LICENSE_1_0.txt or copy at 
0006 // http://www.boost.org/LICENSE_1_0.txt)
0007 //
0008 
0009 // *Preprocessed* version of the main "inherit.hpp" header
0010 // -- DO NOT modify by hand!
0011 
0012 namespace boost { namespace mpl {
0013 
0014 template<
0015       typename BOOST_MPL_AUX_NA_PARAM(T1)
0016     , typename BOOST_MPL_AUX_NA_PARAM(T2)
0017     >
0018 struct inherit2
0019     : T1, T2
0020 {
0021     typedef inherit2 type;
0022     BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
0023 };
0024 
0025 template< typename T1 >
0026 struct inherit2< T1,empty_base >
0027 {
0028     typedef T1 type;
0029     BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
0030 };
0031 
0032 template< typename T2 >
0033 struct inherit2< empty_base,T2 >
0034 {
0035     typedef T2 type;
0036     BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
0037 };
0038 
0039 template<>
0040 struct inherit2< empty_base,empty_base >
0041 {
0042     typedef empty_base type;
0043     BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
0044 };
0045 
0046 BOOST_MPL_AUX_NA_SPEC(2, inherit2)
0047 
0048 template<
0049       typename T1 = na, typename T2 = na, typename T3 = na
0050     >
0051 struct inherit3
0052     : inherit2<
0053           typename inherit2<
0054               T1, T2
0055             >::type
0056         , T3
0057         >
0058 {
0059     BOOST_MPL_AUX_LAMBDA_SUPPORT(
0060           3
0061         , inherit3
0062         , ( T1, T2, T3)
0063         )
0064 };
0065 
0066 BOOST_MPL_AUX_NA_SPEC(3, inherit3)
0067 
0068 template<
0069       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
0070     >
0071 struct inherit4
0072     : inherit2<
0073           typename inherit3<
0074               T1, T2, T3
0075             >::type
0076         , T4
0077         >
0078 {
0079     BOOST_MPL_AUX_LAMBDA_SUPPORT(
0080           4
0081         , inherit4
0082         , ( T1, T2, T3, T4)
0083         )
0084 };
0085 
0086 BOOST_MPL_AUX_NA_SPEC(4, inherit4)
0087 
0088 template<
0089       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
0090     , typename T5 = na
0091     >
0092 struct inherit5
0093     : inherit2<
0094           typename inherit4<
0095               T1, T2, T3, T4
0096             >::type
0097         , T5
0098         >
0099 {
0100     BOOST_MPL_AUX_LAMBDA_SUPPORT(
0101           5
0102         , inherit5
0103         , ( T1, T2, T3, T4, T5)
0104         )
0105 };
0106 
0107 BOOST_MPL_AUX_NA_SPEC(5, inherit5)
0108 
0109 /// primary template
0110 
0111 template<
0112       typename T1 = empty_base, typename T2 = empty_base
0113     , typename T3 = empty_base, typename T4 = empty_base
0114     , typename T5 = empty_base
0115     >
0116 struct inherit
0117     : inherit5< T1,T2,T3,T4,T5 >
0118 {
0119 };
0120 
0121 template<>
0122 struct inherit< na,na,na,na,na >
0123 {
0124     template<
0125 
0126           typename T1, typename T2, typename T3, typename T4, typename T5
0127 
0128         >
0129     struct apply
0130         : inherit< T1,T2,T3,T4,T5 >
0131     {
0132     };
0133 };
0134 
0135 BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
0136 BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
0137 BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
0138 }}
0139