00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 template<class R, class T BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf0)
00018 {
00019 public:
00020
00021 typedef R result_type;
00022 typedef T * argument_type;
00023
00024 private:
00025
00026 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) ())
00027 F f_;
00028
00029 template<class U> R call(U & u, T const *) const
00030 {
00031 BOOST_MEM_FN_RETURN (u.*f_)();
00032 }
00033
00034 template<class U> R call(U & u, void const *) const
00035 {
00036 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)();
00037 }
00038
00039 public:
00040
00041 explicit BOOST_MEM_FN_NAME(mf0)(F f): f_(f) {}
00042
00043 R operator()(T * p) const
00044 {
00045 BOOST_MEM_FN_RETURN (p->*f_)();
00046 }
00047
00048 template<class U> R operator()(U & u) const
00049 {
00050 BOOST_MEM_FN_RETURN call(u, &u);
00051 }
00052
00053 R operator()(T & t) const
00054 {
00055 BOOST_MEM_FN_RETURN (t.*f_)();
00056 }
00057
00058 bool operator==(BOOST_MEM_FN_NAME(mf0) const & rhs) const
00059 {
00060 return f_ == rhs.f_;
00061 }
00062
00063 bool operator!=(BOOST_MEM_FN_NAME(mf0) const & rhs) const
00064 {
00065 return f_ != rhs.f_;
00066 }
00067 };
00068
00069
00070
00071 template<class R, class T BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf0)
00072 {
00073 public:
00074
00075 typedef R result_type;
00076 typedef T const * argument_type;
00077
00078 private:
00079
00080 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) () const)
00081 F f_;
00082
00083 template<class U> R call(U & u, T const *) const
00084 {
00085 BOOST_MEM_FN_RETURN (u.*f_)();
00086 }
00087
00088 template<class U> R call(U & u, void const *) const
00089 {
00090 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)();
00091 }
00092
00093 public:
00094
00095 explicit BOOST_MEM_FN_NAME(cmf0)(F f): f_(f) {}
00096
00097 template<class U> R operator()(U const & u) const
00098 {
00099 BOOST_MEM_FN_RETURN call(u, &u);
00100 }
00101
00102 R operator()(T const & t) const
00103 {
00104 BOOST_MEM_FN_RETURN (t.*f_)();
00105 }
00106
00107 bool operator==(BOOST_MEM_FN_NAME(cmf0) const & rhs) const
00108 {
00109 return f_ == rhs.f_;
00110 }
00111
00112 bool operator!=(BOOST_MEM_FN_NAME(cmf0) const & rhs) const
00113 {
00114 return f_ != rhs.f_;
00115 }
00116 };
00117
00118
00119
00120 template<class R, class T, class A1 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf1)
00121 {
00122 public:
00123
00124 typedef R result_type;
00125 typedef T * first_argument_type;
00126 typedef A1 second_argument_type;
00127
00128 private:
00129
00130 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1))
00131 F f_;
00132
00133 template<class U, class B1> R call(U & u, T const *, B1 & b1) const
00134 {
00135 BOOST_MEM_FN_RETURN (u.*f_)(b1);
00136 }
00137
00138 template<class U, class B1> R call(U & u, void const *, B1 & b1) const
00139 {
00140 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1);
00141 }
00142
00143 public:
00144
00145 explicit BOOST_MEM_FN_NAME(mf1)(F f): f_(f) {}
00146
00147 R operator()(T * p, A1 a1) const
00148 {
00149 BOOST_MEM_FN_RETURN (p->*f_)(a1);
00150 }
00151
00152 template<class U> R operator()(U & u, A1 a1) const
00153 {
00154 BOOST_MEM_FN_RETURN call(u, &u, a1);
00155 }
00156
00157 R operator()(T & t, A1 a1) const
00158 {
00159 BOOST_MEM_FN_RETURN (t.*f_)(a1);
00160 }
00161
00162 bool operator==(BOOST_MEM_FN_NAME(mf1) const & rhs) const
00163 {
00164 return f_ == rhs.f_;
00165 }
00166
00167 bool operator!=(BOOST_MEM_FN_NAME(mf1) const & rhs) const
00168 {
00169 return f_ != rhs.f_;
00170 }
00171 };
00172
00173
00174
00175 template<class R, class T, class A1 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf1)
00176 {
00177 public:
00178
00179 typedef R result_type;
00180 typedef T const * first_argument_type;
00181 typedef A1 second_argument_type;
00182
00183 private:
00184
00185 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1) const)
00186 F f_;
00187
00188 template<class U, class B1> R call(U & u, T const *, B1 & b1) const
00189 {
00190 BOOST_MEM_FN_RETURN (u.*f_)(b1);
00191 }
00192
00193 template<class U, class B1> R call(U & u, void const *, B1 & b1) const
00194 {
00195 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1);
00196 }
00197
00198 public:
00199
00200 explicit BOOST_MEM_FN_NAME(cmf1)(F f): f_(f) {}
00201
00202 template<class U> R operator()(U const & u, A1 a1) const
00203 {
00204 BOOST_MEM_FN_RETURN call(u, &u, a1);
00205 }
00206
00207 R operator()(T const & t, A1 a1) const
00208 {
00209 BOOST_MEM_FN_RETURN (t.*f_)(a1);
00210 }
00211
00212 bool operator==(BOOST_MEM_FN_NAME(cmf1) const & rhs) const
00213 {
00214 return f_ == rhs.f_;
00215 }
00216
00217 bool operator!=(BOOST_MEM_FN_NAME(cmf1) const & rhs) const
00218 {
00219 return f_ != rhs.f_;
00220 }
00221 };
00222
00223
00224
00225 template<class R, class T, class A1, class A2 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf2)
00226 {
00227 public:
00228
00229 typedef R result_type;
00230
00231 private:
00232
00233 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2))
00234 F f_;
00235
00236 template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const
00237 {
00238 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2);
00239 }
00240
00241 template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const
00242 {
00243 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2);
00244 }
00245
00246 public:
00247
00248 explicit BOOST_MEM_FN_NAME(mf2)(F f): f_(f) {}
00249
00250 R operator()(T * p, A1 a1, A2 a2) const
00251 {
00252 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2);
00253 }
00254
00255 template<class U> R operator()(U & u, A1 a1, A2 a2) const
00256 {
00257 BOOST_MEM_FN_RETURN call(u, &u, a1, a2);
00258 }
00259
00260 R operator()(T & t, A1 a1, A2 a2) const
00261 {
00262 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2);
00263 }
00264
00265 bool operator==(BOOST_MEM_FN_NAME(mf2) const & rhs) const
00266 {
00267 return f_ == rhs.f_;
00268 }
00269
00270 bool operator!=(BOOST_MEM_FN_NAME(mf2) const & rhs) const
00271 {
00272 return f_ != rhs.f_;
00273 }
00274 };
00275
00276
00277
00278 template<class R, class T, class A1, class A2 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf2)
00279 {
00280 public:
00281
00282 typedef R result_type;
00283
00284 private:
00285
00286 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2) const)
00287 F f_;
00288
00289 template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const
00290 {
00291 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2);
00292 }
00293
00294 template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const
00295 {
00296 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2);
00297 }
00298
00299 public:
00300
00301 explicit BOOST_MEM_FN_NAME(cmf2)(F f): f_(f) {}
00302
00303 template<class U> R operator()(U const & u, A1 a1, A2 a2) const
00304 {
00305 BOOST_MEM_FN_RETURN call(u, &u, a1, a2);
00306 }
00307
00308 R operator()(T const & t, A1 a1, A2 a2) const
00309 {
00310 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2);
00311 }
00312
00313 bool operator==(BOOST_MEM_FN_NAME(cmf2) const & rhs) const
00314 {
00315 return f_ == rhs.f_;
00316 }
00317
00318 bool operator!=(BOOST_MEM_FN_NAME(cmf2) const & rhs) const
00319 {
00320 return f_ != rhs.f_;
00321 }
00322 };
00323
00324
00325
00326 template<class R, class T, class A1, class A2, class A3 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf3)
00327 {
00328 public:
00329
00330 typedef R result_type;
00331
00332 private:
00333
00334 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3))
00335 F f_;
00336
00337 template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const
00338 {
00339 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3);
00340 }
00341
00342 template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const
00343 {
00344 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3);
00345 }
00346
00347 public:
00348
00349 explicit BOOST_MEM_FN_NAME(mf3)(F f): f_(f) {}
00350
00351 R operator()(T * p, A1 a1, A2 a2, A3 a3) const
00352 {
00353 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3);
00354 }
00355
00356 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3) const
00357 {
00358 BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3);
00359 }
00360
00361 R operator()(T & t, A1 a1, A2 a2, A3 a3) const
00362 {
00363 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3);
00364 }
00365
00366 bool operator==(BOOST_MEM_FN_NAME(mf3) const & rhs) const
00367 {
00368 return f_ == rhs.f_;
00369 }
00370
00371 bool operator!=(BOOST_MEM_FN_NAME(mf3) const & rhs) const
00372 {
00373 return f_ != rhs.f_;
00374 }
00375 };
00376
00377
00378
00379 template<class R, class T, class A1, class A2, class A3 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf3)
00380 {
00381 public:
00382
00383 typedef R result_type;
00384
00385 private:
00386
00387 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3) const)
00388 F f_;
00389
00390 template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const
00391 {
00392 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3);
00393 }
00394
00395 template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const
00396 {
00397 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3);
00398 }
00399
00400 public:
00401
00402 explicit BOOST_MEM_FN_NAME(cmf3)(F f): f_(f) {}
00403
00404 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const
00405 {
00406 BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3);
00407 }
00408
00409 R operator()(T const & t, A1 a1, A2 a2, A3 a3) const
00410 {
00411 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3);
00412 }
00413
00414 bool operator==(BOOST_MEM_FN_NAME(cmf3) const & rhs) const
00415 {
00416 return f_ == rhs.f_;
00417 }
00418
00419 bool operator!=(BOOST_MEM_FN_NAME(cmf3) const & rhs) const
00420 {
00421 return f_ != rhs.f_;
00422 }
00423 };
00424
00425
00426
00427 template<class R, class T, class A1, class A2, class A3, class A4 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf4)
00428 {
00429 public:
00430
00431 typedef R result_type;
00432
00433 private:
00434
00435 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4))
00436 F f_;
00437
00438 template<class U, class B1, class B2, class B3, class B4> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
00439 {
00440 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4);
00441 }
00442
00443 template<class U, class B1, class B2, class B3, class B4> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
00444 {
00445 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4);
00446 }
00447
00448 public:
00449
00450 explicit BOOST_MEM_FN_NAME(mf4)(F f): f_(f) {}
00451
00452 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4) const
00453 {
00454 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4);
00455 }
00456
00457 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4) const
00458 {
00459 BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4);
00460 }
00461
00462 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4) const
00463 {
00464 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4);
00465 }
00466
00467 bool operator==(BOOST_MEM_FN_NAME(mf4) const & rhs) const
00468 {
00469 return f_ == rhs.f_;
00470 }
00471
00472 bool operator!=(BOOST_MEM_FN_NAME(mf4) const & rhs) const
00473 {
00474 return f_ != rhs.f_;
00475 }
00476 };
00477
00478
00479
00480 template<class R, class T, class A1, class A2, class A3, class A4 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf4)
00481 {
00482 public:
00483
00484 typedef R result_type;
00485
00486 private:
00487
00488 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4) const)
00489 F f_;
00490
00491 template<class U, class B1, class B2, class B3, class B4> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
00492 {
00493 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4);
00494 }
00495
00496 template<class U, class B1, class B2, class B3, class B4> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
00497 {
00498 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4);
00499 }
00500
00501 public:
00502
00503 explicit BOOST_MEM_FN_NAME(cmf4)(F f): f_(f) {}
00504
00505 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const
00506 {
00507 BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4);
00508 }
00509
00510 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4) const
00511 {
00512 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4);
00513 }
00514
00515 bool operator==(BOOST_MEM_FN_NAME(cmf4) const & rhs) const
00516 {
00517 return f_ == rhs.f_;
00518 }
00519
00520 bool operator!=(BOOST_MEM_FN_NAME(cmf4) const & rhs) const
00521 {
00522 return f_ != rhs.f_;
00523 }
00524 };
00525
00526
00527
00528 template<class R, class T, class A1, class A2, class A3, class A4, class A5 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf5)
00529 {
00530 public:
00531
00532 typedef R result_type;
00533
00534 private:
00535
00536 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5))
00537 F f_;
00538
00539 template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
00540 {
00541 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5);
00542 }
00543
00544 template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
00545 {
00546 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5);
00547 }
00548
00549 public:
00550
00551 explicit BOOST_MEM_FN_NAME(mf5)(F f): f_(f) {}
00552
00553 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
00554 {
00555 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5);
00556 }
00557
00558 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
00559 {
00560 BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5);
00561 }
00562
00563 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
00564 {
00565 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5);
00566 }
00567
00568 bool operator==(BOOST_MEM_FN_NAME(mf5) const & rhs) const
00569 {
00570 return f_ == rhs.f_;
00571 }
00572
00573 bool operator!=(BOOST_MEM_FN_NAME(mf5) const & rhs) const
00574 {
00575 return f_ != rhs.f_;
00576 }
00577 };
00578
00579
00580
00581 template<class R, class T, class A1, class A2, class A3, class A4, class A5 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf5)
00582 {
00583 public:
00584
00585 typedef R result_type;
00586
00587 private:
00588
00589 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5) const)
00590 F f_;
00591
00592 template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
00593 {
00594 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5);
00595 }
00596
00597 template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
00598 {
00599 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5);
00600 }
00601
00602 public:
00603
00604 explicit BOOST_MEM_FN_NAME(cmf5)(F f): f_(f) {}
00605
00606 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
00607 {
00608 BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5);
00609 }
00610
00611 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
00612 {
00613 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5);
00614 }
00615
00616 bool operator==(BOOST_MEM_FN_NAME(cmf5) const & rhs) const
00617 {
00618 return f_ == rhs.f_;
00619 }
00620
00621 bool operator!=(BOOST_MEM_FN_NAME(cmf5) const & rhs) const
00622 {
00623 return f_ != rhs.f_;
00624 }
00625 };
00626
00627
00628
00629 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf6)
00630 {
00631 public:
00632
00633 typedef R result_type;
00634
00635 private:
00636
00637 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6))
00638 F f_;
00639
00640 template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
00641 {
00642 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6);
00643 }
00644
00645 template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
00646 {
00647 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6);
00648 }
00649
00650 public:
00651
00652 explicit BOOST_MEM_FN_NAME(mf6)(F f): f_(f) {}
00653
00654 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
00655 {
00656 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6);
00657 }
00658
00659 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
00660 {
00661 BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6);
00662 }
00663
00664 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
00665 {
00666 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6);
00667 }
00668
00669 bool operator==(BOOST_MEM_FN_NAME(mf6) const & rhs) const
00670 {
00671 return f_ == rhs.f_;
00672 }
00673
00674 bool operator!=(BOOST_MEM_FN_NAME(mf6) const & rhs) const
00675 {
00676 return f_ != rhs.f_;
00677 }
00678 };
00679
00680
00681
00682 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf6)
00683 {
00684 public:
00685
00686 typedef R result_type;
00687
00688 private:
00689
00690 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6) const)
00691 F f_;
00692
00693 template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
00694 {
00695 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6);
00696 }
00697
00698 template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
00699 {
00700 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6);
00701 }
00702
00703 public:
00704
00705 explicit BOOST_MEM_FN_NAME(cmf6)(F f): f_(f) {}
00706
00707 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
00708 {
00709 BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6);
00710 }
00711
00712 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
00713 {
00714 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6);
00715 }
00716
00717 bool operator==(BOOST_MEM_FN_NAME(cmf6) const & rhs) const
00718 {
00719 return f_ == rhs.f_;
00720 }
00721
00722 bool operator!=(BOOST_MEM_FN_NAME(cmf6) const & rhs) const
00723 {
00724 return f_ != rhs.f_;
00725 }
00726 };
00727
00728
00729
00730 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf7)
00731 {
00732 public:
00733
00734 typedef R result_type;
00735
00736 private:
00737
00738 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7))
00739 F f_;
00740
00741 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
00742 {
00743 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7);
00744 }
00745
00746 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
00747 {
00748 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7);
00749 }
00750
00751 public:
00752
00753 explicit BOOST_MEM_FN_NAME(mf7)(F f): f_(f) {}
00754
00755 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
00756 {
00757 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7);
00758 }
00759
00760 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
00761 {
00762 BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7);
00763 }
00764
00765 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
00766 {
00767 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7);
00768 }
00769
00770 bool operator==(BOOST_MEM_FN_NAME(mf7) const & rhs) const
00771 {
00772 return f_ == rhs.f_;
00773 }
00774
00775 bool operator!=(BOOST_MEM_FN_NAME(mf7) const & rhs) const
00776 {
00777 return f_ != rhs.f_;
00778 }
00779 };
00780
00781
00782
00783 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf7)
00784 {
00785 public:
00786
00787 typedef R result_type;
00788
00789 private:
00790
00791 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7) const)
00792 F f_;
00793
00794 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
00795 {
00796 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7);
00797 }
00798
00799 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
00800 {
00801 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7);
00802 }
00803
00804 public:
00805
00806 explicit BOOST_MEM_FN_NAME(cmf7)(F f): f_(f) {}
00807
00808 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
00809 {
00810 BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7);
00811 }
00812
00813 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
00814 {
00815 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7);
00816 }
00817
00818 bool operator==(BOOST_MEM_FN_NAME(cmf7) const & rhs) const
00819 {
00820 return f_ == rhs.f_;
00821 }
00822
00823 bool operator!=(BOOST_MEM_FN_NAME(cmf7) const & rhs) const
00824 {
00825 return f_ != rhs.f_;
00826 }
00827 };
00828
00829
00830
00831 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf8)
00832 {
00833 public:
00834
00835 typedef R result_type;
00836
00837 private:
00838
00839 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8))
00840 F f_;
00841
00842 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
00843 {
00844 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
00845 }
00846
00847 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
00848 {
00849 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
00850 }
00851
00852 public:
00853
00854 explicit BOOST_MEM_FN_NAME(mf8)(F f): f_(f) {}
00855
00856 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
00857 {
00858 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
00859 }
00860
00861 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
00862 {
00863 BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7, a8);
00864 }
00865
00866 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
00867 {
00868 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
00869 }
00870
00871 bool operator==(BOOST_MEM_FN_NAME(mf8) const & rhs) const
00872 {
00873 return f_ == rhs.f_;
00874 }
00875
00876 bool operator!=(BOOST_MEM_FN_NAME(mf8) const & rhs) const
00877 {
00878 return f_ != rhs.f_;
00879 }
00880 };
00881
00882
00883
00884 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf8)
00885 {
00886 public:
00887
00888 typedef R result_type;
00889
00890 private:
00891
00892 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const)
00893 F f_;
00894
00895 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
00896 {
00897 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
00898 }
00899
00900 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
00901 {
00902 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
00903 }
00904
00905 public:
00906
00907 explicit BOOST_MEM_FN_NAME(cmf8)(F f): f_(f) {}
00908
00909 R operator()(T const * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
00910 {
00911 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
00912 }
00913
00914 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
00915 {
00916 BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7, a8);
00917 }
00918
00919 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
00920 {
00921 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
00922 }
00923
00924 bool operator==(BOOST_MEM_FN_NAME(cmf8) const & rhs) const
00925 {
00926 return f_ == rhs.f_;
00927 }
00928
00929 bool operator!=(BOOST_MEM_FN_NAME(cmf8) const & rhs) const
00930 {
00931 return f_ != rhs.f_;
00932 }
00933 };
00934