File indexing completed on 2025-02-23 09:48:23
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 template <>
0015 struct member_function_ptr_impl<1>
0016 {
0017 template <typename RT, typename FP>
0018 struct impl
0019 {
0020 typedef RT result_type;
0021 impl(FP fp_)
0022 : fp(fp_) {}
0023 template <typename Class, typename A0>
0024 RT operator()(Class& obj, A0 & a0) const
0025 {
0026 BOOST_PROTO_USE_GET_POINTER();
0027 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0028 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0);
0029 }
0030 template <typename Class, typename A0>
0031 RT operator()(Class* obj, A0 & a0) const
0032 {
0033 return (obj->*fp)(a0);
0034 }
0035 FP fp;
0036 };
0037 };
0038
0039
0040
0041
0042
0043
0044
0045 template <>
0046 struct member_function_ptr_impl<2>
0047 {
0048 template <typename RT, typename FP>
0049 struct impl
0050 {
0051 typedef RT result_type;
0052 impl(FP fp_)
0053 : fp(fp_) {}
0054 template <typename Class, typename A0 , typename A1>
0055 RT operator()(Class& obj, A0 & a0 , A1 & a1) const
0056 {
0057 BOOST_PROTO_USE_GET_POINTER();
0058 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0059 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1);
0060 }
0061 template <typename Class, typename A0 , typename A1>
0062 RT operator()(Class* obj, A0 & a0 , A1 & a1) const
0063 {
0064 return (obj->*fp)(a0 , a1);
0065 }
0066 FP fp;
0067 };
0068 };
0069
0070
0071
0072
0073
0074
0075
0076 template <>
0077 struct member_function_ptr_impl<3>
0078 {
0079 template <typename RT, typename FP>
0080 struct impl
0081 {
0082 typedef RT result_type;
0083 impl(FP fp_)
0084 : fp(fp_) {}
0085 template <typename Class, typename A0 , typename A1 , typename A2>
0086 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2) const
0087 {
0088 BOOST_PROTO_USE_GET_POINTER();
0089 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0090 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2);
0091 }
0092 template <typename Class, typename A0 , typename A1 , typename A2>
0093 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2) const
0094 {
0095 return (obj->*fp)(a0 , a1 , a2);
0096 }
0097 FP fp;
0098 };
0099 };
0100
0101
0102
0103
0104
0105
0106
0107 template <>
0108 struct member_function_ptr_impl<4>
0109 {
0110 template <typename RT, typename FP>
0111 struct impl
0112 {
0113 typedef RT result_type;
0114 impl(FP fp_)
0115 : fp(fp_) {}
0116 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3>
0117 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3) const
0118 {
0119 BOOST_PROTO_USE_GET_POINTER();
0120 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0121 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3);
0122 }
0123 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3>
0124 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3) const
0125 {
0126 return (obj->*fp)(a0 , a1 , a2 , a3);
0127 }
0128 FP fp;
0129 };
0130 };
0131
0132
0133
0134
0135
0136
0137
0138 template <>
0139 struct member_function_ptr_impl<5>
0140 {
0141 template <typename RT, typename FP>
0142 struct impl
0143 {
0144 typedef RT result_type;
0145 impl(FP fp_)
0146 : fp(fp_) {}
0147 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
0148 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4) const
0149 {
0150 BOOST_PROTO_USE_GET_POINTER();
0151 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0152 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4);
0153 }
0154 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
0155 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4) const
0156 {
0157 return (obj->*fp)(a0 , a1 , a2 , a3 , a4);
0158 }
0159 FP fp;
0160 };
0161 };
0162
0163
0164
0165
0166
0167
0168
0169 template <>
0170 struct member_function_ptr_impl<6>
0171 {
0172 template <typename RT, typename FP>
0173 struct impl
0174 {
0175 typedef RT result_type;
0176 impl(FP fp_)
0177 : fp(fp_) {}
0178 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
0179 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5) const
0180 {
0181 BOOST_PROTO_USE_GET_POINTER();
0182 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0183 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5);
0184 }
0185 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
0186 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5) const
0187 {
0188 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5);
0189 }
0190 FP fp;
0191 };
0192 };
0193
0194
0195
0196
0197
0198
0199
0200 template <>
0201 struct member_function_ptr_impl<7>
0202 {
0203 template <typename RT, typename FP>
0204 struct impl
0205 {
0206 typedef RT result_type;
0207 impl(FP fp_)
0208 : fp(fp_) {}
0209 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
0210 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6) const
0211 {
0212 BOOST_PROTO_USE_GET_POINTER();
0213 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0214 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6);
0215 }
0216 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
0217 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6) const
0218 {
0219 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6);
0220 }
0221 FP fp;
0222 };
0223 };
0224
0225
0226
0227
0228
0229
0230
0231 template <>
0232 struct member_function_ptr_impl<8>
0233 {
0234 template <typename RT, typename FP>
0235 struct impl
0236 {
0237 typedef RT result_type;
0238 impl(FP fp_)
0239 : fp(fp_) {}
0240 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
0241 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7) const
0242 {
0243 BOOST_PROTO_USE_GET_POINTER();
0244 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0245 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
0246 }
0247 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
0248 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7) const
0249 {
0250 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
0251 }
0252 FP fp;
0253 };
0254 };
0255
0256
0257
0258
0259
0260
0261
0262 template <>
0263 struct member_function_ptr_impl<9>
0264 {
0265 template <typename RT, typename FP>
0266 struct impl
0267 {
0268 typedef RT result_type;
0269 impl(FP fp_)
0270 : fp(fp_) {}
0271 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
0272 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8) const
0273 {
0274 BOOST_PROTO_USE_GET_POINTER();
0275 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0276 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
0277 }
0278 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
0279 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8) const
0280 {
0281 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
0282 }
0283 FP fp;
0284 };
0285 };
0286
0287
0288
0289
0290
0291
0292
0293 template <>
0294 struct member_function_ptr_impl<10>
0295 {
0296 template <typename RT, typename FP>
0297 struct impl
0298 {
0299 typedef RT result_type;
0300 impl(FP fp_)
0301 : fp(fp_) {}
0302 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
0303 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9) const
0304 {
0305 BOOST_PROTO_USE_GET_POINTER();
0306 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0307 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
0308 }
0309 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
0310 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9) const
0311 {
0312 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
0313 }
0314 FP fp;
0315 };
0316 };
0317
0318
0319
0320
0321
0322
0323
0324 template <>
0325 struct member_function_ptr_impl<11>
0326 {
0327 template <typename RT, typename FP>
0328 struct impl
0329 {
0330 typedef RT result_type;
0331 impl(FP fp_)
0332 : fp(fp_) {}
0333 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
0334 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10) const
0335 {
0336 BOOST_PROTO_USE_GET_POINTER();
0337 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0338 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
0339 }
0340 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
0341 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10) const
0342 {
0343 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
0344 }
0345 FP fp;
0346 };
0347 };
0348
0349
0350
0351
0352
0353
0354
0355 template <>
0356 struct member_function_ptr_impl<12>
0357 {
0358 template <typename RT, typename FP>
0359 struct impl
0360 {
0361 typedef RT result_type;
0362 impl(FP fp_)
0363 : fp(fp_) {}
0364 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
0365 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11) const
0366 {
0367 BOOST_PROTO_USE_GET_POINTER();
0368 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0369 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
0370 }
0371 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
0372 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11) const
0373 {
0374 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
0375 }
0376 FP fp;
0377 };
0378 };
0379
0380
0381
0382
0383
0384
0385
0386 template <>
0387 struct member_function_ptr_impl<13>
0388 {
0389 template <typename RT, typename FP>
0390 struct impl
0391 {
0392 typedef RT result_type;
0393 impl(FP fp_)
0394 : fp(fp_) {}
0395 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
0396 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12) const
0397 {
0398 BOOST_PROTO_USE_GET_POINTER();
0399 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0400 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
0401 }
0402 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
0403 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12) const
0404 {
0405 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
0406 }
0407 FP fp;
0408 };
0409 };
0410
0411
0412
0413
0414
0415
0416
0417 template <>
0418 struct member_function_ptr_impl<14>
0419 {
0420 template <typename RT, typename FP>
0421 struct impl
0422 {
0423 typedef RT result_type;
0424 impl(FP fp_)
0425 : fp(fp_) {}
0426 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
0427 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13) const
0428 {
0429 BOOST_PROTO_USE_GET_POINTER();
0430 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0431 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
0432 }
0433 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
0434 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13) const
0435 {
0436 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
0437 }
0438 FP fp;
0439 };
0440 };
0441
0442
0443
0444
0445
0446
0447
0448 template <>
0449 struct member_function_ptr_impl<15>
0450 {
0451 template <typename RT, typename FP>
0452 struct impl
0453 {
0454 typedef RT result_type;
0455 impl(FP fp_)
0456 : fp(fp_) {}
0457 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
0458 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14) const
0459 {
0460 BOOST_PROTO_USE_GET_POINTER();
0461 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0462 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
0463 }
0464 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
0465 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14) const
0466 {
0467 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
0468 }
0469 FP fp;
0470 };
0471 };
0472
0473
0474
0475
0476
0477
0478
0479 template <>
0480 struct member_function_ptr_impl<16>
0481 {
0482 template <typename RT, typename FP>
0483 struct impl
0484 {
0485 typedef RT result_type;
0486 impl(FP fp_)
0487 : fp(fp_) {}
0488 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
0489 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15) const
0490 {
0491 BOOST_PROTO_USE_GET_POINTER();
0492 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0493 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
0494 }
0495 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
0496 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15) const
0497 {
0498 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
0499 }
0500 FP fp;
0501 };
0502 };
0503
0504
0505
0506
0507
0508
0509
0510 template <>
0511 struct member_function_ptr_impl<17>
0512 {
0513 template <typename RT, typename FP>
0514 struct impl
0515 {
0516 typedef RT result_type;
0517 impl(FP fp_)
0518 : fp(fp_) {}
0519 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
0520 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16) const
0521 {
0522 BOOST_PROTO_USE_GET_POINTER();
0523 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0524 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
0525 }
0526 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
0527 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16) const
0528 {
0529 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
0530 }
0531 FP fp;
0532 };
0533 };
0534
0535
0536
0537
0538
0539
0540
0541 template <>
0542 struct member_function_ptr_impl<18>
0543 {
0544 template <typename RT, typename FP>
0545 struct impl
0546 {
0547 typedef RT result_type;
0548 impl(FP fp_)
0549 : fp(fp_) {}
0550 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
0551 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17) const
0552 {
0553 BOOST_PROTO_USE_GET_POINTER();
0554 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0555 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
0556 }
0557 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
0558 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17) const
0559 {
0560 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
0561 }
0562 FP fp;
0563 };
0564 };
0565
0566
0567
0568
0569
0570
0571
0572 template <>
0573 struct member_function_ptr_impl<19>
0574 {
0575 template <typename RT, typename FP>
0576 struct impl
0577 {
0578 typedef RT result_type;
0579 impl(FP fp_)
0580 : fp(fp_) {}
0581 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
0582 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18) const
0583 {
0584 BOOST_PROTO_USE_GET_POINTER();
0585 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0586 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
0587 }
0588 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
0589 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18) const
0590 {
0591 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
0592 }
0593 FP fp;
0594 };
0595 };
0596
0597
0598
0599
0600
0601
0602
0603 template <>
0604 struct member_function_ptr_impl<20>
0605 {
0606 template <typename RT, typename FP>
0607 struct impl
0608 {
0609 typedef RT result_type;
0610 impl(FP fp_)
0611 : fp(fp_) {}
0612 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
0613 RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19) const
0614 {
0615 BOOST_PROTO_USE_GET_POINTER();
0616 typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
0617 return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
0618 }
0619 template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
0620 RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19) const
0621 {
0622 return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
0623 }
0624 FP fp;
0625 };
0626 };