File indexing completed on 2025-01-18 09:41:27
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 namespace boost { namespace mpl {
0013
0014 template<
0015 typename F
0016 >
0017 struct apply0
0018
0019 : apply_wrap0<
0020 typename lambda<F>::type
0021
0022 >
0023 {
0024 BOOST_MPL_AUX_LAMBDA_SUPPORT(
0025 1
0026 , apply0
0027 , (F )
0028 )
0029 };
0030
0031 namespace aux {
0032
0033 template<>
0034 struct apply_chooser<0>
0035 {
0036 template<
0037 typename F, typename T1, typename T2, typename T3, typename T4
0038 , typename T5
0039 >
0040 struct result_
0041 {
0042 typedef apply0<
0043 F
0044 > type;
0045 };
0046 };
0047
0048 }
0049
0050 template<
0051 typename F, typename T1
0052 >
0053 struct apply1
0054
0055 : apply_wrap1<
0056 typename lambda<F>::type
0057 , T1
0058 >
0059 {
0060 BOOST_MPL_AUX_LAMBDA_SUPPORT(
0061 2
0062 , apply1
0063 , (F, T1)
0064 )
0065 };
0066
0067 namespace aux {
0068
0069 template<>
0070 struct apply_chooser<1>
0071 {
0072 template<
0073 typename F, typename T1, typename T2, typename T3, typename T4
0074 , typename T5
0075 >
0076 struct result_
0077 {
0078 typedef apply1<
0079 F, T1
0080 > type;
0081 };
0082 };
0083
0084 }
0085
0086 template<
0087 typename F, typename T1, typename T2
0088 >
0089 struct apply2
0090
0091 : apply_wrap2<
0092 typename lambda<F>::type
0093 , T1, T2
0094 >
0095 {
0096 BOOST_MPL_AUX_LAMBDA_SUPPORT(
0097 3
0098 , apply2
0099 , (F, T1, T2)
0100 )
0101 };
0102
0103 namespace aux {
0104
0105 template<>
0106 struct apply_chooser<2>
0107 {
0108 template<
0109 typename F, typename T1, typename T2, typename T3, typename T4
0110 , typename T5
0111 >
0112 struct result_
0113 {
0114 typedef apply2<
0115 F, T1, T2
0116 > type;
0117 };
0118 };
0119
0120 }
0121
0122 template<
0123 typename F, typename T1, typename T2, typename T3
0124 >
0125 struct apply3
0126
0127 : apply_wrap3<
0128 typename lambda<F>::type
0129 , T1, T2, T3
0130 >
0131 {
0132 BOOST_MPL_AUX_LAMBDA_SUPPORT(
0133 4
0134 , apply3
0135 , (F, T1, T2, T3)
0136 )
0137 };
0138
0139 namespace aux {
0140
0141 template<>
0142 struct apply_chooser<3>
0143 {
0144 template<
0145 typename F, typename T1, typename T2, typename T3, typename T4
0146 , typename T5
0147 >
0148 struct result_
0149 {
0150 typedef apply3<
0151 F, T1, T2, T3
0152 > type;
0153 };
0154 };
0155
0156 }
0157
0158 template<
0159 typename F, typename T1, typename T2, typename T3, typename T4
0160 >
0161 struct apply4
0162
0163 : apply_wrap4<
0164 typename lambda<F>::type
0165 , T1, T2, T3, T4
0166 >
0167 {
0168 BOOST_MPL_AUX_LAMBDA_SUPPORT(
0169 5
0170 , apply4
0171 , (F, T1, T2, T3, T4)
0172 )
0173 };
0174
0175 namespace aux {
0176
0177 template<>
0178 struct apply_chooser<4>
0179 {
0180 template<
0181 typename F, typename T1, typename T2, typename T3, typename T4
0182 , typename T5
0183 >
0184 struct result_
0185 {
0186 typedef apply4<
0187 F, T1, T2, T3, T4
0188 > type;
0189 };
0190 };
0191
0192 }
0193
0194 template<
0195 typename F, typename T1, typename T2, typename T3, typename T4
0196 , typename T5
0197 >
0198 struct apply5
0199
0200 : apply_wrap5<
0201 typename lambda<F>::type
0202 , T1, T2, T3, T4, T5
0203 >
0204 {
0205 BOOST_MPL_AUX_LAMBDA_SUPPORT(
0206 6
0207 , apply5
0208 , (F, T1, T2, T3, T4, T5)
0209 )
0210 };
0211
0212 namespace aux {
0213
0214 template<>
0215 struct apply_chooser<5>
0216 {
0217 template<
0218 typename F, typename T1, typename T2, typename T3, typename T4
0219 , typename T5
0220 >
0221 struct result_
0222 {
0223 typedef apply5<
0224 F, T1, T2, T3, T4, T5
0225 > type;
0226 };
0227 };
0228
0229 }
0230
0231 namespace aux {
0232
0233 template< typename T >
0234 struct is_apply_arg
0235 {
0236 static bool const value = true;
0237 };
0238
0239 template<>
0240 struct is_apply_arg<na>
0241 {
0242 static bool const value = false;
0243 };
0244
0245 template<
0246 typename T1, typename T2, typename T3, typename T4, typename T5
0247 >
0248 struct apply_count_args
0249 {
0250 static int const value = is_apply_arg<T1>::value + is_apply_arg<T2>::value + is_apply_arg<T3>::value + is_apply_arg<T4>::value + is_apply_arg<T5>::value;
0251
0252 };
0253
0254 }
0255
0256 template<
0257 typename F, typename T1 = na, typename T2 = na, typename T3 = na
0258 , typename T4 = na, typename T5 = na
0259 >
0260 struct apply
0261 : aux::apply_chooser<
0262 aux::apply_count_args< T1,T2,T3,T4,T5 >::value
0263 >::template result_< F,T1,T2,T3,T4,T5 >::type
0264 {
0265 };
0266
0267 }}
0268