1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/epoc32/include/stdapis/boost/bind/mem_fn_template.hpp Tue Mar 16 16:12:26 2010 +0000
1.3 @@ -0,0 +1,1020 @@
1.4 +//
1.5 +// bind/mem_fn_template.hpp
1.6 +//
1.7 +// Do not include this header directly
1.8 +//
1.9 +// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
1.10 +//
1.11 +// Distributed under the Boost Software License, Version 1.0. (See
1.12 +// accompanying file LICENSE_1_0.txt or copy at
1.13 +// http://www.boost.org/LICENSE_1_0.txt)
1.14 +//
1.15 +// See http://www.boost.org/libs/bind/mem_fn.html for documentation.
1.16 +//
1.17 +
1.18 +#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
1.19 +# define BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
1.20 +#endif
1.21 +
1.22 +// mf0
1.23 +
1.24 +template<class R, class T BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf0)
1.25 +{
1.26 +public:
1.27 +
1.28 + typedef R result_type;
1.29 + typedef T * argument_type;
1.30 +
1.31 +private:
1.32 +
1.33 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) ())
1.34 + F f_;
1.35 +
1.36 + template<class U> R call(U & u, T const *) const
1.37 + {
1.38 + BOOST_MEM_FN_RETURN (u.*f_)();
1.39 + }
1.40 +
1.41 + template<class U> R call(U & u, void const *) const
1.42 + {
1.43 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)();
1.44 + }
1.45 +
1.46 +public:
1.47 +
1.48 + explicit BOOST_MEM_FN_NAME(mf0)(F f): f_(f) {}
1.49 +
1.50 + R operator()(T * p) const
1.51 + {
1.52 + BOOST_MEM_FN_RETURN (p->*f_)();
1.53 + }
1.54 +
1.55 + template<class U> R operator()(U & u) const
1.56 + {
1.57 + BOOST_MEM_FN_RETURN call(u, &u);
1.58 + }
1.59 +
1.60 +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
1.61 +
1.62 + template<class U> R operator()(U const & u) const
1.63 + {
1.64 + BOOST_MEM_FN_RETURN call(u, &u);
1.65 + }
1.66 +
1.67 +#endif
1.68 +
1.69 + R operator()(T & t) const
1.70 + {
1.71 + BOOST_MEM_FN_RETURN (t.*f_)();
1.72 + }
1.73 +
1.74 + bool operator==(BOOST_MEM_FN_NAME(mf0) const & rhs) const
1.75 + {
1.76 + return f_ == rhs.f_;
1.77 + }
1.78 +
1.79 + bool operator!=(BOOST_MEM_FN_NAME(mf0) const & rhs) const
1.80 + {
1.81 + return f_ != rhs.f_;
1.82 + }
1.83 +};
1.84 +
1.85 +// cmf0
1.86 +
1.87 +template<class R, class T BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf0)
1.88 +{
1.89 +public:
1.90 +
1.91 + typedef R result_type;
1.92 + typedef T const * argument_type;
1.93 +
1.94 +private:
1.95 +
1.96 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) () const)
1.97 + F f_;
1.98 +
1.99 + template<class U> R call(U & u, T const *) const
1.100 + {
1.101 + BOOST_MEM_FN_RETURN (u.*f_)();
1.102 + }
1.103 +
1.104 + template<class U> R call(U & u, void const *) const
1.105 + {
1.106 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)();
1.107 + }
1.108 +
1.109 +public:
1.110 +
1.111 + explicit BOOST_MEM_FN_NAME(cmf0)(F f): f_(f) {}
1.112 +
1.113 + template<class U> R operator()(U const & u) const
1.114 + {
1.115 + BOOST_MEM_FN_RETURN call(u, &u);
1.116 + }
1.117 +
1.118 + R operator()(T const & t) const
1.119 + {
1.120 + BOOST_MEM_FN_RETURN (t.*f_)();
1.121 + }
1.122 +
1.123 + bool operator==(BOOST_MEM_FN_NAME(cmf0) const & rhs) const
1.124 + {
1.125 + return f_ == rhs.f_;
1.126 + }
1.127 +
1.128 + bool operator!=(BOOST_MEM_FN_NAME(cmf0) const & rhs) const
1.129 + {
1.130 + return f_ != rhs.f_;
1.131 + }
1.132 +};
1.133 +
1.134 +// mf1
1.135 +
1.136 +template<class R, class T, class A1 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf1)
1.137 +{
1.138 +public:
1.139 +
1.140 + typedef R result_type;
1.141 + typedef T * first_argument_type;
1.142 + typedef A1 second_argument_type;
1.143 +
1.144 +private:
1.145 +
1.146 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1))
1.147 + F f_;
1.148 +
1.149 + template<class U, class B1> R call(U & u, T const *, B1 & b1) const
1.150 + {
1.151 + BOOST_MEM_FN_RETURN (u.*f_)(b1);
1.152 + }
1.153 +
1.154 + template<class U, class B1> R call(U & u, void const *, B1 & b1) const
1.155 + {
1.156 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1);
1.157 + }
1.158 +
1.159 +public:
1.160 +
1.161 + explicit BOOST_MEM_FN_NAME(mf1)(F f): f_(f) {}
1.162 +
1.163 + R operator()(T * p, A1 a1) const
1.164 + {
1.165 + BOOST_MEM_FN_RETURN (p->*f_)(a1);
1.166 + }
1.167 +
1.168 + template<class U> R operator()(U & u, A1 a1) const
1.169 + {
1.170 + BOOST_MEM_FN_RETURN call(u, &u, a1);
1.171 + }
1.172 +
1.173 +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
1.174 +
1.175 + template<class U> R operator()(U const & u, A1 a1) const
1.176 + {
1.177 + BOOST_MEM_FN_RETURN call(u, &u, a1);
1.178 + }
1.179 +
1.180 +#endif
1.181 +
1.182 + R operator()(T & t, A1 a1) const
1.183 + {
1.184 + BOOST_MEM_FN_RETURN (t.*f_)(a1);
1.185 + }
1.186 +
1.187 + bool operator==(BOOST_MEM_FN_NAME(mf1) const & rhs) const
1.188 + {
1.189 + return f_ == rhs.f_;
1.190 + }
1.191 +
1.192 + bool operator!=(BOOST_MEM_FN_NAME(mf1) const & rhs) const
1.193 + {
1.194 + return f_ != rhs.f_;
1.195 + }
1.196 +};
1.197 +
1.198 +// cmf1
1.199 +
1.200 +template<class R, class T, class A1 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf1)
1.201 +{
1.202 +public:
1.203 +
1.204 + typedef R result_type;
1.205 + typedef T const * first_argument_type;
1.206 + typedef A1 second_argument_type;
1.207 +
1.208 +private:
1.209 +
1.210 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1) const)
1.211 + F f_;
1.212 +
1.213 + template<class U, class B1> R call(U & u, T const *, B1 & b1) const
1.214 + {
1.215 + BOOST_MEM_FN_RETURN (u.*f_)(b1);
1.216 + }
1.217 +
1.218 + template<class U, class B1> R call(U & u, void const *, B1 & b1) const
1.219 + {
1.220 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1);
1.221 + }
1.222 +
1.223 +public:
1.224 +
1.225 + explicit BOOST_MEM_FN_NAME(cmf1)(F f): f_(f) {}
1.226 +
1.227 + template<class U> R operator()(U const & u, A1 a1) const
1.228 + {
1.229 + BOOST_MEM_FN_RETURN call(u, &u, a1);
1.230 + }
1.231 +
1.232 + R operator()(T const & t, A1 a1) const
1.233 + {
1.234 + BOOST_MEM_FN_RETURN (t.*f_)(a1);
1.235 + }
1.236 +
1.237 + bool operator==(BOOST_MEM_FN_NAME(cmf1) const & rhs) const
1.238 + {
1.239 + return f_ == rhs.f_;
1.240 + }
1.241 +
1.242 + bool operator!=(BOOST_MEM_FN_NAME(cmf1) const & rhs) const
1.243 + {
1.244 + return f_ != rhs.f_;
1.245 + }
1.246 +};
1.247 +
1.248 +// mf2
1.249 +
1.250 +template<class R, class T, class A1, class A2 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf2)
1.251 +{
1.252 +public:
1.253 +
1.254 + typedef R result_type;
1.255 +
1.256 +private:
1.257 +
1.258 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2))
1.259 + F f_;
1.260 +
1.261 + template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const
1.262 + {
1.263 + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2);
1.264 + }
1.265 +
1.266 + template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const
1.267 + {
1.268 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2);
1.269 + }
1.270 +
1.271 +public:
1.272 +
1.273 + explicit BOOST_MEM_FN_NAME(mf2)(F f): f_(f) {}
1.274 +
1.275 + R operator()(T * p, A1 a1, A2 a2) const
1.276 + {
1.277 + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2);
1.278 + }
1.279 +
1.280 + template<class U> R operator()(U & u, A1 a1, A2 a2) const
1.281 + {
1.282 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2);
1.283 + }
1.284 +
1.285 +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
1.286 +
1.287 + template<class U> R operator()(U const & u, A1 a1, A2 a2) const
1.288 + {
1.289 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2);
1.290 + }
1.291 +
1.292 +#endif
1.293 +
1.294 + R operator()(T & t, A1 a1, A2 a2) const
1.295 + {
1.296 + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2);
1.297 + }
1.298 +
1.299 + bool operator==(BOOST_MEM_FN_NAME(mf2) const & rhs) const
1.300 + {
1.301 + return f_ == rhs.f_;
1.302 + }
1.303 +
1.304 + bool operator!=(BOOST_MEM_FN_NAME(mf2) const & rhs) const
1.305 + {
1.306 + return f_ != rhs.f_;
1.307 + }
1.308 +};
1.309 +
1.310 +// cmf2
1.311 +
1.312 +template<class R, class T, class A1, class A2 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf2)
1.313 +{
1.314 +public:
1.315 +
1.316 + typedef R result_type;
1.317 +
1.318 +private:
1.319 +
1.320 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2) const)
1.321 + F f_;
1.322 +
1.323 + template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const
1.324 + {
1.325 + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2);
1.326 + }
1.327 +
1.328 + template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const
1.329 + {
1.330 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2);
1.331 + }
1.332 +
1.333 +public:
1.334 +
1.335 + explicit BOOST_MEM_FN_NAME(cmf2)(F f): f_(f) {}
1.336 +
1.337 + template<class U> R operator()(U const & u, A1 a1, A2 a2) const
1.338 + {
1.339 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2);
1.340 + }
1.341 +
1.342 + R operator()(T const & t, A1 a1, A2 a2) const
1.343 + {
1.344 + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2);
1.345 + }
1.346 +
1.347 + bool operator==(BOOST_MEM_FN_NAME(cmf2) const & rhs) const
1.348 + {
1.349 + return f_ == rhs.f_;
1.350 + }
1.351 +
1.352 + bool operator!=(BOOST_MEM_FN_NAME(cmf2) const & rhs) const
1.353 + {
1.354 + return f_ != rhs.f_;
1.355 + }
1.356 +};
1.357 +
1.358 +// mf3
1.359 +
1.360 +template<class R, class T, class A1, class A2, class A3 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf3)
1.361 +{
1.362 +public:
1.363 +
1.364 + typedef R result_type;
1.365 +
1.366 +private:
1.367 +
1.368 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3))
1.369 + F f_;
1.370 +
1.371 + template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const
1.372 + {
1.373 + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3);
1.374 + }
1.375 +
1.376 + template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const
1.377 + {
1.378 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3);
1.379 + }
1.380 +
1.381 +public:
1.382 +
1.383 + explicit BOOST_MEM_FN_NAME(mf3)(F f): f_(f) {}
1.384 +
1.385 + R operator()(T * p, A1 a1, A2 a2, A3 a3) const
1.386 + {
1.387 + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3);
1.388 + }
1.389 +
1.390 + template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3) const
1.391 + {
1.392 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3);
1.393 + }
1.394 +
1.395 +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
1.396 +
1.397 + template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const
1.398 + {
1.399 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3);
1.400 + }
1.401 +
1.402 +#endif
1.403 +
1.404 + R operator()(T & t, A1 a1, A2 a2, A3 a3) const
1.405 + {
1.406 + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3);
1.407 + }
1.408 +
1.409 + bool operator==(BOOST_MEM_FN_NAME(mf3) const & rhs) const
1.410 + {
1.411 + return f_ == rhs.f_;
1.412 + }
1.413 +
1.414 + bool operator!=(BOOST_MEM_FN_NAME(mf3) const & rhs) const
1.415 + {
1.416 + return f_ != rhs.f_;
1.417 + }
1.418 +};
1.419 +
1.420 +// cmf3
1.421 +
1.422 +template<class R, class T, class A1, class A2, class A3 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf3)
1.423 +{
1.424 +public:
1.425 +
1.426 + typedef R result_type;
1.427 +
1.428 +private:
1.429 +
1.430 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3) const)
1.431 + F f_;
1.432 +
1.433 + template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const
1.434 + {
1.435 + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3);
1.436 + }
1.437 +
1.438 + template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const
1.439 + {
1.440 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3);
1.441 + }
1.442 +
1.443 +public:
1.444 +
1.445 + explicit BOOST_MEM_FN_NAME(cmf3)(F f): f_(f) {}
1.446 +
1.447 + template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const
1.448 + {
1.449 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3);
1.450 + }
1.451 +
1.452 + R operator()(T const & t, A1 a1, A2 a2, A3 a3) const
1.453 + {
1.454 + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3);
1.455 + }
1.456 +
1.457 + bool operator==(BOOST_MEM_FN_NAME(cmf3) const & rhs) const
1.458 + {
1.459 + return f_ == rhs.f_;
1.460 + }
1.461 +
1.462 + bool operator!=(BOOST_MEM_FN_NAME(cmf3) const & rhs) const
1.463 + {
1.464 + return f_ != rhs.f_;
1.465 + }
1.466 +};
1.467 +
1.468 +// mf4
1.469 +
1.470 +template<class R, class T, class A1, class A2, class A3, class A4 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf4)
1.471 +{
1.472 +public:
1.473 +
1.474 + typedef R result_type;
1.475 +
1.476 +private:
1.477 +
1.478 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4))
1.479 + F f_;
1.480 +
1.481 + 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
1.482 + {
1.483 + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4);
1.484 + }
1.485 +
1.486 + 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
1.487 + {
1.488 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4);
1.489 + }
1.490 +
1.491 +public:
1.492 +
1.493 + explicit BOOST_MEM_FN_NAME(mf4)(F f): f_(f) {}
1.494 +
1.495 + R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4) const
1.496 + {
1.497 + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4);
1.498 + }
1.499 +
1.500 + template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4) const
1.501 + {
1.502 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4);
1.503 + }
1.504 +
1.505 +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
1.506 +
1.507 + template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const
1.508 + {
1.509 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4);
1.510 + }
1.511 +
1.512 +#endif
1.513 +
1.514 + R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4) const
1.515 + {
1.516 + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4);
1.517 + }
1.518 +
1.519 + bool operator==(BOOST_MEM_FN_NAME(mf4) const & rhs) const
1.520 + {
1.521 + return f_ == rhs.f_;
1.522 + }
1.523 +
1.524 + bool operator!=(BOOST_MEM_FN_NAME(mf4) const & rhs) const
1.525 + {
1.526 + return f_ != rhs.f_;
1.527 + }
1.528 +};
1.529 +
1.530 +// cmf4
1.531 +
1.532 +template<class R, class T, class A1, class A2, class A3, class A4 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf4)
1.533 +{
1.534 +public:
1.535 +
1.536 + typedef R result_type;
1.537 +
1.538 +private:
1.539 +
1.540 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4) const)
1.541 + F f_;
1.542 +
1.543 + 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
1.544 + {
1.545 + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4);
1.546 + }
1.547 +
1.548 + 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
1.549 + {
1.550 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4);
1.551 + }
1.552 +
1.553 +public:
1.554 +
1.555 + explicit BOOST_MEM_FN_NAME(cmf4)(F f): f_(f) {}
1.556 +
1.557 + template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const
1.558 + {
1.559 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4);
1.560 + }
1.561 +
1.562 + R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4) const
1.563 + {
1.564 + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4);
1.565 + }
1.566 +
1.567 + bool operator==(BOOST_MEM_FN_NAME(cmf4) const & rhs) const
1.568 + {
1.569 + return f_ == rhs.f_;
1.570 + }
1.571 +
1.572 + bool operator!=(BOOST_MEM_FN_NAME(cmf4) const & rhs) const
1.573 + {
1.574 + return f_ != rhs.f_;
1.575 + }
1.576 +};
1.577 +
1.578 +// mf5
1.579 +
1.580 +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)
1.581 +{
1.582 +public:
1.583 +
1.584 + typedef R result_type;
1.585 +
1.586 +private:
1.587 +
1.588 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5))
1.589 + F f_;
1.590 +
1.591 + 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
1.592 + {
1.593 + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5);
1.594 + }
1.595 +
1.596 + 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
1.597 + {
1.598 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5);
1.599 + }
1.600 +
1.601 +public:
1.602 +
1.603 + explicit BOOST_MEM_FN_NAME(mf5)(F f): f_(f) {}
1.604 +
1.605 + R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
1.606 + {
1.607 + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5);
1.608 + }
1.609 +
1.610 + template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
1.611 + {
1.612 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5);
1.613 + }
1.614 +
1.615 +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
1.616 +
1.617 + template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
1.618 + {
1.619 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5);
1.620 + }
1.621 +
1.622 +#endif
1.623 +
1.624 + R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
1.625 + {
1.626 + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5);
1.627 + }
1.628 +
1.629 + bool operator==(BOOST_MEM_FN_NAME(mf5) const & rhs) const
1.630 + {
1.631 + return f_ == rhs.f_;
1.632 + }
1.633 +
1.634 + bool operator!=(BOOST_MEM_FN_NAME(mf5) const & rhs) const
1.635 + {
1.636 + return f_ != rhs.f_;
1.637 + }
1.638 +};
1.639 +
1.640 +// cmf5
1.641 +
1.642 +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)
1.643 +{
1.644 +public:
1.645 +
1.646 + typedef R result_type;
1.647 +
1.648 +private:
1.649 +
1.650 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5) const)
1.651 + F f_;
1.652 +
1.653 + 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
1.654 + {
1.655 + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5);
1.656 + }
1.657 +
1.658 + 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
1.659 + {
1.660 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5);
1.661 + }
1.662 +
1.663 +public:
1.664 +
1.665 + explicit BOOST_MEM_FN_NAME(cmf5)(F f): f_(f) {}
1.666 +
1.667 + template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
1.668 + {
1.669 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5);
1.670 + }
1.671 +
1.672 + R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
1.673 + {
1.674 + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5);
1.675 + }
1.676 +
1.677 + bool operator==(BOOST_MEM_FN_NAME(cmf5) const & rhs) const
1.678 + {
1.679 + return f_ == rhs.f_;
1.680 + }
1.681 +
1.682 + bool operator!=(BOOST_MEM_FN_NAME(cmf5) const & rhs) const
1.683 + {
1.684 + return f_ != rhs.f_;
1.685 + }
1.686 +};
1.687 +
1.688 +// mf6
1.689 +
1.690 +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)
1.691 +{
1.692 +public:
1.693 +
1.694 + typedef R result_type;
1.695 +
1.696 +private:
1.697 +
1.698 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6))
1.699 + F f_;
1.700 +
1.701 + 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
1.702 + {
1.703 + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6);
1.704 + }
1.705 +
1.706 + 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
1.707 + {
1.708 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6);
1.709 + }
1.710 +
1.711 +public:
1.712 +
1.713 + explicit BOOST_MEM_FN_NAME(mf6)(F f): f_(f) {}
1.714 +
1.715 + R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
1.716 + {
1.717 + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6);
1.718 + }
1.719 +
1.720 + template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
1.721 + {
1.722 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6);
1.723 + }
1.724 +
1.725 +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
1.726 +
1.727 + template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
1.728 + {
1.729 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6);
1.730 + }
1.731 +
1.732 +#endif
1.733 +
1.734 + R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
1.735 + {
1.736 + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6);
1.737 + }
1.738 +
1.739 + bool operator==(BOOST_MEM_FN_NAME(mf6) const & rhs) const
1.740 + {
1.741 + return f_ == rhs.f_;
1.742 + }
1.743 +
1.744 + bool operator!=(BOOST_MEM_FN_NAME(mf6) const & rhs) const
1.745 + {
1.746 + return f_ != rhs.f_;
1.747 + }
1.748 +};
1.749 +
1.750 +// cmf6
1.751 +
1.752 +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)
1.753 +{
1.754 +public:
1.755 +
1.756 + typedef R result_type;
1.757 +
1.758 +private:
1.759 +
1.760 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6) const)
1.761 + F f_;
1.762 +
1.763 + 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
1.764 + {
1.765 + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6);
1.766 + }
1.767 +
1.768 + 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
1.769 + {
1.770 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6);
1.771 + }
1.772 +
1.773 +public:
1.774 +
1.775 + explicit BOOST_MEM_FN_NAME(cmf6)(F f): f_(f) {}
1.776 +
1.777 + template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
1.778 + {
1.779 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6);
1.780 + }
1.781 +
1.782 + R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
1.783 + {
1.784 + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6);
1.785 + }
1.786 +
1.787 + bool operator==(BOOST_MEM_FN_NAME(cmf6) const & rhs) const
1.788 + {
1.789 + return f_ == rhs.f_;
1.790 + }
1.791 +
1.792 + bool operator!=(BOOST_MEM_FN_NAME(cmf6) const & rhs) const
1.793 + {
1.794 + return f_ != rhs.f_;
1.795 + }
1.796 +};
1.797 +
1.798 +// mf7
1.799 +
1.800 +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)
1.801 +{
1.802 +public:
1.803 +
1.804 + typedef R result_type;
1.805 +
1.806 +private:
1.807 +
1.808 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7))
1.809 + F f_;
1.810 +
1.811 + 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
1.812 + {
1.813 + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7);
1.814 + }
1.815 +
1.816 + 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
1.817 + {
1.818 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7);
1.819 + }
1.820 +
1.821 +public:
1.822 +
1.823 + explicit BOOST_MEM_FN_NAME(mf7)(F f): f_(f) {}
1.824 +
1.825 + R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
1.826 + {
1.827 + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7);
1.828 + }
1.829 +
1.830 + template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
1.831 + {
1.832 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7);
1.833 + }
1.834 +
1.835 +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
1.836 +
1.837 + template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
1.838 + {
1.839 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7);
1.840 + }
1.841 +
1.842 +#endif
1.843 +
1.844 + R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
1.845 + {
1.846 + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7);
1.847 + }
1.848 +
1.849 + bool operator==(BOOST_MEM_FN_NAME(mf7) const & rhs) const
1.850 + {
1.851 + return f_ == rhs.f_;
1.852 + }
1.853 +
1.854 + bool operator!=(BOOST_MEM_FN_NAME(mf7) const & rhs) const
1.855 + {
1.856 + return f_ != rhs.f_;
1.857 + }
1.858 +};
1.859 +
1.860 +// cmf7
1.861 +
1.862 +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)
1.863 +{
1.864 +public:
1.865 +
1.866 + typedef R result_type;
1.867 +
1.868 +private:
1.869 +
1.870 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7) const)
1.871 + F f_;
1.872 +
1.873 + 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
1.874 + {
1.875 + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7);
1.876 + }
1.877 +
1.878 + 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
1.879 + {
1.880 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7);
1.881 + }
1.882 +
1.883 +public:
1.884 +
1.885 + explicit BOOST_MEM_FN_NAME(cmf7)(F f): f_(f) {}
1.886 +
1.887 + template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
1.888 + {
1.889 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7);
1.890 + }
1.891 +
1.892 + R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
1.893 + {
1.894 + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7);
1.895 + }
1.896 +
1.897 + bool operator==(BOOST_MEM_FN_NAME(cmf7) const & rhs) const
1.898 + {
1.899 + return f_ == rhs.f_;
1.900 + }
1.901 +
1.902 + bool operator!=(BOOST_MEM_FN_NAME(cmf7) const & rhs) const
1.903 + {
1.904 + return f_ != rhs.f_;
1.905 + }
1.906 +};
1.907 +
1.908 +// mf8
1.909 +
1.910 +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)
1.911 +{
1.912 +public:
1.913 +
1.914 + typedef R result_type;
1.915 +
1.916 +private:
1.917 +
1.918 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8))
1.919 + F f_;
1.920 +
1.921 + 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
1.922 + {
1.923 + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
1.924 + }
1.925 +
1.926 + 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
1.927 + {
1.928 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
1.929 + }
1.930 +
1.931 +public:
1.932 +
1.933 + explicit BOOST_MEM_FN_NAME(mf8)(F f): f_(f) {}
1.934 +
1.935 + R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
1.936 + {
1.937 + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
1.938 + }
1.939 +
1.940 + template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
1.941 + {
1.942 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7, a8);
1.943 + }
1.944 +
1.945 +#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
1.946 +
1.947 + 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
1.948 + {
1.949 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7, a8);
1.950 + }
1.951 +
1.952 +#endif
1.953 +
1.954 + R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
1.955 + {
1.956 + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
1.957 + }
1.958 +
1.959 + bool operator==(BOOST_MEM_FN_NAME(mf8) const & rhs) const
1.960 + {
1.961 + return f_ == rhs.f_;
1.962 + }
1.963 +
1.964 + bool operator!=(BOOST_MEM_FN_NAME(mf8) const & rhs) const
1.965 + {
1.966 + return f_ != rhs.f_;
1.967 + }
1.968 +};
1.969 +
1.970 +// cmf8
1.971 +
1.972 +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)
1.973 +{
1.974 +public:
1.975 +
1.976 + typedef R result_type;
1.977 +
1.978 +private:
1.979 +
1.980 + BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const)
1.981 + F f_;
1.982 +
1.983 + 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
1.984 + {
1.985 + BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
1.986 + }
1.987 +
1.988 + 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
1.989 + {
1.990 + BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
1.991 + }
1.992 +
1.993 +public:
1.994 +
1.995 + explicit BOOST_MEM_FN_NAME(cmf8)(F f): f_(f) {}
1.996 +
1.997 + R operator()(T const * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
1.998 + {
1.999 + BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
1.1000 + }
1.1001 +
1.1002 + 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
1.1003 + {
1.1004 + BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7, a8);
1.1005 + }
1.1006 +
1.1007 + R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
1.1008 + {
1.1009 + BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
1.1010 + }
1.1011 +
1.1012 + bool operator==(BOOST_MEM_FN_NAME(cmf8) const & rhs) const
1.1013 + {
1.1014 + return f_ == rhs.f_;
1.1015 + }
1.1016 +
1.1017 + bool operator!=(BOOST_MEM_FN_NAME(cmf8) const & rhs) const
1.1018 + {
1.1019 + return f_ != rhs.f_;
1.1020 + }
1.1021 +};
1.1022 +
1.1023 +#undef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS