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