LCOV - code coverage report
Current view: top level - usr/include/boost/bind - mem_fn_template.hpp (source / functions) Hit Total Coverage
Test: ROSE Lines: 0 10 0.0 %
Date: 2022-12-08 13:48:47 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : //
       2             : //  bind/mem_fn_template.hpp
       3             : //
       4             : //  Do not include this header directly
       5             : //
       6             : //  Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
       7             : //
       8             : // Distributed under the Boost Software License, Version 1.0. (See
       9             : // accompanying file LICENSE_1_0.txt or copy at
      10             : // http://www.boost.org/LICENSE_1_0.txt)
      11             : //
      12             : //  See http://www.boost.org/libs/bind/mem_fn.html for documentation.
      13             : //
      14             : 
      15             : #if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
      16             : # define BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
      17             : #endif
      18             : 
      19             : // mf0
      20             : 
      21             : template<class R, class T BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf0)
      22             : {
      23             : public:
      24             : 
      25             :     typedef R result_type;
      26             :     typedef T * argument_type;
      27             : 
      28             : private:
      29             :     
      30             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) ())
      31             :     F f_;
      32             : 
      33             :     template<class U> R call(U & u, T const *) const
      34             :     {
      35             :         BOOST_MEM_FN_RETURN (u.*f_)();
      36             :     }
      37             : 
      38             :     template<class U> R call(U & u, void const *) const
      39             :     {
      40             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)();
      41             :     }
      42             : 
      43             : public:
      44             :     
      45           0 :     explicit BOOST_MEM_FN_NAME(mf0)(F f): f_(f) {}
      46             : 
      47             :     R operator()(T * p) const
      48             :     {
      49             :         BOOST_MEM_FN_RETURN (p->*f_)();
      50             :     }
      51             : 
      52             :     template<class U> R operator()(U & u) const
      53             :     {
      54             :         U const * p = 0;
      55             :         BOOST_MEM_FN_RETURN call(u, p);
      56             :     }
      57             : 
      58             : #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
      59             : 
      60             :     template<class U> R operator()(U const & u) const
      61             :     {
      62             :         U const * p = 0;
      63             :         BOOST_MEM_FN_RETURN call(u, p);
      64             :     }
      65             : 
      66             : #endif
      67             : 
      68           0 :     R operator()(T & t) const
      69             :     {
      70           0 :         BOOST_MEM_FN_RETURN (t.*f_)();
      71             :     }
      72             : 
      73             :     bool operator==(BOOST_MEM_FN_NAME(mf0) const & rhs) const
      74             :     {
      75             :         return f_ == rhs.f_;
      76             :     }
      77             : 
      78             :     bool operator!=(BOOST_MEM_FN_NAME(mf0) const & rhs) const
      79             :     {
      80             :         return f_ != rhs.f_;
      81             :     }
      82             : };
      83             : 
      84             : // cmf0
      85             : 
      86             : template<class R, class T BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf0)
      87             : {
      88             : public:
      89             : 
      90             :     typedef R result_type;
      91             :     typedef T const * argument_type;
      92             : 
      93             : private:
      94             :     
      95             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) () const)
      96             :     F f_;
      97             : 
      98             :     template<class U> R call(U & u, T const *) const
      99             :     {
     100             :         BOOST_MEM_FN_RETURN (u.*f_)();
     101             :     }
     102             : 
     103             :     template<class U> R call(U & u, void const *) const
     104             :     {
     105             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)();
     106             :     }
     107             : 
     108             : public:
     109             :     
     110           0 :     explicit BOOST_MEM_FN_NAME(cmf0)(F f): f_(f) {}
     111             : 
     112             :     template<class U> R operator()(U const & u) const
     113             :     {
     114             :         U const * p = 0;
     115             :         BOOST_MEM_FN_RETURN call(u, p);
     116             :     }
     117             : 
     118           0 :     R operator()(T const & t) const
     119             :     {
     120           0 :         BOOST_MEM_FN_RETURN (t.*f_)();
     121             :     }
     122             : 
     123             :     bool operator==(BOOST_MEM_FN_NAME(cmf0) const & rhs) const
     124             :     {
     125             :         return f_ == rhs.f_;
     126             :     }
     127             : 
     128             :     bool operator!=(BOOST_MEM_FN_NAME(cmf0) const & rhs) const
     129             :     {
     130             :         return f_ != rhs.f_;
     131             :     }
     132             : };
     133             : 
     134             : // mf1
     135             : 
     136             : template<class R, class T, class A1 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf1)
     137             : {
     138             : public:
     139             : 
     140             :     typedef R result_type;
     141             :     typedef T * first_argument_type;
     142             :     typedef A1 second_argument_type;
     143             : 
     144             : private:
     145             :     
     146             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1))
     147             :     F f_;
     148             : 
     149             :     template<class U, class B1> R call(U & u, T const *, B1 & b1) const
     150             :     {
     151             :         BOOST_MEM_FN_RETURN (u.*f_)(b1);
     152             :     }
     153             : 
     154             :     template<class U, class B1> R call(U & u, void const *, B1 & b1) const
     155             :     {
     156             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1);
     157             :     }
     158             : 
     159             : public:
     160             :     
     161             :     explicit BOOST_MEM_FN_NAME(mf1)(F f): f_(f) {}
     162             : 
     163             :     R operator()(T * p, A1 a1) const
     164             :     {
     165             :         BOOST_MEM_FN_RETURN (p->*f_)(a1);
     166             :     }
     167             : 
     168             :     template<class U> R operator()(U & u, A1 a1) const
     169             :     {
     170             :         U const * p = 0;
     171             :         BOOST_MEM_FN_RETURN call(u, p, a1);
     172             :     }
     173             : 
     174             : #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
     175             : 
     176             :     template<class U> R operator()(U const & u, A1 a1) const
     177             :     {
     178             :         U const * p = 0;
     179             :         BOOST_MEM_FN_RETURN call(u, p, a1);
     180             :     }
     181             : 
     182             : #endif
     183             : 
     184             :     R operator()(T & t, A1 a1) const
     185             :     {
     186             :         BOOST_MEM_FN_RETURN (t.*f_)(a1);
     187             :     }
     188             : 
     189             :     bool operator==(BOOST_MEM_FN_NAME(mf1) const & rhs) const
     190             :     {
     191             :         return f_ == rhs.f_;
     192             :     }
     193             : 
     194             :     bool operator!=(BOOST_MEM_FN_NAME(mf1) const & rhs) const
     195             :     {
     196             :         return f_ != rhs.f_;
     197             :     }
     198             : };
     199             : 
     200             : // cmf1
     201             : 
     202             : template<class R, class T, class A1 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf1)
     203             : {
     204             : public:
     205             : 
     206             :     typedef R result_type;
     207             :     typedef T const * first_argument_type;
     208             :     typedef A1 second_argument_type;
     209             : 
     210             : private:
     211             :     
     212             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1) const)
     213             :     F f_;
     214             : 
     215             :     template<class U, class B1> R call(U & u, T const *, B1 & b1) const
     216             :     {
     217             :         BOOST_MEM_FN_RETURN (u.*f_)(b1);
     218             :     }
     219             : 
     220             :     template<class U, class B1> R call(U & u, void const *, B1 & b1) const
     221             :     {
     222             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1);
     223             :     }
     224             : 
     225             : public:
     226             :     
     227             :     explicit BOOST_MEM_FN_NAME(cmf1)(F f): f_(f) {}
     228             : 
     229             :     template<class U> R operator()(U const & u, A1 a1) const
     230             :     {
     231             :         U const * p = 0;
     232             :         BOOST_MEM_FN_RETURN call(u, p, a1);
     233             :     }
     234             : 
     235             :     R operator()(T const & t, A1 a1) const
     236             :     {
     237             :         BOOST_MEM_FN_RETURN (t.*f_)(a1);
     238             :     }
     239             : 
     240             :     bool operator==(BOOST_MEM_FN_NAME(cmf1) const & rhs) const
     241             :     {
     242             :         return f_ == rhs.f_;
     243             :     }
     244             : 
     245             :     bool operator!=(BOOST_MEM_FN_NAME(cmf1) const & rhs) const
     246             :     {
     247             :         return f_ != rhs.f_;
     248             :     }
     249             : };
     250             : 
     251             : // mf2
     252             : 
     253             : template<class R, class T, class A1, class A2 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf2)
     254             : {
     255             : public:
     256             : 
     257             :     typedef R result_type;
     258             : 
     259             : private:
     260             :     
     261             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2))
     262             :     F f_;
     263             : 
     264             :     template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const
     265             :     {
     266             :         BOOST_MEM_FN_RETURN (u.*f_)(b1, b2);
     267             :     }
     268             : 
     269             :     template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const
     270             :     {
     271             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2);
     272             :     }
     273             : 
     274             : public:
     275             :     
     276             :     explicit BOOST_MEM_FN_NAME(mf2)(F f): f_(f) {}
     277             : 
     278             :     R operator()(T * p, A1 a1, A2 a2) const
     279             :     {
     280             :         BOOST_MEM_FN_RETURN (p->*f_)(a1, a2);
     281             :     }
     282             : 
     283             :     template<class U> R operator()(U & u, A1 a1, A2 a2) const
     284             :     {
     285             :         U const * p = 0;
     286             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2);
     287             :     }
     288             : 
     289             : #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
     290             : 
     291             :     template<class U> R operator()(U const & u, A1 a1, A2 a2) const
     292             :     {
     293             :         U const * p = 0;
     294             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2);
     295             :     }
     296             : 
     297             : #endif
     298             : 
     299             :     R operator()(T & t, A1 a1, A2 a2) const
     300             :     {
     301             :         BOOST_MEM_FN_RETURN (t.*f_)(a1, a2);
     302             :     }
     303             : 
     304             :     bool operator==(BOOST_MEM_FN_NAME(mf2) const & rhs) const
     305             :     {
     306             :         return f_ == rhs.f_;
     307             :     }
     308             : 
     309             :     bool operator!=(BOOST_MEM_FN_NAME(mf2) const & rhs) const
     310             :     {
     311             :         return f_ != rhs.f_;
     312             :     }
     313             : };
     314             : 
     315             : // cmf2
     316             : 
     317             : template<class R, class T, class A1, class A2 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf2)
     318             : {
     319             : public:
     320             : 
     321             :     typedef R result_type;
     322             : 
     323             : private:
     324             :     
     325             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2) const)
     326             :     F f_;
     327             : 
     328             :     template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const
     329             :     {
     330             :         BOOST_MEM_FN_RETURN (u.*f_)(b1, b2);
     331             :     }
     332             : 
     333             :     template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const
     334             :     {
     335             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2);
     336             :     }
     337             : 
     338             : public:
     339             :     
     340             :     explicit BOOST_MEM_FN_NAME(cmf2)(F f): f_(f) {}
     341             : 
     342             :     template<class U> R operator()(U const & u, A1 a1, A2 a2) const
     343             :     {
     344             :         U const * p = 0;
     345             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2);
     346             :     }
     347             : 
     348             :     R operator()(T const & t, A1 a1, A2 a2) const
     349             :     {
     350             :         BOOST_MEM_FN_RETURN (t.*f_)(a1, a2);
     351             :     }
     352             : 
     353             :     bool operator==(BOOST_MEM_FN_NAME(cmf2) const & rhs) const
     354             :     {
     355             :         return f_ == rhs.f_;
     356             :     }
     357             : 
     358             :     bool operator!=(BOOST_MEM_FN_NAME(cmf2) const & rhs) const
     359             :     {
     360             :         return f_ != rhs.f_;
     361             :     }
     362             : };
     363             : 
     364             : // mf3
     365             : 
     366             : template<class R, class T, class A1, class A2, class A3 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf3)
     367             : {
     368             : public:
     369             : 
     370             :     typedef R result_type;
     371             : 
     372             : private:
     373             :     
     374             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3))
     375             :     F f_;
     376             : 
     377             :     template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const
     378             :     {
     379             :         BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3);
     380             :     }
     381             : 
     382             :     template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const
     383             :     {
     384             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3);
     385             :     }
     386             : 
     387             : public:
     388             :     
     389           0 :     explicit BOOST_MEM_FN_NAME(mf3)(F f): f_(f) {}
     390             : 
     391           0 :     R operator()(T * p, A1 a1, A2 a2, A3 a3) const
     392             :     {
     393           0 :         BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3);
     394             :     }
     395             : 
     396             :     template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3) const
     397             :     {
     398             :         U const * p = 0;
     399             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3);
     400             :     }
     401             : 
     402             : #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
     403             : 
     404             :     template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const
     405             :     {
     406             :         U const * p = 0;
     407             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3);
     408             :     }
     409             : 
     410             : #endif
     411             : 
     412             :     R operator()(T & t, A1 a1, A2 a2, A3 a3) const
     413             :     {
     414             :         BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3);
     415             :     }
     416             : 
     417             :     bool operator==(BOOST_MEM_FN_NAME(mf3) const & rhs) const
     418             :     {
     419             :         return f_ == rhs.f_;
     420             :     }
     421             : 
     422             :     bool operator!=(BOOST_MEM_FN_NAME(mf3) const & rhs) const
     423             :     {
     424             :         return f_ != rhs.f_;
     425             :     }
     426             : };
     427             : 
     428             : // cmf3
     429             : 
     430             : template<class R, class T, class A1, class A2, class A3 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf3)
     431             : {
     432             : public:
     433             : 
     434             :     typedef R result_type;
     435             : 
     436             : private:
     437             : 
     438             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3) const)
     439             :     F f_;
     440             : 
     441             :     template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const
     442             :     {
     443             :         BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3);
     444             :     }
     445             : 
     446             :     template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const
     447             :     {
     448             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3);
     449             :     }
     450             : 
     451             : public:
     452             : 
     453             :     explicit BOOST_MEM_FN_NAME(cmf3)(F f): f_(f) {}
     454             : 
     455             :     template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const
     456             :     {
     457             :         U const * p = 0;
     458             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3);
     459             :     }
     460             : 
     461             :     R operator()(T const & t, A1 a1, A2 a2, A3 a3) const
     462             :     {
     463             :         BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3);
     464             :     }
     465             : 
     466             :     bool operator==(BOOST_MEM_FN_NAME(cmf3) const & rhs) const
     467             :     {
     468             :         return f_ == rhs.f_;
     469             :     }
     470             : 
     471             :     bool operator!=(BOOST_MEM_FN_NAME(cmf3) const & rhs) const
     472             :     {
     473             :         return f_ != rhs.f_;
     474             :     }
     475             : };
     476             : 
     477             : // mf4
     478             : 
     479             : template<class R, class T, class A1, class A2, class A3, class A4 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf4)
     480             : {
     481             : public:
     482             : 
     483             :     typedef R result_type;
     484             : 
     485             : private:
     486             :     
     487             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4))
     488             :     F f_;
     489             : 
     490             :     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
     491             :     {
     492             :         BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4);
     493             :     }
     494             : 
     495             :     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
     496             :     {
     497             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4);
     498             :     }
     499             : 
     500             : public:
     501             :     
     502           0 :     explicit BOOST_MEM_FN_NAME(mf4)(F f): f_(f) {}
     503             : 
     504             :     R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4) const
     505             :     {
     506             :         BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4);
     507             :     }
     508             : 
     509             :     template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4) const
     510             :     {
     511             :         U const * p = 0;
     512             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4);
     513             :     }
     514             : 
     515             : #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
     516             : 
     517             :     template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const
     518             :     {
     519             :         U const * p = 0;
     520             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4);
     521             :     }
     522             : 
     523             : #endif
     524             : 
     525             :     R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4) const
     526             :     {
     527             :         BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4);
     528             :     }
     529             : 
     530             :     bool operator==(BOOST_MEM_FN_NAME(mf4) const & rhs) const
     531             :     {
     532             :         return f_ == rhs.f_;
     533             :     }
     534             : 
     535             :     bool operator!=(BOOST_MEM_FN_NAME(mf4) const & rhs) const
     536             :     {
     537             :         return f_ != rhs.f_;
     538             :     }
     539             : };
     540             : 
     541             : // cmf4
     542             : 
     543             : template<class R, class T, class A1, class A2, class A3, class A4 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf4)
     544             : {
     545             : public:
     546             : 
     547             :     typedef R result_type;
     548             : 
     549             : private:
     550             :     
     551             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4) const)
     552             :     F f_;
     553             : 
     554             :     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
     555             :     {
     556             :         BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4);
     557             :     }
     558             : 
     559             :     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
     560             :     {
     561             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4);
     562             :     }
     563             : 
     564             : public:
     565             :     
     566             :     explicit BOOST_MEM_FN_NAME(cmf4)(F f): f_(f) {}
     567             : 
     568             :     template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const
     569             :     {
     570             :         U const * p = 0;
     571             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4);
     572             :     }
     573             : 
     574             :     R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4) const
     575             :     {
     576             :         BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4);
     577             :     }
     578             : 
     579             :     bool operator==(BOOST_MEM_FN_NAME(cmf4) const & rhs) const
     580             :     {
     581             :         return f_ == rhs.f_;
     582             :     }
     583             : 
     584             :     bool operator!=(BOOST_MEM_FN_NAME(cmf4) const & rhs) const
     585             :     {
     586             :         return f_ != rhs.f_;
     587             :     }
     588             : };
     589             : 
     590             : // mf5
     591             : 
     592             : 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)
     593             : {
     594             : public:
     595             : 
     596             :     typedef R result_type;
     597             : 
     598             : private:
     599             :     
     600             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5))
     601             :     F f_;
     602             : 
     603             :     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
     604             :     {
     605             :         BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5);
     606             :     }
     607             : 
     608             :     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
     609             :     {
     610             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5);
     611             :     }
     612             : 
     613             : public:
     614             :     
     615             :     explicit BOOST_MEM_FN_NAME(mf5)(F f): f_(f) {}
     616             : 
     617             :     R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
     618             :     {
     619             :         BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5);
     620             :     }
     621             : 
     622             :     template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
     623             :     {
     624             :         U const * p = 0;
     625             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5);
     626             :     }
     627             : 
     628             : #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
     629             : 
     630             :     template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
     631             :     {
     632             :         U const * p = 0;
     633             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5);
     634             :     }
     635             : 
     636             : #endif
     637             : 
     638             :     R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
     639             :     {
     640             :         BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5);
     641             :     }
     642             : 
     643             :     bool operator==(BOOST_MEM_FN_NAME(mf5) const & rhs) const
     644             :     {
     645             :         return f_ == rhs.f_;
     646             :     }
     647             : 
     648             :     bool operator!=(BOOST_MEM_FN_NAME(mf5) const & rhs) const
     649             :     {
     650             :         return f_ != rhs.f_;
     651             :     }
     652             : };
     653             : 
     654             : // cmf5
     655             : 
     656             : 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)
     657             : {
     658             : public:
     659             : 
     660             :     typedef R result_type;
     661             : 
     662             : private:
     663             :     
     664             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5) const)
     665             :     F f_;
     666             : 
     667             :     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
     668             :     {
     669             :         BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5);
     670             :     }
     671             : 
     672             :     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
     673             :     {
     674             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5);
     675             :     }
     676             : 
     677             : public:
     678             :     
     679             :     explicit BOOST_MEM_FN_NAME(cmf5)(F f): f_(f) {}
     680             : 
     681             :     template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
     682             :     {
     683             :         U const * p = 0;
     684             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5);
     685             :     }
     686             : 
     687             :     R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
     688             :     {
     689             :         BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5);
     690             :     }
     691             : 
     692             :     bool operator==(BOOST_MEM_FN_NAME(cmf5) const & rhs) const
     693             :     {
     694             :         return f_ == rhs.f_;
     695             :     }
     696             : 
     697             :     bool operator!=(BOOST_MEM_FN_NAME(cmf5) const & rhs) const
     698             :     {
     699             :         return f_ != rhs.f_;
     700             :     }
     701             : };
     702             : 
     703             : // mf6
     704             : 
     705             : 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)
     706             : {
     707             : public:
     708             : 
     709             :     typedef R result_type;
     710             : 
     711             : private:
     712             : 
     713             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6))
     714             :     F f_;
     715             : 
     716             :     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
     717             :     {
     718             :         BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6);
     719             :     }
     720             : 
     721             :     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
     722             :     {
     723             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6);
     724             :     }
     725             : 
     726             : public:
     727             : 
     728             :     explicit BOOST_MEM_FN_NAME(mf6)(F f): f_(f) {}
     729             : 
     730             :     R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
     731             :     {
     732             :         BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6);
     733             :     }
     734             : 
     735             :     template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
     736             :     {
     737             :         U const * p = 0;
     738             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6);
     739             :     }
     740             : 
     741             : #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
     742             : 
     743             :     template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
     744             :     {
     745             :         U const * p = 0;
     746             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6);
     747             :     }
     748             : 
     749             : #endif
     750             : 
     751             :     R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
     752             :     {
     753             :         BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6);
     754             :     }
     755             : 
     756             :     bool operator==(BOOST_MEM_FN_NAME(mf6) const & rhs) const
     757             :     {
     758             :         return f_ == rhs.f_;
     759             :     }
     760             : 
     761             :     bool operator!=(BOOST_MEM_FN_NAME(mf6) const & rhs) const
     762             :     {
     763             :         return f_ != rhs.f_;
     764             :     }
     765             : };
     766             : 
     767             : // cmf6
     768             : 
     769             : 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)
     770             : {
     771             : public:
     772             : 
     773             :     typedef R result_type;
     774             : 
     775             : private:
     776             :     
     777             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6) const)
     778             :     F f_;
     779             : 
     780             :     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
     781             :     {
     782             :         BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6);
     783             :     }
     784             : 
     785             :     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
     786             :     {
     787             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6);
     788             :     }
     789             : 
     790             : public:
     791             :     
     792             :     explicit BOOST_MEM_FN_NAME(cmf6)(F f): f_(f) {}
     793             : 
     794             :     template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
     795             :     {
     796             :         U const * p = 0;
     797             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6);
     798             :     }
     799             : 
     800             :     R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
     801             :     {
     802             :         BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6);
     803             :     }
     804             : 
     805             :     bool operator==(BOOST_MEM_FN_NAME(cmf6) const & rhs) const
     806             :     {
     807             :         return f_ == rhs.f_;
     808             :     }
     809             : 
     810             :     bool operator!=(BOOST_MEM_FN_NAME(cmf6) const & rhs) const
     811             :     {
     812             :         return f_ != rhs.f_;
     813             :     }
     814             : };
     815             : 
     816             : // mf7
     817             : 
     818             : 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)
     819             : {
     820             : public:
     821             : 
     822             :     typedef R result_type;
     823             : 
     824             : private:
     825             :     
     826             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7))
     827             :     F f_;
     828             : 
     829             :     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
     830             :     {
     831             :         BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7);
     832             :     }
     833             : 
     834             :     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
     835             :     {
     836             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7);
     837             :     }
     838             : 
     839             : public:
     840             :     
     841             :     explicit BOOST_MEM_FN_NAME(mf7)(F f): f_(f) {}
     842             : 
     843             :     R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
     844             :     {
     845             :         BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7);
     846             :     }
     847             : 
     848             :     template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
     849             :     {
     850             :         U const * p = 0;
     851             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7);
     852             :     }
     853             : 
     854             : #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
     855             : 
     856             :     template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
     857             :     {
     858             :         U const * p = 0;
     859             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7);
     860             :     }
     861             : 
     862             : #endif
     863             : 
     864             :     R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
     865             :     {
     866             :         BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7);
     867             :     }
     868             : 
     869             :     bool operator==(BOOST_MEM_FN_NAME(mf7) const & rhs) const
     870             :     {
     871             :         return f_ == rhs.f_;
     872             :     }
     873             : 
     874             :     bool operator!=(BOOST_MEM_FN_NAME(mf7) const & rhs) const
     875             :     {
     876             :         return f_ != rhs.f_;
     877             :     }
     878             : };
     879             : 
     880             : // cmf7
     881             : 
     882             : 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)
     883             : {
     884             : public:
     885             : 
     886             :     typedef R result_type;
     887             : 
     888             : private:
     889             :     
     890             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7) const)
     891             :     F f_;
     892             : 
     893             :     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
     894             :     {
     895             :         BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7);
     896             :     }
     897             : 
     898             :     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
     899             :     {
     900             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7);
     901             :     }
     902             : 
     903             : public:
     904             :     
     905             :     explicit BOOST_MEM_FN_NAME(cmf7)(F f): f_(f) {}
     906             : 
     907             :     template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
     908             :     {
     909             :         U const * p = 0;
     910             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7);
     911             :     }
     912             : 
     913             :     R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
     914             :     {
     915             :         BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7);
     916             :     }
     917             : 
     918             :     bool operator==(BOOST_MEM_FN_NAME(cmf7) const & rhs) const
     919             :     {
     920             :         return f_ == rhs.f_;
     921             :     }
     922             : 
     923             :     bool operator!=(BOOST_MEM_FN_NAME(cmf7) const & rhs) const
     924             :     {
     925             :         return f_ != rhs.f_;
     926             :     }
     927             : };
     928             : 
     929             : // mf8
     930             : 
     931             : 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)
     932             : {
     933             : public:
     934             : 
     935             :     typedef R result_type;
     936             : 
     937             : private:
     938             :     
     939             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8))
     940             :     F f_;
     941             : 
     942             :     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
     943             :     {
     944             :         BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
     945             :     }
     946             : 
     947             :     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
     948             :     {
     949             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
     950             :     }
     951             : 
     952             : public:
     953             :     
     954             :     explicit BOOST_MEM_FN_NAME(mf8)(F f): f_(f) {}
     955             : 
     956             :     R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
     957             :     {
     958             :         BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
     959             :     }
     960             : 
     961             :     template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
     962             :     {
     963             :         U const * p = 0;
     964             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8);
     965             :     }
     966             : 
     967             : #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
     968             : 
     969             :     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
     970             :     {
     971             :         U const * p = 0;
     972             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8);
     973             :     }
     974             : 
     975             : #endif
     976             : 
     977             :     R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
     978             :     {
     979             :         BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
     980             :     }
     981             : 
     982             :     bool operator==(BOOST_MEM_FN_NAME(mf8) const & rhs) const
     983             :     {
     984             :         return f_ == rhs.f_;
     985             :     }
     986             : 
     987             :     bool operator!=(BOOST_MEM_FN_NAME(mf8) const & rhs) const
     988             :     {
     989             :         return f_ != rhs.f_;
     990             :     }
     991             : };
     992             : 
     993             : // cmf8
     994             : 
     995             : 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)
     996             : {
     997             : public:
     998             : 
     999             :     typedef R result_type;
    1000             : 
    1001             : private:
    1002             :     
    1003             :     BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const)
    1004             :     F f_;
    1005             : 
    1006             :     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
    1007             :     {
    1008             :         BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
    1009             :     }
    1010             : 
    1011             :     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
    1012             :     {
    1013             :         BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
    1014             :     }
    1015             : 
    1016             : public:
    1017             :     
    1018             :     explicit BOOST_MEM_FN_NAME(cmf8)(F f): f_(f) {}
    1019             : 
    1020             :     R operator()(T const * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
    1021             :     {
    1022             :         BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
    1023             :     }
    1024             : 
    1025             :     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
    1026             :     {
    1027             :         U const * p = 0;
    1028             :         BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8);
    1029             :     }
    1030             : 
    1031             :     R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
    1032             :     {
    1033             :         BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
    1034             :     }
    1035             : 
    1036             :     bool operator==(BOOST_MEM_FN_NAME(cmf8) const & rhs) const
    1037             :     {
    1038             :         return f_ == rhs.f_;
    1039             :     }
    1040             : 
    1041             :     bool operator!=(BOOST_MEM_FN_NAME(cmf8) const & rhs) const
    1042             :     {
    1043             :         return f_ != rhs.f_;
    1044             :     }
    1045             : };
    1046             : 
    1047             : #undef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS

Generated by: LCOV version 1.14