mem_fn_template.hpp
Go to the documentation of this file.
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 
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  {
41  }
42 
43 public:
44 
45  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;
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;
64  }
65 
66 #endif
67 
68  R operator()(T & t) const
69  {
70  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  {
106  }
107 
108 public:
109 
110  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;
116  }
117 
118  R operator()(T const & t) const
119  {
120  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 
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  {
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  {
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 
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 
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  explicit BOOST_MEM_FN_NAME(mf3)(F f): f_(f) {}
390 
391  R operator()(T * p, A1 a1, A2 a2, A3 a3) const
392  {
393  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 
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  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 
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 
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 
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
R
#define R(x, n)
Definition: SHA256.cpp:50
call
bool call(const std::string &service_name, MReq &req, MRes &res)
T
T
Definition: mem_fn_cc.hpp:25
BOOST_MEM_FN_TYPEDEF
#define BOOST_MEM_FN_TYPEDEF(X)
Definition: bind/mem_fn.hpp:205
BOOST_MEM_FN_NAME
class BOOST_MEM_FN_NAME(mf0)
Definition: mem_fn_template.hpp:21
A1
A1
Definition: mem_fn_cc.hpp:35
result_type
result_traits< R, F >::type result_type
Definition: bind_template.hpp:15
A7
A7
Definition: mem_fn_cc.hpp:95
A3
A3
Definition: mem_fn_cc.hpp:55
operator!=
bool operator!=(failed, failed)
f
f
BOOST_MEM_FN_RETURN
#define BOOST_MEM_FN_RETURN
Definition: bind/mem_fn.hpp:210
A5
A5
Definition: mem_fn_cc.hpp:75
f_
F f_
Definition: bind_template.hpp:344
boost::get_pointer
T * get_pointer(T *p)
Definition: get_pointer.hpp:20
operator()
result_type operator()()
Definition: bind_template.hpp:17
BOOST_MEM_FN_CC
#define BOOST_MEM_FN_CC
Definition: bind/mem_fn.hpp:266
A6
A6
Definition: mem_fn_cc.hpp:85
boost::operator==
BOOST_CONSTEXPR bool operator==(arg< I > const &, arg< I > const &)
Definition: bind/arg.hpp:41
A4
A4
Definition: mem_fn_cc.hpp:65
A2
A2
Definition: mem_fn_cc.hpp:45


sick_visionary_ros
Author(s): SICK AG TechSupport 3D Snapshot
autogenerated on Thu Feb 8 2024 03:44:22