Back to home page

EIC code displayed by LXR

 
 

    


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

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 "boost/mpl/inherit.hpp" header
0010 // -- DO NOT modify by hand!
0011 
0012 namespace boost { namespace mpl {
0013 
0014 namespace aux {
0015 
0016 template< bool C1, bool C2 >
0017 struct inherit2_impl
0018 {
0019     template< typename Derived, typename T1, typename T2 > struct result_
0020         : T1, T2
0021     {
0022         typedef Derived type_;
0023     };
0024 };
0025 
0026 template<>
0027 struct inherit2_impl< false,true >
0028 {
0029     template< typename Derived, typename T1, typename T2 > struct result_
0030         : T1
0031     {
0032         typedef T1 type_;
0033     };
0034 };
0035 
0036 template<>
0037 struct inherit2_impl< true,false >
0038 {
0039     template< typename Derived, typename T1, typename T2 > struct result_
0040         : T2
0041     {
0042         typedef T2 type_;
0043     };
0044 };
0045 
0046 template<>
0047 struct inherit2_impl< true,true >
0048 {
0049     template< typename Derived, typename T1, typename T2 > struct result_
0050     {
0051         typedef T1 type_;
0052     };
0053 };
0054 
0055 } // namespace aux
0056 
0057 template<
0058       typename BOOST_MPL_AUX_NA_PARAM(T1)
0059     , typename BOOST_MPL_AUX_NA_PARAM(T2)
0060     >
0061 struct inherit2
0062     : aux::inherit2_impl<
0063           is_empty_base<T1>::value
0064         , is_empty_base<T2>::value
0065         >::template result_< inherit2< T1,T2 >,T1, T2 >
0066 {
0067     typedef typename inherit2::type_ type;
0068     BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
0069 };
0070 
0071 BOOST_MPL_AUX_NA_SPEC(2, inherit2)
0072 
0073 template<
0074       typename T1 = na, typename T2 = na, typename T3 = na
0075     >
0076 struct inherit3
0077     : inherit2<
0078           typename inherit2<
0079               T1, T2
0080             >::type
0081         , T3
0082         >
0083 {
0084     BOOST_MPL_AUX_LAMBDA_SUPPORT(
0085           3
0086         , inherit3
0087         , ( T1, T2, T3)
0088         )
0089 };
0090 
0091 BOOST_MPL_AUX_NA_SPEC(3, inherit3)
0092 
0093 template<
0094       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
0095     >
0096 struct inherit4
0097     : inherit2<
0098           typename inherit3<
0099               T1, T2, T3
0100             >::type
0101         , T4
0102         >
0103 {
0104     BOOST_MPL_AUX_LAMBDA_SUPPORT(
0105           4
0106         , inherit4
0107         , ( T1, T2, T3, T4)
0108         )
0109 };
0110 
0111 BOOST_MPL_AUX_NA_SPEC(4, inherit4)
0112 
0113 template<
0114       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
0115     , typename T5 = na
0116     >
0117 struct inherit5
0118     : inherit2<
0119           typename inherit4<
0120               T1, T2, T3, T4
0121             >::type
0122         , T5
0123         >
0124 {
0125     BOOST_MPL_AUX_LAMBDA_SUPPORT(
0126           5
0127         , inherit5
0128         , ( T1, T2, T3, T4, T5)
0129         )
0130 };
0131 
0132 BOOST_MPL_AUX_NA_SPEC(5, inherit5)
0133 
0134 /// primary template
0135 
0136 template<
0137       typename T1 = empty_base, typename T2 = empty_base
0138     , typename T3 = empty_base, typename T4 = empty_base
0139     , typename T5 = empty_base
0140     >
0141 struct inherit
0142     : inherit5< T1,T2,T3,T4,T5 >
0143 {
0144 };
0145 
0146 template<>
0147 struct inherit< na,na,na,na,na >
0148 {
0149     template<
0150 
0151           typename T1 = empty_base, typename T2 = empty_base
0152         , typename T3 = empty_base, typename T4 = empty_base
0153         , typename T5 = empty_base
0154 
0155         >
0156     struct apply
0157         : inherit< T1,T2,T3,T4,T5 >
0158     {
0159     };
0160 };
0161 
0162 BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
0163 BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
0164 BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
0165 }}
0166