]> git.sesse.net Git - casparcg/blob - dependencies/boost/boost/phoenix/bind/preprocessed/bind_member_function_30.hpp
Manually merged pull request #222
[casparcg] / dependencies / boost / boost / phoenix / bind / preprocessed / bind_member_function_30.hpp
1 /*=============================================================================
2     Copyright (c) 2001-2007 Joel de Guzman
3
4     Distributed under the Boost Software License, Version 1.0. (See accompanying 
5     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 ==============================================================================*/
7     
8     
9     
10     
11     
12     
13     
14     template <
15         typename RT
16       , typename ClassT
17       , typename T0
18       , typename ClassA
19       , typename A0
20     >
21     inline
22     typename detail::expression::function_eval<
23         detail::member_function_ptr<
24             1
25           , RT
26           , RT(ClassT::*)(T0)
27         >
28       , ClassA
29       , A0
30     >::type const
31     bind(
32         RT(ClassT::*f)(T0)
33       , ClassA const & obj
34       , A0 const& a0
35     )
36     {
37         typedef detail::member_function_ptr<
38             1
39           , RT
40           , RT(ClassT::*)(T0)
41         > fp_type;
42         return
43             detail::expression::function_eval<
44                 fp_type
45               , ClassA
46               , A0
47             >::make(
48                 fp_type(f)
49               , obj
50               , a0
51             );
52     }
53     template <
54         typename RT
55       , typename ClassT
56       , typename T0
57       , typename ClassA
58       , typename A0
59     >
60     inline
61     typename detail::expression::function_eval<
62         detail::member_function_ptr<
63             1
64           , RT
65           , RT(ClassT::*)(T0) const
66         >
67       , ClassA
68       , A0
69     >::type const
70     bind(
71         RT(ClassT::*f)(T0) const
72       , ClassA const & obj
73       , A0 const& a0
74     )
75     {
76         typedef detail::member_function_ptr<
77             1
78           , RT
79           , RT(ClassT::*)(T0) const
80         > fp_type;
81         return
82             detail::expression::function_eval<
83                 fp_type
84               , ClassA
85               , A0
86             >::make(
87                 fp_type(f)
88               , obj
89               , a0
90             );
91     }
92     template <
93         typename RT
94       , typename ClassT
95       , typename T0
96       , typename A0
97     >
98     inline
99     typename detail::expression::function_eval<
100         detail::member_function_ptr<
101             1
102           , RT
103           , RT(ClassT::*)(T0)
104         >
105       , ClassT
106       , A0
107     >::type const
108     bind(
109         RT(ClassT::*f)(T0)
110       , ClassT & obj
111       , A0 const& a0
112     )
113     {
114         typedef detail::member_function_ptr<
115             1
116           , RT
117           , RT(ClassT::*)(T0)
118         > fp_type;
119         return
120             detail::expression::function_eval<
121                 fp_type
122               , ClassT
123               , A0
124             >::make(
125                 fp_type(f)
126               , obj
127               , a0
128             );
129     }
130     
131     
132     
133     
134     
135     
136     
137     template <
138         typename RT
139       , typename ClassT
140       , typename T0 , typename T1
141       , typename ClassA
142       , typename A0 , typename A1
143     >
144     inline
145     typename detail::expression::function_eval<
146         detail::member_function_ptr<
147             2
148           , RT
149           , RT(ClassT::*)(T0 , T1)
150         >
151       , ClassA
152       , A0 , A1
153     >::type const
154     bind(
155         RT(ClassT::*f)(T0 , T1)
156       , ClassA const & obj
157       , A0 const& a0 , A1 const& a1
158     )
159     {
160         typedef detail::member_function_ptr<
161             2
162           , RT
163           , RT(ClassT::*)(T0 , T1)
164         > fp_type;
165         return
166             detail::expression::function_eval<
167                 fp_type
168               , ClassA
169               , A0 , A1
170             >::make(
171                 fp_type(f)
172               , obj
173               , a0 , a1
174             );
175     }
176     template <
177         typename RT
178       , typename ClassT
179       , typename T0 , typename T1
180       , typename ClassA
181       , typename A0 , typename A1
182     >
183     inline
184     typename detail::expression::function_eval<
185         detail::member_function_ptr<
186             2
187           , RT
188           , RT(ClassT::*)(T0 , T1) const
189         >
190       , ClassA
191       , A0 , A1
192     >::type const
193     bind(
194         RT(ClassT::*f)(T0 , T1) const
195       , ClassA const & obj
196       , A0 const& a0 , A1 const& a1
197     )
198     {
199         typedef detail::member_function_ptr<
200             2
201           , RT
202           , RT(ClassT::*)(T0 , T1) const
203         > fp_type;
204         return
205             detail::expression::function_eval<
206                 fp_type
207               , ClassA
208               , A0 , A1
209             >::make(
210                 fp_type(f)
211               , obj
212               , a0 , a1
213             );
214     }
215     template <
216         typename RT
217       , typename ClassT
218       , typename T0 , typename T1
219       , typename A0 , typename A1
220     >
221     inline
222     typename detail::expression::function_eval<
223         detail::member_function_ptr<
224             2
225           , RT
226           , RT(ClassT::*)(T0 , T1)
227         >
228       , ClassT
229       , A0 , A1
230     >::type const
231     bind(
232         RT(ClassT::*f)(T0 , T1)
233       , ClassT & obj
234       , A0 const& a0 , A1 const& a1
235     )
236     {
237         typedef detail::member_function_ptr<
238             2
239           , RT
240           , RT(ClassT::*)(T0 , T1)
241         > fp_type;
242         return
243             detail::expression::function_eval<
244                 fp_type
245               , ClassT
246               , A0 , A1
247             >::make(
248                 fp_type(f)
249               , obj
250               , a0 , a1
251             );
252     }
253     
254     
255     
256     
257     
258     
259     
260     template <
261         typename RT
262       , typename ClassT
263       , typename T0 , typename T1 , typename T2
264       , typename ClassA
265       , typename A0 , typename A1 , typename A2
266     >
267     inline
268     typename detail::expression::function_eval<
269         detail::member_function_ptr<
270             3
271           , RT
272           , RT(ClassT::*)(T0 , T1 , T2)
273         >
274       , ClassA
275       , A0 , A1 , A2
276     >::type const
277     bind(
278         RT(ClassT::*f)(T0 , T1 , T2)
279       , ClassA const & obj
280       , A0 const& a0 , A1 const& a1 , A2 const& a2
281     )
282     {
283         typedef detail::member_function_ptr<
284             3
285           , RT
286           , RT(ClassT::*)(T0 , T1 , T2)
287         > fp_type;
288         return
289             detail::expression::function_eval<
290                 fp_type
291               , ClassA
292               , A0 , A1 , A2
293             >::make(
294                 fp_type(f)
295               , obj
296               , a0 , a1 , a2
297             );
298     }
299     template <
300         typename RT
301       , typename ClassT
302       , typename T0 , typename T1 , typename T2
303       , typename ClassA
304       , typename A0 , typename A1 , typename A2
305     >
306     inline
307     typename detail::expression::function_eval<
308         detail::member_function_ptr<
309             3
310           , RT
311           , RT(ClassT::*)(T0 , T1 , T2) const
312         >
313       , ClassA
314       , A0 , A1 , A2
315     >::type const
316     bind(
317         RT(ClassT::*f)(T0 , T1 , T2) const
318       , ClassA const & obj
319       , A0 const& a0 , A1 const& a1 , A2 const& a2
320     )
321     {
322         typedef detail::member_function_ptr<
323             3
324           , RT
325           , RT(ClassT::*)(T0 , T1 , T2) const
326         > fp_type;
327         return
328             detail::expression::function_eval<
329                 fp_type
330               , ClassA
331               , A0 , A1 , A2
332             >::make(
333                 fp_type(f)
334               , obj
335               , a0 , a1 , a2
336             );
337     }
338     template <
339         typename RT
340       , typename ClassT
341       , typename T0 , typename T1 , typename T2
342       , typename A0 , typename A1 , typename A2
343     >
344     inline
345     typename detail::expression::function_eval<
346         detail::member_function_ptr<
347             3
348           , RT
349           , RT(ClassT::*)(T0 , T1 , T2)
350         >
351       , ClassT
352       , A0 , A1 , A2
353     >::type const
354     bind(
355         RT(ClassT::*f)(T0 , T1 , T2)
356       , ClassT & obj
357       , A0 const& a0 , A1 const& a1 , A2 const& a2
358     )
359     {
360         typedef detail::member_function_ptr<
361             3
362           , RT
363           , RT(ClassT::*)(T0 , T1 , T2)
364         > fp_type;
365         return
366             detail::expression::function_eval<
367                 fp_type
368               , ClassT
369               , A0 , A1 , A2
370             >::make(
371                 fp_type(f)
372               , obj
373               , a0 , a1 , a2
374             );
375     }
376     
377     
378     
379     
380     
381     
382     
383     template <
384         typename RT
385       , typename ClassT
386       , typename T0 , typename T1 , typename T2 , typename T3
387       , typename ClassA
388       , typename A0 , typename A1 , typename A2 , typename A3
389     >
390     inline
391     typename detail::expression::function_eval<
392         detail::member_function_ptr<
393             4
394           , RT
395           , RT(ClassT::*)(T0 , T1 , T2 , T3)
396         >
397       , ClassA
398       , A0 , A1 , A2 , A3
399     >::type const
400     bind(
401         RT(ClassT::*f)(T0 , T1 , T2 , T3)
402       , ClassA const & obj
403       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
404     )
405     {
406         typedef detail::member_function_ptr<
407             4
408           , RT
409           , RT(ClassT::*)(T0 , T1 , T2 , T3)
410         > fp_type;
411         return
412             detail::expression::function_eval<
413                 fp_type
414               , ClassA
415               , A0 , A1 , A2 , A3
416             >::make(
417                 fp_type(f)
418               , obj
419               , a0 , a1 , a2 , a3
420             );
421     }
422     template <
423         typename RT
424       , typename ClassT
425       , typename T0 , typename T1 , typename T2 , typename T3
426       , typename ClassA
427       , typename A0 , typename A1 , typename A2 , typename A3
428     >
429     inline
430     typename detail::expression::function_eval<
431         detail::member_function_ptr<
432             4
433           , RT
434           , RT(ClassT::*)(T0 , T1 , T2 , T3) const
435         >
436       , ClassA
437       , A0 , A1 , A2 , A3
438     >::type const
439     bind(
440         RT(ClassT::*f)(T0 , T1 , T2 , T3) const
441       , ClassA const & obj
442       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
443     )
444     {
445         typedef detail::member_function_ptr<
446             4
447           , RT
448           , RT(ClassT::*)(T0 , T1 , T2 , T3) const
449         > fp_type;
450         return
451             detail::expression::function_eval<
452                 fp_type
453               , ClassA
454               , A0 , A1 , A2 , A3
455             >::make(
456                 fp_type(f)
457               , obj
458               , a0 , a1 , a2 , a3
459             );
460     }
461     template <
462         typename RT
463       , typename ClassT
464       , typename T0 , typename T1 , typename T2 , typename T3
465       , typename A0 , typename A1 , typename A2 , typename A3
466     >
467     inline
468     typename detail::expression::function_eval<
469         detail::member_function_ptr<
470             4
471           , RT
472           , RT(ClassT::*)(T0 , T1 , T2 , T3)
473         >
474       , ClassT
475       , A0 , A1 , A2 , A3
476     >::type const
477     bind(
478         RT(ClassT::*f)(T0 , T1 , T2 , T3)
479       , ClassT & obj
480       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
481     )
482     {
483         typedef detail::member_function_ptr<
484             4
485           , RT
486           , RT(ClassT::*)(T0 , T1 , T2 , T3)
487         > fp_type;
488         return
489             detail::expression::function_eval<
490                 fp_type
491               , ClassT
492               , A0 , A1 , A2 , A3
493             >::make(
494                 fp_type(f)
495               , obj
496               , a0 , a1 , a2 , a3
497             );
498     }
499     
500     
501     
502     
503     
504     
505     
506     template <
507         typename RT
508       , typename ClassT
509       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4
510       , typename ClassA
511       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4
512     >
513     inline
514     typename detail::expression::function_eval<
515         detail::member_function_ptr<
516             5
517           , RT
518           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4)
519         >
520       , ClassA
521       , A0 , A1 , A2 , A3 , A4
522     >::type const
523     bind(
524         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4)
525       , ClassA const & obj
526       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
527     )
528     {
529         typedef detail::member_function_ptr<
530             5
531           , RT
532           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4)
533         > fp_type;
534         return
535             detail::expression::function_eval<
536                 fp_type
537               , ClassA
538               , A0 , A1 , A2 , A3 , A4
539             >::make(
540                 fp_type(f)
541               , obj
542               , a0 , a1 , a2 , a3 , a4
543             );
544     }
545     template <
546         typename RT
547       , typename ClassT
548       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4
549       , typename ClassA
550       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4
551     >
552     inline
553     typename detail::expression::function_eval<
554         detail::member_function_ptr<
555             5
556           , RT
557           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4) const
558         >
559       , ClassA
560       , A0 , A1 , A2 , A3 , A4
561     >::type const
562     bind(
563         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4) const
564       , ClassA const & obj
565       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
566     )
567     {
568         typedef detail::member_function_ptr<
569             5
570           , RT
571           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4) const
572         > fp_type;
573         return
574             detail::expression::function_eval<
575                 fp_type
576               , ClassA
577               , A0 , A1 , A2 , A3 , A4
578             >::make(
579                 fp_type(f)
580               , obj
581               , a0 , a1 , a2 , a3 , a4
582             );
583     }
584     template <
585         typename RT
586       , typename ClassT
587       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4
588       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4
589     >
590     inline
591     typename detail::expression::function_eval<
592         detail::member_function_ptr<
593             5
594           , RT
595           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4)
596         >
597       , ClassT
598       , A0 , A1 , A2 , A3 , A4
599     >::type const
600     bind(
601         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4)
602       , ClassT & obj
603       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
604     )
605     {
606         typedef detail::member_function_ptr<
607             5
608           , RT
609           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4)
610         > fp_type;
611         return
612             detail::expression::function_eval<
613                 fp_type
614               , ClassT
615               , A0 , A1 , A2 , A3 , A4
616             >::make(
617                 fp_type(f)
618               , obj
619               , a0 , a1 , a2 , a3 , a4
620             );
621     }
622     
623     
624     
625     
626     
627     
628     
629     template <
630         typename RT
631       , typename ClassT
632       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
633       , typename ClassA
634       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5
635     >
636     inline
637     typename detail::expression::function_eval<
638         detail::member_function_ptr<
639             6
640           , RT
641           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5)
642         >
643       , ClassA
644       , A0 , A1 , A2 , A3 , A4 , A5
645     >::type const
646     bind(
647         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5)
648       , ClassA const & obj
649       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
650     )
651     {
652         typedef detail::member_function_ptr<
653             6
654           , RT
655           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5)
656         > fp_type;
657         return
658             detail::expression::function_eval<
659                 fp_type
660               , ClassA
661               , A0 , A1 , A2 , A3 , A4 , A5
662             >::make(
663                 fp_type(f)
664               , obj
665               , a0 , a1 , a2 , a3 , a4 , a5
666             );
667     }
668     template <
669         typename RT
670       , typename ClassT
671       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
672       , typename ClassA
673       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5
674     >
675     inline
676     typename detail::expression::function_eval<
677         detail::member_function_ptr<
678             6
679           , RT
680           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5) const
681         >
682       , ClassA
683       , A0 , A1 , A2 , A3 , A4 , A5
684     >::type const
685     bind(
686         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5) const
687       , ClassA const & obj
688       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
689     )
690     {
691         typedef detail::member_function_ptr<
692             6
693           , RT
694           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5) const
695         > fp_type;
696         return
697             detail::expression::function_eval<
698                 fp_type
699               , ClassA
700               , A0 , A1 , A2 , A3 , A4 , A5
701             >::make(
702                 fp_type(f)
703               , obj
704               , a0 , a1 , a2 , a3 , a4 , a5
705             );
706     }
707     template <
708         typename RT
709       , typename ClassT
710       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
711       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5
712     >
713     inline
714     typename detail::expression::function_eval<
715         detail::member_function_ptr<
716             6
717           , RT
718           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5)
719         >
720       , ClassT
721       , A0 , A1 , A2 , A3 , A4 , A5
722     >::type const
723     bind(
724         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5)
725       , ClassT & obj
726       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
727     )
728     {
729         typedef detail::member_function_ptr<
730             6
731           , RT
732           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5)
733         > fp_type;
734         return
735             detail::expression::function_eval<
736                 fp_type
737               , ClassT
738               , A0 , A1 , A2 , A3 , A4 , A5
739             >::make(
740                 fp_type(f)
741               , obj
742               , a0 , a1 , a2 , a3 , a4 , a5
743             );
744     }
745     
746     
747     
748     
749     
750     
751     
752     template <
753         typename RT
754       , typename ClassT
755       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
756       , typename ClassA
757       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6
758     >
759     inline
760     typename detail::expression::function_eval<
761         detail::member_function_ptr<
762             7
763           , RT
764           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
765         >
766       , ClassA
767       , A0 , A1 , A2 , A3 , A4 , A5 , A6
768     >::type const
769     bind(
770         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
771       , ClassA const & obj
772       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
773     )
774     {
775         typedef detail::member_function_ptr<
776             7
777           , RT
778           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
779         > fp_type;
780         return
781             detail::expression::function_eval<
782                 fp_type
783               , ClassA
784               , A0 , A1 , A2 , A3 , A4 , A5 , A6
785             >::make(
786                 fp_type(f)
787               , obj
788               , a0 , a1 , a2 , a3 , a4 , a5 , a6
789             );
790     }
791     template <
792         typename RT
793       , typename ClassT
794       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
795       , typename ClassA
796       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6
797     >
798     inline
799     typename detail::expression::function_eval<
800         detail::member_function_ptr<
801             7
802           , RT
803           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6) const
804         >
805       , ClassA
806       , A0 , A1 , A2 , A3 , A4 , A5 , A6
807     >::type const
808     bind(
809         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6) const
810       , ClassA const & obj
811       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
812     )
813     {
814         typedef detail::member_function_ptr<
815             7
816           , RT
817           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6) const
818         > fp_type;
819         return
820             detail::expression::function_eval<
821                 fp_type
822               , ClassA
823               , A0 , A1 , A2 , A3 , A4 , A5 , A6
824             >::make(
825                 fp_type(f)
826               , obj
827               , a0 , a1 , a2 , a3 , a4 , a5 , a6
828             );
829     }
830     template <
831         typename RT
832       , typename ClassT
833       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
834       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6
835     >
836     inline
837     typename detail::expression::function_eval<
838         detail::member_function_ptr<
839             7
840           , RT
841           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
842         >
843       , ClassT
844       , A0 , A1 , A2 , A3 , A4 , A5 , A6
845     >::type const
846     bind(
847         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
848       , ClassT & obj
849       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
850     )
851     {
852         typedef detail::member_function_ptr<
853             7
854           , RT
855           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
856         > fp_type;
857         return
858             detail::expression::function_eval<
859                 fp_type
860               , ClassT
861               , A0 , A1 , A2 , A3 , A4 , A5 , A6
862             >::make(
863                 fp_type(f)
864               , obj
865               , a0 , a1 , a2 , a3 , a4 , a5 , a6
866             );
867     }
868     
869     
870     
871     
872     
873     
874     
875     template <
876         typename RT
877       , typename ClassT
878       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
879       , typename ClassA
880       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7
881     >
882     inline
883     typename detail::expression::function_eval<
884         detail::member_function_ptr<
885             8
886           , RT
887           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
888         >
889       , ClassA
890       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
891     >::type const
892     bind(
893         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
894       , ClassA const & obj
895       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
896     )
897     {
898         typedef detail::member_function_ptr<
899             8
900           , RT
901           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
902         > fp_type;
903         return
904             detail::expression::function_eval<
905                 fp_type
906               , ClassA
907               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
908             >::make(
909                 fp_type(f)
910               , obj
911               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7
912             );
913     }
914     template <
915         typename RT
916       , typename ClassT
917       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
918       , typename ClassA
919       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7
920     >
921     inline
922     typename detail::expression::function_eval<
923         detail::member_function_ptr<
924             8
925           , RT
926           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const
927         >
928       , ClassA
929       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
930     >::type const
931     bind(
932         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const
933       , ClassA const & obj
934       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
935     )
936     {
937         typedef detail::member_function_ptr<
938             8
939           , RT
940           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const
941         > fp_type;
942         return
943             detail::expression::function_eval<
944                 fp_type
945               , ClassA
946               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
947             >::make(
948                 fp_type(f)
949               , obj
950               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7
951             );
952     }
953     template <
954         typename RT
955       , typename ClassT
956       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
957       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7
958     >
959     inline
960     typename detail::expression::function_eval<
961         detail::member_function_ptr<
962             8
963           , RT
964           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
965         >
966       , ClassT
967       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
968     >::type const
969     bind(
970         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
971       , ClassT & obj
972       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
973     )
974     {
975         typedef detail::member_function_ptr<
976             8
977           , RT
978           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
979         > fp_type;
980         return
981             detail::expression::function_eval<
982                 fp_type
983               , ClassT
984               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
985             >::make(
986                 fp_type(f)
987               , obj
988               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7
989             );
990     }
991     
992     
993     
994     
995     
996     
997     
998     template <
999         typename RT
1000       , typename ClassT
1001       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
1002       , typename ClassA
1003       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8
1004     >
1005     inline
1006     typename detail::expression::function_eval<
1007         detail::member_function_ptr<
1008             9
1009           , RT
1010           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
1011         >
1012       , ClassA
1013       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
1014     >::type const
1015     bind(
1016         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
1017       , ClassA const & obj
1018       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8
1019     )
1020     {
1021         typedef detail::member_function_ptr<
1022             9
1023           , RT
1024           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
1025         > fp_type;
1026         return
1027             detail::expression::function_eval<
1028                 fp_type
1029               , ClassA
1030               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
1031             >::make(
1032                 fp_type(f)
1033               , obj
1034               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8
1035             );
1036     }
1037     template <
1038         typename RT
1039       , typename ClassT
1040       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
1041       , typename ClassA
1042       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8
1043     >
1044     inline
1045     typename detail::expression::function_eval<
1046         detail::member_function_ptr<
1047             9
1048           , RT
1049           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const
1050         >
1051       , ClassA
1052       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
1053     >::type const
1054     bind(
1055         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const
1056       , ClassA const & obj
1057       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8
1058     )
1059     {
1060         typedef detail::member_function_ptr<
1061             9
1062           , RT
1063           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const
1064         > fp_type;
1065         return
1066             detail::expression::function_eval<
1067                 fp_type
1068               , ClassA
1069               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
1070             >::make(
1071                 fp_type(f)
1072               , obj
1073               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8
1074             );
1075     }
1076     template <
1077         typename RT
1078       , typename ClassT
1079       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
1080       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8
1081     >
1082     inline
1083     typename detail::expression::function_eval<
1084         detail::member_function_ptr<
1085             9
1086           , RT
1087           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
1088         >
1089       , ClassT
1090       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
1091     >::type const
1092     bind(
1093         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
1094       , ClassT & obj
1095       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8
1096     )
1097     {
1098         typedef detail::member_function_ptr<
1099             9
1100           , RT
1101           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
1102         > fp_type;
1103         return
1104             detail::expression::function_eval<
1105                 fp_type
1106               , ClassT
1107               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
1108             >::make(
1109                 fp_type(f)
1110               , obj
1111               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8
1112             );
1113     }
1114     
1115     
1116     
1117     
1118     
1119     
1120     
1121     template <
1122         typename RT
1123       , typename ClassT
1124       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
1125       , typename ClassA
1126       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9
1127     >
1128     inline
1129     typename detail::expression::function_eval<
1130         detail::member_function_ptr<
1131             10
1132           , RT
1133           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
1134         >
1135       , ClassA
1136       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
1137     >::type const
1138     bind(
1139         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
1140       , ClassA const & obj
1141       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9
1142     )
1143     {
1144         typedef detail::member_function_ptr<
1145             10
1146           , RT
1147           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
1148         > fp_type;
1149         return
1150             detail::expression::function_eval<
1151                 fp_type
1152               , ClassA
1153               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
1154             >::make(
1155                 fp_type(f)
1156               , obj
1157               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9
1158             );
1159     }
1160     template <
1161         typename RT
1162       , typename ClassT
1163       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
1164       , typename ClassA
1165       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9
1166     >
1167     inline
1168     typename detail::expression::function_eval<
1169         detail::member_function_ptr<
1170             10
1171           , RT
1172           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const
1173         >
1174       , ClassA
1175       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
1176     >::type const
1177     bind(
1178         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const
1179       , ClassA const & obj
1180       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9
1181     )
1182     {
1183         typedef detail::member_function_ptr<
1184             10
1185           , RT
1186           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const
1187         > fp_type;
1188         return
1189             detail::expression::function_eval<
1190                 fp_type
1191               , ClassA
1192               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
1193             >::make(
1194                 fp_type(f)
1195               , obj
1196               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9
1197             );
1198     }
1199     template <
1200         typename RT
1201       , typename ClassT
1202       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
1203       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9
1204     >
1205     inline
1206     typename detail::expression::function_eval<
1207         detail::member_function_ptr<
1208             10
1209           , RT
1210           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
1211         >
1212       , ClassT
1213       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
1214     >::type const
1215     bind(
1216         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
1217       , ClassT & obj
1218       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9
1219     )
1220     {
1221         typedef detail::member_function_ptr<
1222             10
1223           , RT
1224           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
1225         > fp_type;
1226         return
1227             detail::expression::function_eval<
1228                 fp_type
1229               , ClassT
1230               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
1231             >::make(
1232                 fp_type(f)
1233               , obj
1234               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9
1235             );
1236     }
1237     
1238     
1239     
1240     
1241     
1242     
1243     
1244     template <
1245         typename RT
1246       , typename ClassT
1247       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10
1248       , typename ClassA
1249       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10
1250     >
1251     inline
1252     typename detail::expression::function_eval<
1253         detail::member_function_ptr<
1254             11
1255           , RT
1256           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
1257         >
1258       , ClassA
1259       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
1260     >::type const
1261     bind(
1262         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
1263       , ClassA const & obj
1264       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10
1265     )
1266     {
1267         typedef detail::member_function_ptr<
1268             11
1269           , RT
1270           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
1271         > fp_type;
1272         return
1273             detail::expression::function_eval<
1274                 fp_type
1275               , ClassA
1276               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
1277             >::make(
1278                 fp_type(f)
1279               , obj
1280               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10
1281             );
1282     }
1283     template <
1284         typename RT
1285       , typename ClassT
1286       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10
1287       , typename ClassA
1288       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10
1289     >
1290     inline
1291     typename detail::expression::function_eval<
1292         detail::member_function_ptr<
1293             11
1294           , RT
1295           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const
1296         >
1297       , ClassA
1298       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
1299     >::type const
1300     bind(
1301         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const
1302       , ClassA const & obj
1303       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10
1304     )
1305     {
1306         typedef detail::member_function_ptr<
1307             11
1308           , RT
1309           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const
1310         > fp_type;
1311         return
1312             detail::expression::function_eval<
1313                 fp_type
1314               , ClassA
1315               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
1316             >::make(
1317                 fp_type(f)
1318               , obj
1319               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10
1320             );
1321     }
1322     template <
1323         typename RT
1324       , typename ClassT
1325       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10
1326       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10
1327     >
1328     inline
1329     typename detail::expression::function_eval<
1330         detail::member_function_ptr<
1331             11
1332           , RT
1333           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
1334         >
1335       , ClassT
1336       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
1337     >::type const
1338     bind(
1339         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
1340       , ClassT & obj
1341       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10
1342     )
1343     {
1344         typedef detail::member_function_ptr<
1345             11
1346           , RT
1347           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
1348         > fp_type;
1349         return
1350             detail::expression::function_eval<
1351                 fp_type
1352               , ClassT
1353               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
1354             >::make(
1355                 fp_type(f)
1356               , obj
1357               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10
1358             );
1359     }
1360     
1361     
1362     
1363     
1364     
1365     
1366     
1367     template <
1368         typename RT
1369       , typename ClassT
1370       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11
1371       , typename ClassA
1372       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11
1373     >
1374     inline
1375     typename detail::expression::function_eval<
1376         detail::member_function_ptr<
1377             12
1378           , RT
1379           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
1380         >
1381       , ClassA
1382       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
1383     >::type const
1384     bind(
1385         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
1386       , ClassA const & obj
1387       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11
1388     )
1389     {
1390         typedef detail::member_function_ptr<
1391             12
1392           , RT
1393           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
1394         > fp_type;
1395         return
1396             detail::expression::function_eval<
1397                 fp_type
1398               , ClassA
1399               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
1400             >::make(
1401                 fp_type(f)
1402               , obj
1403               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11
1404             );
1405     }
1406     template <
1407         typename RT
1408       , typename ClassT
1409       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11
1410       , typename ClassA
1411       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11
1412     >
1413     inline
1414     typename detail::expression::function_eval<
1415         detail::member_function_ptr<
1416             12
1417           , RT
1418           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const
1419         >
1420       , ClassA
1421       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
1422     >::type const
1423     bind(
1424         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const
1425       , ClassA const & obj
1426       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11
1427     )
1428     {
1429         typedef detail::member_function_ptr<
1430             12
1431           , RT
1432           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const
1433         > fp_type;
1434         return
1435             detail::expression::function_eval<
1436                 fp_type
1437               , ClassA
1438               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
1439             >::make(
1440                 fp_type(f)
1441               , obj
1442               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11
1443             );
1444     }
1445     template <
1446         typename RT
1447       , typename ClassT
1448       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11
1449       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11
1450     >
1451     inline
1452     typename detail::expression::function_eval<
1453         detail::member_function_ptr<
1454             12
1455           , RT
1456           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
1457         >
1458       , ClassT
1459       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
1460     >::type const
1461     bind(
1462         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
1463       , ClassT & obj
1464       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11
1465     )
1466     {
1467         typedef detail::member_function_ptr<
1468             12
1469           , RT
1470           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
1471         > fp_type;
1472         return
1473             detail::expression::function_eval<
1474                 fp_type
1475               , ClassT
1476               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
1477             >::make(
1478                 fp_type(f)
1479               , obj
1480               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11
1481             );
1482     }
1483     
1484     
1485     
1486     
1487     
1488     
1489     
1490     template <
1491         typename RT
1492       , typename ClassT
1493       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12
1494       , typename ClassA
1495       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12
1496     >
1497     inline
1498     typename detail::expression::function_eval<
1499         detail::member_function_ptr<
1500             13
1501           , RT
1502           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
1503         >
1504       , ClassA
1505       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
1506     >::type const
1507     bind(
1508         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
1509       , ClassA const & obj
1510       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12
1511     )
1512     {
1513         typedef detail::member_function_ptr<
1514             13
1515           , RT
1516           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
1517         > fp_type;
1518         return
1519             detail::expression::function_eval<
1520                 fp_type
1521               , ClassA
1522               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
1523             >::make(
1524                 fp_type(f)
1525               , obj
1526               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12
1527             );
1528     }
1529     template <
1530         typename RT
1531       , typename ClassT
1532       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12
1533       , typename ClassA
1534       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12
1535     >
1536     inline
1537     typename detail::expression::function_eval<
1538         detail::member_function_ptr<
1539             13
1540           , RT
1541           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const
1542         >
1543       , ClassA
1544       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
1545     >::type const
1546     bind(
1547         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const
1548       , ClassA const & obj
1549       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12
1550     )
1551     {
1552         typedef detail::member_function_ptr<
1553             13
1554           , RT
1555           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const
1556         > fp_type;
1557         return
1558             detail::expression::function_eval<
1559                 fp_type
1560               , ClassA
1561               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
1562             >::make(
1563                 fp_type(f)
1564               , obj
1565               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12
1566             );
1567     }
1568     template <
1569         typename RT
1570       , typename ClassT
1571       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12
1572       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12
1573     >
1574     inline
1575     typename detail::expression::function_eval<
1576         detail::member_function_ptr<
1577             13
1578           , RT
1579           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
1580         >
1581       , ClassT
1582       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
1583     >::type const
1584     bind(
1585         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
1586       , ClassT & obj
1587       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12
1588     )
1589     {
1590         typedef detail::member_function_ptr<
1591             13
1592           , RT
1593           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
1594         > fp_type;
1595         return
1596             detail::expression::function_eval<
1597                 fp_type
1598               , ClassT
1599               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
1600             >::make(
1601                 fp_type(f)
1602               , obj
1603               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12
1604             );
1605     }
1606     
1607     
1608     
1609     
1610     
1611     
1612     
1613     template <
1614         typename RT
1615       , typename ClassT
1616       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13
1617       , typename ClassA
1618       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13
1619     >
1620     inline
1621     typename detail::expression::function_eval<
1622         detail::member_function_ptr<
1623             14
1624           , RT
1625           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
1626         >
1627       , ClassA
1628       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
1629     >::type const
1630     bind(
1631         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
1632       , ClassA const & obj
1633       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13
1634     )
1635     {
1636         typedef detail::member_function_ptr<
1637             14
1638           , RT
1639           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
1640         > fp_type;
1641         return
1642             detail::expression::function_eval<
1643                 fp_type
1644               , ClassA
1645               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
1646             >::make(
1647                 fp_type(f)
1648               , obj
1649               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13
1650             );
1651     }
1652     template <
1653         typename RT
1654       , typename ClassT
1655       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13
1656       , typename ClassA
1657       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13
1658     >
1659     inline
1660     typename detail::expression::function_eval<
1661         detail::member_function_ptr<
1662             14
1663           , RT
1664           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const
1665         >
1666       , ClassA
1667       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
1668     >::type const
1669     bind(
1670         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const
1671       , ClassA const & obj
1672       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13
1673     )
1674     {
1675         typedef detail::member_function_ptr<
1676             14
1677           , RT
1678           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const
1679         > fp_type;
1680         return
1681             detail::expression::function_eval<
1682                 fp_type
1683               , ClassA
1684               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
1685             >::make(
1686                 fp_type(f)
1687               , obj
1688               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13
1689             );
1690     }
1691     template <
1692         typename RT
1693       , typename ClassT
1694       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13
1695       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13
1696     >
1697     inline
1698     typename detail::expression::function_eval<
1699         detail::member_function_ptr<
1700             14
1701           , RT
1702           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
1703         >
1704       , ClassT
1705       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
1706     >::type const
1707     bind(
1708         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
1709       , ClassT & obj
1710       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13
1711     )
1712     {
1713         typedef detail::member_function_ptr<
1714             14
1715           , RT
1716           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
1717         > fp_type;
1718         return
1719             detail::expression::function_eval<
1720                 fp_type
1721               , ClassT
1722               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
1723             >::make(
1724                 fp_type(f)
1725               , obj
1726               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13
1727             );
1728     }
1729     
1730     
1731     
1732     
1733     
1734     
1735     
1736     template <
1737         typename RT
1738       , typename ClassT
1739       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14
1740       , typename ClassA
1741       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14
1742     >
1743     inline
1744     typename detail::expression::function_eval<
1745         detail::member_function_ptr<
1746             15
1747           , RT
1748           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
1749         >
1750       , ClassA
1751       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
1752     >::type const
1753     bind(
1754         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
1755       , ClassA const & obj
1756       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14
1757     )
1758     {
1759         typedef detail::member_function_ptr<
1760             15
1761           , RT
1762           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
1763         > fp_type;
1764         return
1765             detail::expression::function_eval<
1766                 fp_type
1767               , ClassA
1768               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
1769             >::make(
1770                 fp_type(f)
1771               , obj
1772               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14
1773             );
1774     }
1775     template <
1776         typename RT
1777       , typename ClassT
1778       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14
1779       , typename ClassA
1780       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14
1781     >
1782     inline
1783     typename detail::expression::function_eval<
1784         detail::member_function_ptr<
1785             15
1786           , RT
1787           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const
1788         >
1789       , ClassA
1790       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
1791     >::type const
1792     bind(
1793         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const
1794       , ClassA const & obj
1795       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14
1796     )
1797     {
1798         typedef detail::member_function_ptr<
1799             15
1800           , RT
1801           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const
1802         > fp_type;
1803         return
1804             detail::expression::function_eval<
1805                 fp_type
1806               , ClassA
1807               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
1808             >::make(
1809                 fp_type(f)
1810               , obj
1811               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14
1812             );
1813     }
1814     template <
1815         typename RT
1816       , typename ClassT
1817       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14
1818       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14
1819     >
1820     inline
1821     typename detail::expression::function_eval<
1822         detail::member_function_ptr<
1823             15
1824           , RT
1825           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
1826         >
1827       , ClassT
1828       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
1829     >::type const
1830     bind(
1831         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
1832       , ClassT & obj
1833       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14
1834     )
1835     {
1836         typedef detail::member_function_ptr<
1837             15
1838           , RT
1839           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
1840         > fp_type;
1841         return
1842             detail::expression::function_eval<
1843                 fp_type
1844               , ClassT
1845               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
1846             >::make(
1847                 fp_type(f)
1848               , obj
1849               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14
1850             );
1851     }
1852     
1853     
1854     
1855     
1856     
1857     
1858     
1859     template <
1860         typename RT
1861       , typename ClassT
1862       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15
1863       , typename ClassA
1864       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15
1865     >
1866     inline
1867     typename detail::expression::function_eval<
1868         detail::member_function_ptr<
1869             16
1870           , RT
1871           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
1872         >
1873       , ClassA
1874       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
1875     >::type const
1876     bind(
1877         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
1878       , ClassA const & obj
1879       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15
1880     )
1881     {
1882         typedef detail::member_function_ptr<
1883             16
1884           , RT
1885           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
1886         > fp_type;
1887         return
1888             detail::expression::function_eval<
1889                 fp_type
1890               , ClassA
1891               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
1892             >::make(
1893                 fp_type(f)
1894               , obj
1895               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15
1896             );
1897     }
1898     template <
1899         typename RT
1900       , typename ClassT
1901       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15
1902       , typename ClassA
1903       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15
1904     >
1905     inline
1906     typename detail::expression::function_eval<
1907         detail::member_function_ptr<
1908             16
1909           , RT
1910           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const
1911         >
1912       , ClassA
1913       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
1914     >::type const
1915     bind(
1916         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const
1917       , ClassA const & obj
1918       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15
1919     )
1920     {
1921         typedef detail::member_function_ptr<
1922             16
1923           , RT
1924           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const
1925         > fp_type;
1926         return
1927             detail::expression::function_eval<
1928                 fp_type
1929               , ClassA
1930               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
1931             >::make(
1932                 fp_type(f)
1933               , obj
1934               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15
1935             );
1936     }
1937     template <
1938         typename RT
1939       , typename ClassT
1940       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15
1941       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15
1942     >
1943     inline
1944     typename detail::expression::function_eval<
1945         detail::member_function_ptr<
1946             16
1947           , RT
1948           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
1949         >
1950       , ClassT
1951       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
1952     >::type const
1953     bind(
1954         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
1955       , ClassT & obj
1956       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15
1957     )
1958     {
1959         typedef detail::member_function_ptr<
1960             16
1961           , RT
1962           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
1963         > fp_type;
1964         return
1965             detail::expression::function_eval<
1966                 fp_type
1967               , ClassT
1968               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
1969             >::make(
1970                 fp_type(f)
1971               , obj
1972               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15
1973             );
1974     }
1975     
1976     
1977     
1978     
1979     
1980     
1981     
1982     template <
1983         typename RT
1984       , typename ClassT
1985       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16
1986       , typename ClassA
1987       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16
1988     >
1989     inline
1990     typename detail::expression::function_eval<
1991         detail::member_function_ptr<
1992             17
1993           , RT
1994           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
1995         >
1996       , ClassA
1997       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
1998     >::type const
1999     bind(
2000         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
2001       , ClassA const & obj
2002       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16
2003     )
2004     {
2005         typedef detail::member_function_ptr<
2006             17
2007           , RT
2008           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
2009         > fp_type;
2010         return
2011             detail::expression::function_eval<
2012                 fp_type
2013               , ClassA
2014               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
2015             >::make(
2016                 fp_type(f)
2017               , obj
2018               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16
2019             );
2020     }
2021     template <
2022         typename RT
2023       , typename ClassT
2024       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16
2025       , typename ClassA
2026       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16
2027     >
2028     inline
2029     typename detail::expression::function_eval<
2030         detail::member_function_ptr<
2031             17
2032           , RT
2033           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const
2034         >
2035       , ClassA
2036       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
2037     >::type const
2038     bind(
2039         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const
2040       , ClassA const & obj
2041       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16
2042     )
2043     {
2044         typedef detail::member_function_ptr<
2045             17
2046           , RT
2047           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const
2048         > fp_type;
2049         return
2050             detail::expression::function_eval<
2051                 fp_type
2052               , ClassA
2053               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
2054             >::make(
2055                 fp_type(f)
2056               , obj
2057               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16
2058             );
2059     }
2060     template <
2061         typename RT
2062       , typename ClassT
2063       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16
2064       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16
2065     >
2066     inline
2067     typename detail::expression::function_eval<
2068         detail::member_function_ptr<
2069             17
2070           , RT
2071           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
2072         >
2073       , ClassT
2074       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
2075     >::type const
2076     bind(
2077         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
2078       , ClassT & obj
2079       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16
2080     )
2081     {
2082         typedef detail::member_function_ptr<
2083             17
2084           , RT
2085           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
2086         > fp_type;
2087         return
2088             detail::expression::function_eval<
2089                 fp_type
2090               , ClassT
2091               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
2092             >::make(
2093                 fp_type(f)
2094               , obj
2095               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16
2096             );
2097     }
2098     
2099     
2100     
2101     
2102     
2103     
2104     
2105     template <
2106         typename RT
2107       , typename ClassT
2108       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17
2109       , typename ClassA
2110       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17
2111     >
2112     inline
2113     typename detail::expression::function_eval<
2114         detail::member_function_ptr<
2115             18
2116           , RT
2117           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
2118         >
2119       , ClassA
2120       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
2121     >::type const
2122     bind(
2123         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
2124       , ClassA const & obj
2125       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17
2126     )
2127     {
2128         typedef detail::member_function_ptr<
2129             18
2130           , RT
2131           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
2132         > fp_type;
2133         return
2134             detail::expression::function_eval<
2135                 fp_type
2136               , ClassA
2137               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
2138             >::make(
2139                 fp_type(f)
2140               , obj
2141               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17
2142             );
2143     }
2144     template <
2145         typename RT
2146       , typename ClassT
2147       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17
2148       , typename ClassA
2149       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17
2150     >
2151     inline
2152     typename detail::expression::function_eval<
2153         detail::member_function_ptr<
2154             18
2155           , RT
2156           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const
2157         >
2158       , ClassA
2159       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
2160     >::type const
2161     bind(
2162         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const
2163       , ClassA const & obj
2164       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17
2165     )
2166     {
2167         typedef detail::member_function_ptr<
2168             18
2169           , RT
2170           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const
2171         > fp_type;
2172         return
2173             detail::expression::function_eval<
2174                 fp_type
2175               , ClassA
2176               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
2177             >::make(
2178                 fp_type(f)
2179               , obj
2180               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17
2181             );
2182     }
2183     template <
2184         typename RT
2185       , typename ClassT
2186       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17
2187       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17
2188     >
2189     inline
2190     typename detail::expression::function_eval<
2191         detail::member_function_ptr<
2192             18
2193           , RT
2194           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
2195         >
2196       , ClassT
2197       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
2198     >::type const
2199     bind(
2200         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
2201       , ClassT & obj
2202       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17
2203     )
2204     {
2205         typedef detail::member_function_ptr<
2206             18
2207           , RT
2208           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
2209         > fp_type;
2210         return
2211             detail::expression::function_eval<
2212                 fp_type
2213               , ClassT
2214               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
2215             >::make(
2216                 fp_type(f)
2217               , obj
2218               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17
2219             );
2220     }
2221     
2222     
2223     
2224     
2225     
2226     
2227     
2228     template <
2229         typename RT
2230       , typename ClassT
2231       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18
2232       , typename ClassA
2233       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18
2234     >
2235     inline
2236     typename detail::expression::function_eval<
2237         detail::member_function_ptr<
2238             19
2239           , RT
2240           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
2241         >
2242       , ClassA
2243       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
2244     >::type const
2245     bind(
2246         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
2247       , ClassA const & obj
2248       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18
2249     )
2250     {
2251         typedef detail::member_function_ptr<
2252             19
2253           , RT
2254           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
2255         > fp_type;
2256         return
2257             detail::expression::function_eval<
2258                 fp_type
2259               , ClassA
2260               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
2261             >::make(
2262                 fp_type(f)
2263               , obj
2264               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18
2265             );
2266     }
2267     template <
2268         typename RT
2269       , typename ClassT
2270       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18
2271       , typename ClassA
2272       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18
2273     >
2274     inline
2275     typename detail::expression::function_eval<
2276         detail::member_function_ptr<
2277             19
2278           , RT
2279           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const
2280         >
2281       , ClassA
2282       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
2283     >::type const
2284     bind(
2285         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const
2286       , ClassA const & obj
2287       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18
2288     )
2289     {
2290         typedef detail::member_function_ptr<
2291             19
2292           , RT
2293           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const
2294         > fp_type;
2295         return
2296             detail::expression::function_eval<
2297                 fp_type
2298               , ClassA
2299               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
2300             >::make(
2301                 fp_type(f)
2302               , obj
2303               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18
2304             );
2305     }
2306     template <
2307         typename RT
2308       , typename ClassT
2309       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18
2310       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18
2311     >
2312     inline
2313     typename detail::expression::function_eval<
2314         detail::member_function_ptr<
2315             19
2316           , RT
2317           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
2318         >
2319       , ClassT
2320       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
2321     >::type const
2322     bind(
2323         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
2324       , ClassT & obj
2325       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18
2326     )
2327     {
2328         typedef detail::member_function_ptr<
2329             19
2330           , RT
2331           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
2332         > fp_type;
2333         return
2334             detail::expression::function_eval<
2335                 fp_type
2336               , ClassT
2337               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
2338             >::make(
2339                 fp_type(f)
2340               , obj
2341               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18
2342             );
2343     }
2344     
2345     
2346     
2347     
2348     
2349     
2350     
2351     template <
2352         typename RT
2353       , typename ClassT
2354       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19
2355       , typename ClassA
2356       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19
2357     >
2358     inline
2359     typename detail::expression::function_eval<
2360         detail::member_function_ptr<
2361             20
2362           , RT
2363           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
2364         >
2365       , ClassA
2366       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
2367     >::type const
2368     bind(
2369         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
2370       , ClassA const & obj
2371       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19
2372     )
2373     {
2374         typedef detail::member_function_ptr<
2375             20
2376           , RT
2377           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
2378         > fp_type;
2379         return
2380             detail::expression::function_eval<
2381                 fp_type
2382               , ClassA
2383               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
2384             >::make(
2385                 fp_type(f)
2386               , obj
2387               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19
2388             );
2389     }
2390     template <
2391         typename RT
2392       , typename ClassT
2393       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19
2394       , typename ClassA
2395       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19
2396     >
2397     inline
2398     typename detail::expression::function_eval<
2399         detail::member_function_ptr<
2400             20
2401           , RT
2402           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const
2403         >
2404       , ClassA
2405       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
2406     >::type const
2407     bind(
2408         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const
2409       , ClassA const & obj
2410       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19
2411     )
2412     {
2413         typedef detail::member_function_ptr<
2414             20
2415           , RT
2416           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const
2417         > fp_type;
2418         return
2419             detail::expression::function_eval<
2420                 fp_type
2421               , ClassA
2422               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
2423             >::make(
2424                 fp_type(f)
2425               , obj
2426               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19
2427             );
2428     }
2429     template <
2430         typename RT
2431       , typename ClassT
2432       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19
2433       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19
2434     >
2435     inline
2436     typename detail::expression::function_eval<
2437         detail::member_function_ptr<
2438             20
2439           , RT
2440           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
2441         >
2442       , ClassT
2443       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
2444     >::type const
2445     bind(
2446         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
2447       , ClassT & obj
2448       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19
2449     )
2450     {
2451         typedef detail::member_function_ptr<
2452             20
2453           , RT
2454           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
2455         > fp_type;
2456         return
2457             detail::expression::function_eval<
2458                 fp_type
2459               , ClassT
2460               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
2461             >::make(
2462                 fp_type(f)
2463               , obj
2464               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19
2465             );
2466     }
2467     
2468     
2469     
2470     
2471     
2472     
2473     
2474     template <
2475         typename RT
2476       , typename ClassT
2477       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20
2478       , typename ClassA
2479       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20
2480     >
2481     inline
2482     typename detail::expression::function_eval<
2483         detail::member_function_ptr<
2484             21
2485           , RT
2486           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
2487         >
2488       , ClassA
2489       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
2490     >::type const
2491     bind(
2492         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
2493       , ClassA const & obj
2494       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20
2495     )
2496     {
2497         typedef detail::member_function_ptr<
2498             21
2499           , RT
2500           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
2501         > fp_type;
2502         return
2503             detail::expression::function_eval<
2504                 fp_type
2505               , ClassA
2506               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
2507             >::make(
2508                 fp_type(f)
2509               , obj
2510               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20
2511             );
2512     }
2513     template <
2514         typename RT
2515       , typename ClassT
2516       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20
2517       , typename ClassA
2518       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20
2519     >
2520     inline
2521     typename detail::expression::function_eval<
2522         detail::member_function_ptr<
2523             21
2524           , RT
2525           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const
2526         >
2527       , ClassA
2528       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
2529     >::type const
2530     bind(
2531         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const
2532       , ClassA const & obj
2533       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20
2534     )
2535     {
2536         typedef detail::member_function_ptr<
2537             21
2538           , RT
2539           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const
2540         > fp_type;
2541         return
2542             detail::expression::function_eval<
2543                 fp_type
2544               , ClassA
2545               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
2546             >::make(
2547                 fp_type(f)
2548               , obj
2549               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20
2550             );
2551     }
2552     template <
2553         typename RT
2554       , typename ClassT
2555       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20
2556       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20
2557     >
2558     inline
2559     typename detail::expression::function_eval<
2560         detail::member_function_ptr<
2561             21
2562           , RT
2563           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
2564         >
2565       , ClassT
2566       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
2567     >::type const
2568     bind(
2569         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
2570       , ClassT & obj
2571       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20
2572     )
2573     {
2574         typedef detail::member_function_ptr<
2575             21
2576           , RT
2577           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
2578         > fp_type;
2579         return
2580             detail::expression::function_eval<
2581                 fp_type
2582               , ClassT
2583               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
2584             >::make(
2585                 fp_type(f)
2586               , obj
2587               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20
2588             );
2589     }
2590     
2591     
2592     
2593     
2594     
2595     
2596     
2597     template <
2598         typename RT
2599       , typename ClassT
2600       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21
2601       , typename ClassA
2602       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21
2603     >
2604     inline
2605     typename detail::expression::function_eval<
2606         detail::member_function_ptr<
2607             22
2608           , RT
2609           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
2610         >
2611       , ClassA
2612       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
2613     >::type const
2614     bind(
2615         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
2616       , ClassA const & obj
2617       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21
2618     )
2619     {
2620         typedef detail::member_function_ptr<
2621             22
2622           , RT
2623           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
2624         > fp_type;
2625         return
2626             detail::expression::function_eval<
2627                 fp_type
2628               , ClassA
2629               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
2630             >::make(
2631                 fp_type(f)
2632               , obj
2633               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21
2634             );
2635     }
2636     template <
2637         typename RT
2638       , typename ClassT
2639       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21
2640       , typename ClassA
2641       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21
2642     >
2643     inline
2644     typename detail::expression::function_eval<
2645         detail::member_function_ptr<
2646             22
2647           , RT
2648           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const
2649         >
2650       , ClassA
2651       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
2652     >::type const
2653     bind(
2654         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const
2655       , ClassA const & obj
2656       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21
2657     )
2658     {
2659         typedef detail::member_function_ptr<
2660             22
2661           , RT
2662           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const
2663         > fp_type;
2664         return
2665             detail::expression::function_eval<
2666                 fp_type
2667               , ClassA
2668               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
2669             >::make(
2670                 fp_type(f)
2671               , obj
2672               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21
2673             );
2674     }
2675     template <
2676         typename RT
2677       , typename ClassT
2678       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21
2679       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21
2680     >
2681     inline
2682     typename detail::expression::function_eval<
2683         detail::member_function_ptr<
2684             22
2685           , RT
2686           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
2687         >
2688       , ClassT
2689       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
2690     >::type const
2691     bind(
2692         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
2693       , ClassT & obj
2694       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21
2695     )
2696     {
2697         typedef detail::member_function_ptr<
2698             22
2699           , RT
2700           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
2701         > fp_type;
2702         return
2703             detail::expression::function_eval<
2704                 fp_type
2705               , ClassT
2706               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
2707             >::make(
2708                 fp_type(f)
2709               , obj
2710               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21
2711             );
2712     }
2713     
2714     
2715     
2716     
2717     
2718     
2719     
2720     template <
2721         typename RT
2722       , typename ClassT
2723       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22
2724       , typename ClassA
2725       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22
2726     >
2727     inline
2728     typename detail::expression::function_eval<
2729         detail::member_function_ptr<
2730             23
2731           , RT
2732           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
2733         >
2734       , ClassA
2735       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
2736     >::type const
2737     bind(
2738         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
2739       , ClassA const & obj
2740       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22
2741     )
2742     {
2743         typedef detail::member_function_ptr<
2744             23
2745           , RT
2746           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
2747         > fp_type;
2748         return
2749             detail::expression::function_eval<
2750                 fp_type
2751               , ClassA
2752               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
2753             >::make(
2754                 fp_type(f)
2755               , obj
2756               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22
2757             );
2758     }
2759     template <
2760         typename RT
2761       , typename ClassT
2762       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22
2763       , typename ClassA
2764       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22
2765     >
2766     inline
2767     typename detail::expression::function_eval<
2768         detail::member_function_ptr<
2769             23
2770           , RT
2771           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const
2772         >
2773       , ClassA
2774       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
2775     >::type const
2776     bind(
2777         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const
2778       , ClassA const & obj
2779       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22
2780     )
2781     {
2782         typedef detail::member_function_ptr<
2783             23
2784           , RT
2785           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const
2786         > fp_type;
2787         return
2788             detail::expression::function_eval<
2789                 fp_type
2790               , ClassA
2791               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
2792             >::make(
2793                 fp_type(f)
2794               , obj
2795               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22
2796             );
2797     }
2798     template <
2799         typename RT
2800       , typename ClassT
2801       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22
2802       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22
2803     >
2804     inline
2805     typename detail::expression::function_eval<
2806         detail::member_function_ptr<
2807             23
2808           , RT
2809           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
2810         >
2811       , ClassT
2812       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
2813     >::type const
2814     bind(
2815         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
2816       , ClassT & obj
2817       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22
2818     )
2819     {
2820         typedef detail::member_function_ptr<
2821             23
2822           , RT
2823           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
2824         > fp_type;
2825         return
2826             detail::expression::function_eval<
2827                 fp_type
2828               , ClassT
2829               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
2830             >::make(
2831                 fp_type(f)
2832               , obj
2833               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22
2834             );
2835     }
2836     
2837     
2838     
2839     
2840     
2841     
2842     
2843     template <
2844         typename RT
2845       , typename ClassT
2846       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23
2847       , typename ClassA
2848       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23
2849     >
2850     inline
2851     typename detail::expression::function_eval<
2852         detail::member_function_ptr<
2853             24
2854           , RT
2855           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
2856         >
2857       , ClassA
2858       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
2859     >::type const
2860     bind(
2861         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
2862       , ClassA const & obj
2863       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23
2864     )
2865     {
2866         typedef detail::member_function_ptr<
2867             24
2868           , RT
2869           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
2870         > fp_type;
2871         return
2872             detail::expression::function_eval<
2873                 fp_type
2874               , ClassA
2875               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
2876             >::make(
2877                 fp_type(f)
2878               , obj
2879               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23
2880             );
2881     }
2882     template <
2883         typename RT
2884       , typename ClassT
2885       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23
2886       , typename ClassA
2887       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23
2888     >
2889     inline
2890     typename detail::expression::function_eval<
2891         detail::member_function_ptr<
2892             24
2893           , RT
2894           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const
2895         >
2896       , ClassA
2897       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
2898     >::type const
2899     bind(
2900         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const
2901       , ClassA const & obj
2902       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23
2903     )
2904     {
2905         typedef detail::member_function_ptr<
2906             24
2907           , RT
2908           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const
2909         > fp_type;
2910         return
2911             detail::expression::function_eval<
2912                 fp_type
2913               , ClassA
2914               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
2915             >::make(
2916                 fp_type(f)
2917               , obj
2918               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23
2919             );
2920     }
2921     template <
2922         typename RT
2923       , typename ClassT
2924       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23
2925       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23
2926     >
2927     inline
2928     typename detail::expression::function_eval<
2929         detail::member_function_ptr<
2930             24
2931           , RT
2932           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
2933         >
2934       , ClassT
2935       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
2936     >::type const
2937     bind(
2938         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
2939       , ClassT & obj
2940       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23
2941     )
2942     {
2943         typedef detail::member_function_ptr<
2944             24
2945           , RT
2946           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
2947         > fp_type;
2948         return
2949             detail::expression::function_eval<
2950                 fp_type
2951               , ClassT
2952               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
2953             >::make(
2954                 fp_type(f)
2955               , obj
2956               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23
2957             );
2958     }
2959     
2960     
2961     
2962     
2963     
2964     
2965     
2966     template <
2967         typename RT
2968       , typename ClassT
2969       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24
2970       , typename ClassA
2971       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24
2972     >
2973     inline
2974     typename detail::expression::function_eval<
2975         detail::member_function_ptr<
2976             25
2977           , RT
2978           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
2979         >
2980       , ClassA
2981       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
2982     >::type const
2983     bind(
2984         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
2985       , ClassA const & obj
2986       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24
2987     )
2988     {
2989         typedef detail::member_function_ptr<
2990             25
2991           , RT
2992           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
2993         > fp_type;
2994         return
2995             detail::expression::function_eval<
2996                 fp_type
2997               , ClassA
2998               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
2999             >::make(
3000                 fp_type(f)
3001               , obj
3002               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24
3003             );
3004     }
3005     template <
3006         typename RT
3007       , typename ClassT
3008       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24
3009       , typename ClassA
3010       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24
3011     >
3012     inline
3013     typename detail::expression::function_eval<
3014         detail::member_function_ptr<
3015             25
3016           , RT
3017           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const
3018         >
3019       , ClassA
3020       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
3021     >::type const
3022     bind(
3023         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const
3024       , ClassA const & obj
3025       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24
3026     )
3027     {
3028         typedef detail::member_function_ptr<
3029             25
3030           , RT
3031           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const
3032         > fp_type;
3033         return
3034             detail::expression::function_eval<
3035                 fp_type
3036               , ClassA
3037               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
3038             >::make(
3039                 fp_type(f)
3040               , obj
3041               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24
3042             );
3043     }
3044     template <
3045         typename RT
3046       , typename ClassT
3047       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24
3048       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24
3049     >
3050     inline
3051     typename detail::expression::function_eval<
3052         detail::member_function_ptr<
3053             25
3054           , RT
3055           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
3056         >
3057       , ClassT
3058       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
3059     >::type const
3060     bind(
3061         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
3062       , ClassT & obj
3063       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24
3064     )
3065     {
3066         typedef detail::member_function_ptr<
3067             25
3068           , RT
3069           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
3070         > fp_type;
3071         return
3072             detail::expression::function_eval<
3073                 fp_type
3074               , ClassT
3075               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
3076             >::make(
3077                 fp_type(f)
3078               , obj
3079               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24
3080             );
3081     }
3082     
3083     
3084     
3085     
3086     
3087     
3088     
3089     template <
3090         typename RT
3091       , typename ClassT
3092       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25
3093       , typename ClassA
3094       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25
3095     >
3096     inline
3097     typename detail::expression::function_eval<
3098         detail::member_function_ptr<
3099             26
3100           , RT
3101           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
3102         >
3103       , ClassA
3104       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
3105     >::type const
3106     bind(
3107         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
3108       , ClassA const & obj
3109       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25
3110     )
3111     {
3112         typedef detail::member_function_ptr<
3113             26
3114           , RT
3115           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
3116         > fp_type;
3117         return
3118             detail::expression::function_eval<
3119                 fp_type
3120               , ClassA
3121               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
3122             >::make(
3123                 fp_type(f)
3124               , obj
3125               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25
3126             );
3127     }
3128     template <
3129         typename RT
3130       , typename ClassT
3131       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25
3132       , typename ClassA
3133       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25
3134     >
3135     inline
3136     typename detail::expression::function_eval<
3137         detail::member_function_ptr<
3138             26
3139           , RT
3140           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25) const
3141         >
3142       , ClassA
3143       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
3144     >::type const
3145     bind(
3146         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25) const
3147       , ClassA const & obj
3148       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25
3149     )
3150     {
3151         typedef detail::member_function_ptr<
3152             26
3153           , RT
3154           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25) const
3155         > fp_type;
3156         return
3157             detail::expression::function_eval<
3158                 fp_type
3159               , ClassA
3160               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
3161             >::make(
3162                 fp_type(f)
3163               , obj
3164               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25
3165             );
3166     }
3167     template <
3168         typename RT
3169       , typename ClassT
3170       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25
3171       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25
3172     >
3173     inline
3174     typename detail::expression::function_eval<
3175         detail::member_function_ptr<
3176             26
3177           , RT
3178           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
3179         >
3180       , ClassT
3181       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
3182     >::type const
3183     bind(
3184         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
3185       , ClassT & obj
3186       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25
3187     )
3188     {
3189         typedef detail::member_function_ptr<
3190             26
3191           , RT
3192           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
3193         > fp_type;
3194         return
3195             detail::expression::function_eval<
3196                 fp_type
3197               , ClassT
3198               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
3199             >::make(
3200                 fp_type(f)
3201               , obj
3202               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25
3203             );
3204     }
3205     
3206     
3207     
3208     
3209     
3210     
3211     
3212     template <
3213         typename RT
3214       , typename ClassT
3215       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26
3216       , typename ClassA
3217       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26
3218     >
3219     inline
3220     typename detail::expression::function_eval<
3221         detail::member_function_ptr<
3222             27
3223           , RT
3224           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
3225         >
3226       , ClassA
3227       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
3228     >::type const
3229     bind(
3230         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
3231       , ClassA const & obj
3232       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26
3233     )
3234     {
3235         typedef detail::member_function_ptr<
3236             27
3237           , RT
3238           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
3239         > fp_type;
3240         return
3241             detail::expression::function_eval<
3242                 fp_type
3243               , ClassA
3244               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
3245             >::make(
3246                 fp_type(f)
3247               , obj
3248               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26
3249             );
3250     }
3251     template <
3252         typename RT
3253       , typename ClassT
3254       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26
3255       , typename ClassA
3256       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26
3257     >
3258     inline
3259     typename detail::expression::function_eval<
3260         detail::member_function_ptr<
3261             27
3262           , RT
3263           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26) const
3264         >
3265       , ClassA
3266       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
3267     >::type const
3268     bind(
3269         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26) const
3270       , ClassA const & obj
3271       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26
3272     )
3273     {
3274         typedef detail::member_function_ptr<
3275             27
3276           , RT
3277           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26) const
3278         > fp_type;
3279         return
3280             detail::expression::function_eval<
3281                 fp_type
3282               , ClassA
3283               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
3284             >::make(
3285                 fp_type(f)
3286               , obj
3287               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26
3288             );
3289     }
3290     template <
3291         typename RT
3292       , typename ClassT
3293       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26
3294       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26
3295     >
3296     inline
3297     typename detail::expression::function_eval<
3298         detail::member_function_ptr<
3299             27
3300           , RT
3301           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
3302         >
3303       , ClassT
3304       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
3305     >::type const
3306     bind(
3307         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
3308       , ClassT & obj
3309       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26
3310     )
3311     {
3312         typedef detail::member_function_ptr<
3313             27
3314           , RT
3315           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
3316         > fp_type;
3317         return
3318             detail::expression::function_eval<
3319                 fp_type
3320               , ClassT
3321               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
3322             >::make(
3323                 fp_type(f)
3324               , obj
3325               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26
3326             );
3327     }
3328     
3329     
3330     
3331     
3332     
3333     
3334     
3335     template <
3336         typename RT
3337       , typename ClassT
3338       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27
3339       , typename ClassA
3340       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27
3341     >
3342     inline
3343     typename detail::expression::function_eval<
3344         detail::member_function_ptr<
3345             28
3346           , RT
3347           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
3348         >
3349       , ClassA
3350       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
3351     >::type const
3352     bind(
3353         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
3354       , ClassA const & obj
3355       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27
3356     )
3357     {
3358         typedef detail::member_function_ptr<
3359             28
3360           , RT
3361           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
3362         > fp_type;
3363         return
3364             detail::expression::function_eval<
3365                 fp_type
3366               , ClassA
3367               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
3368             >::make(
3369                 fp_type(f)
3370               , obj
3371               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27
3372             );
3373     }
3374     template <
3375         typename RT
3376       , typename ClassT
3377       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27
3378       , typename ClassA
3379       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27
3380     >
3381     inline
3382     typename detail::expression::function_eval<
3383         detail::member_function_ptr<
3384             28
3385           , RT
3386           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27) const
3387         >
3388       , ClassA
3389       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
3390     >::type const
3391     bind(
3392         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27) const
3393       , ClassA const & obj
3394       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27
3395     )
3396     {
3397         typedef detail::member_function_ptr<
3398             28
3399           , RT
3400           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27) const
3401         > fp_type;
3402         return
3403             detail::expression::function_eval<
3404                 fp_type
3405               , ClassA
3406               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
3407             >::make(
3408                 fp_type(f)
3409               , obj
3410               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27
3411             );
3412     }
3413     template <
3414         typename RT
3415       , typename ClassT
3416       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27
3417       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27
3418     >
3419     inline
3420     typename detail::expression::function_eval<
3421         detail::member_function_ptr<
3422             28
3423           , RT
3424           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
3425         >
3426       , ClassT
3427       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
3428     >::type const
3429     bind(
3430         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
3431       , ClassT & obj
3432       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27
3433     )
3434     {
3435         typedef detail::member_function_ptr<
3436             28
3437           , RT
3438           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
3439         > fp_type;
3440         return
3441             detail::expression::function_eval<
3442                 fp_type
3443               , ClassT
3444               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
3445             >::make(
3446                 fp_type(f)
3447               , obj
3448               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27
3449             );
3450     }
3451     
3452     
3453     
3454     
3455     
3456     
3457     
3458     template <
3459         typename RT
3460       , typename ClassT
3461       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28
3462       , typename ClassA
3463       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28
3464     >
3465     inline
3466     typename detail::expression::function_eval<
3467         detail::member_function_ptr<
3468             29
3469           , RT
3470           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
3471         >
3472       , ClassA
3473       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
3474     >::type const
3475     bind(
3476         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
3477       , ClassA const & obj
3478       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28
3479     )
3480     {
3481         typedef detail::member_function_ptr<
3482             29
3483           , RT
3484           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
3485         > fp_type;
3486         return
3487             detail::expression::function_eval<
3488                 fp_type
3489               , ClassA
3490               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
3491             >::make(
3492                 fp_type(f)
3493               , obj
3494               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28
3495             );
3496     }
3497     template <
3498         typename RT
3499       , typename ClassT
3500       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28
3501       , typename ClassA
3502       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28
3503     >
3504     inline
3505     typename detail::expression::function_eval<
3506         detail::member_function_ptr<
3507             29
3508           , RT
3509           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28) const
3510         >
3511       , ClassA
3512       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
3513     >::type const
3514     bind(
3515         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28) const
3516       , ClassA const & obj
3517       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28
3518     )
3519     {
3520         typedef detail::member_function_ptr<
3521             29
3522           , RT
3523           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28) const
3524         > fp_type;
3525         return
3526             detail::expression::function_eval<
3527                 fp_type
3528               , ClassA
3529               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
3530             >::make(
3531                 fp_type(f)
3532               , obj
3533               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28
3534             );
3535     }
3536     template <
3537         typename RT
3538       , typename ClassT
3539       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28
3540       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28
3541     >
3542     inline
3543     typename detail::expression::function_eval<
3544         detail::member_function_ptr<
3545             29
3546           , RT
3547           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
3548         >
3549       , ClassT
3550       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
3551     >::type const
3552     bind(
3553         RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
3554       , ClassT & obj
3555       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28
3556     )
3557     {
3558         typedef detail::member_function_ptr<
3559             29
3560           , RT
3561           , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
3562         > fp_type;
3563         return
3564             detail::expression::function_eval<
3565                 fp_type
3566               , ClassT
3567               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
3568             >::make(
3569                 fp_type(f)
3570               , obj
3571               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28
3572             );
3573     }