File indexing completed on 2025-01-18 09:41:03
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 namespace boost { namespace mpl {
0014
0015 namespace aux {
0016
0017 template<
0018 typename T, typename U1, typename U2, typename U3, typename U4
0019 , typename U5
0020 >
0021 struct resolve_bind_arg
0022 {
0023 typedef T type;
0024 };
0025
0026 template<
0027 typename T
0028 , typename Arg
0029 >
0030 struct replace_unnamed_arg
0031 {
0032 typedef Arg next;
0033 typedef T type;
0034 };
0035
0036 template<
0037 typename Arg
0038 >
0039 struct replace_unnamed_arg< arg< -1 >, Arg >
0040 {
0041 typedef typename Arg::next next;
0042 typedef Arg type;
0043 };
0044
0045 template<
0046 int N, typename U1, typename U2, typename U3, typename U4, typename U5
0047 >
0048 struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
0049 {
0050 typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
0051 };
0052
0053 }
0054
0055 template<
0056 typename F
0057 >
0058 struct bind0
0059 {
0060 template<
0061 typename U1 = na, typename U2 = na, typename U3 = na
0062 , typename U4 = na, typename U5 = na
0063 >
0064 struct apply
0065 {
0066 private:
0067 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0068 typedef typename r0::type a0;
0069 typedef typename r0::next n1;
0070 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0071
0072 public:
0073 typedef typename apply_wrap0<
0074 f_
0075 >::type type;
0076
0077 };
0078 };
0079
0080 namespace aux {
0081
0082 template<
0083 typename F, typename U1, typename U2, typename U3, typename U4
0084 , typename U5
0085 >
0086 struct resolve_bind_arg<
0087 bind0<F>, U1, U2, U3, U4, U5
0088 >
0089 {
0090 typedef bind0<F> f_;
0091 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0092 };
0093
0094 }
0095
0096 BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
0097 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
0098
0099 template<
0100 typename F, typename T1
0101 >
0102 struct bind1
0103 {
0104 template<
0105 typename U1 = na, typename U2 = na, typename U3 = na
0106 , typename U4 = na, typename U5 = na
0107 >
0108 struct apply
0109 {
0110 private:
0111 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0112 typedef typename r0::type a0;
0113 typedef typename r0::next n1;
0114 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0115
0116 typedef aux::replace_unnamed_arg< T1,n1 > r1;
0117 typedef typename r1::type a1;
0118 typedef typename r1::next n2;
0119 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0120
0121 public:
0122 typedef typename apply_wrap1<
0123 f_
0124 , typename t1::type
0125 >::type type;
0126
0127 };
0128 };
0129
0130 namespace aux {
0131
0132 template<
0133 typename F, typename T1, typename U1, typename U2, typename U3
0134 , typename U4, typename U5
0135 >
0136 struct resolve_bind_arg<
0137 bind1< F,T1 >, U1, U2, U3, U4, U5
0138 >
0139 {
0140 typedef bind1< F,T1 > f_;
0141 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0142 };
0143
0144 }
0145
0146 BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
0147 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
0148
0149 template<
0150 typename F, typename T1, typename T2
0151 >
0152 struct bind2
0153 {
0154 template<
0155 typename U1 = na, typename U2 = na, typename U3 = na
0156 , typename U4 = na, typename U5 = na
0157 >
0158 struct apply
0159 {
0160 private:
0161 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0162 typedef typename r0::type a0;
0163 typedef typename r0::next n1;
0164 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0165
0166 typedef aux::replace_unnamed_arg< T1,n1 > r1;
0167 typedef typename r1::type a1;
0168 typedef typename r1::next n2;
0169 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0170
0171 typedef aux::replace_unnamed_arg< T2,n2 > r2;
0172 typedef typename r2::type a2;
0173 typedef typename r2::next n3;
0174 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
0175
0176 public:
0177 typedef typename apply_wrap2<
0178 f_
0179 , typename t1::type, typename t2::type
0180 >::type type;
0181
0182 };
0183 };
0184
0185 namespace aux {
0186
0187 template<
0188 typename F, typename T1, typename T2, typename U1, typename U2
0189 , typename U3, typename U4, typename U5
0190 >
0191 struct resolve_bind_arg<
0192 bind2< F,T1,T2 >, U1, U2, U3, U4, U5
0193 >
0194 {
0195 typedef bind2< F,T1,T2 > f_;
0196 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0197 };
0198
0199 }
0200
0201 BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
0202 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
0203
0204 template<
0205 typename F, typename T1, typename T2, typename T3
0206 >
0207 struct bind3
0208 {
0209 template<
0210 typename U1 = na, typename U2 = na, typename U3 = na
0211 , typename U4 = na, typename U5 = na
0212 >
0213 struct apply
0214 {
0215 private:
0216 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0217 typedef typename r0::type a0;
0218 typedef typename r0::next n1;
0219 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0220
0221 typedef aux::replace_unnamed_arg< T1,n1 > r1;
0222 typedef typename r1::type a1;
0223 typedef typename r1::next n2;
0224 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0225
0226 typedef aux::replace_unnamed_arg< T2,n2 > r2;
0227 typedef typename r2::type a2;
0228 typedef typename r2::next n3;
0229 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
0230
0231 typedef aux::replace_unnamed_arg< T3,n3 > r3;
0232 typedef typename r3::type a3;
0233 typedef typename r3::next n4;
0234 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
0235
0236 public:
0237 typedef typename apply_wrap3<
0238 f_
0239 , typename t1::type, typename t2::type, typename t3::type
0240 >::type type;
0241
0242 };
0243 };
0244
0245 namespace aux {
0246
0247 template<
0248 typename F, typename T1, typename T2, typename T3, typename U1
0249 , typename U2, typename U3, typename U4, typename U5
0250 >
0251 struct resolve_bind_arg<
0252 bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
0253 >
0254 {
0255 typedef bind3< F,T1,T2,T3 > f_;
0256 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0257 };
0258
0259 }
0260
0261 BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
0262 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
0263
0264 template<
0265 typename F, typename T1, typename T2, typename T3, typename T4
0266 >
0267 struct bind4
0268 {
0269 template<
0270 typename U1 = na, typename U2 = na, typename U3 = na
0271 , typename U4 = na, typename U5 = na
0272 >
0273 struct apply
0274 {
0275 private:
0276 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0277 typedef typename r0::type a0;
0278 typedef typename r0::next n1;
0279 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0280
0281 typedef aux::replace_unnamed_arg< T1,n1 > r1;
0282 typedef typename r1::type a1;
0283 typedef typename r1::next n2;
0284 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0285
0286 typedef aux::replace_unnamed_arg< T2,n2 > r2;
0287 typedef typename r2::type a2;
0288 typedef typename r2::next n3;
0289 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
0290
0291 typedef aux::replace_unnamed_arg< T3,n3 > r3;
0292 typedef typename r3::type a3;
0293 typedef typename r3::next n4;
0294 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
0295
0296 typedef aux::replace_unnamed_arg< T4,n4 > r4;
0297 typedef typename r4::type a4;
0298 typedef typename r4::next n5;
0299 typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
0300
0301 public:
0302 typedef typename apply_wrap4<
0303 f_
0304 , typename t1::type, typename t2::type, typename t3::type
0305 , typename t4::type
0306 >::type type;
0307
0308 };
0309 };
0310
0311 namespace aux {
0312
0313 template<
0314 typename F, typename T1, typename T2, typename T3, typename T4
0315 , typename U1, typename U2, typename U3, typename U4, typename U5
0316 >
0317 struct resolve_bind_arg<
0318 bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
0319 >
0320 {
0321 typedef bind4< F,T1,T2,T3,T4 > f_;
0322 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0323 };
0324
0325 }
0326
0327 BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
0328 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
0329
0330 template<
0331 typename F, typename T1, typename T2, typename T3, typename T4
0332 , typename T5
0333 >
0334 struct bind5
0335 {
0336 template<
0337 typename U1 = na, typename U2 = na, typename U3 = na
0338 , typename U4 = na, typename U5 = na
0339 >
0340 struct apply
0341 {
0342 private:
0343 typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0344 typedef typename r0::type a0;
0345 typedef typename r0::next n1;
0346 typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0347
0348 typedef aux::replace_unnamed_arg< T1,n1 > r1;
0349 typedef typename r1::type a1;
0350 typedef typename r1::next n2;
0351 typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0352
0353 typedef aux::replace_unnamed_arg< T2,n2 > r2;
0354 typedef typename r2::type a2;
0355 typedef typename r2::next n3;
0356 typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
0357
0358 typedef aux::replace_unnamed_arg< T3,n3 > r3;
0359 typedef typename r3::type a3;
0360 typedef typename r3::next n4;
0361 typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
0362
0363 typedef aux::replace_unnamed_arg< T4,n4 > r4;
0364 typedef typename r4::type a4;
0365 typedef typename r4::next n5;
0366 typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
0367
0368 typedef aux::replace_unnamed_arg< T5,n5 > r5;
0369 typedef typename r5::type a5;
0370 typedef typename r5::next n6;
0371 typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
0372
0373 public:
0374 typedef typename apply_wrap5<
0375 f_
0376 , typename t1::type, typename t2::type, typename t3::type
0377 , typename t4::type, typename t5::type
0378 >::type type;
0379
0380 };
0381 };
0382
0383 namespace aux {
0384
0385 template<
0386 typename F, typename T1, typename T2, typename T3, typename T4
0387 , typename T5, typename U1, typename U2, typename U3, typename U4
0388 , typename U5
0389 >
0390 struct resolve_bind_arg<
0391 bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
0392 >
0393 {
0394 typedef bind5< F,T1,T2,T3,T4,T5 > f_;
0395 typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0396 };
0397
0398 }
0399
0400 BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
0401 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
0402 }}
0403