File indexing completed on 2025-01-18 09:41:17
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
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 }
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
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