• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 <typename Dummy>
15     struct function_ptr_impl<2, Dummy>
16     {
17         template <typename RT, typename FP>
18         struct impl
19         {
20             typedef RT result_type;
implfunction_ptr_impl::impl21             impl(FP fp_)
22                 : fp(fp_) {}
23             template <typename A0 , typename A1>
operator ()function_ptr_impl::impl24             RT operator()(A0 & a0 , A1 & a1) const
25             {
26                 return fp(a0 , a1);
27             }
28             FP fp;
29         };
30     };
31 
32 
33 
34 
35 
36 
37 
38     template <typename Dummy>
39     struct function_ptr_impl<3, Dummy>
40     {
41         template <typename RT, typename FP>
42         struct impl
43         {
44             typedef RT result_type;
implfunction_ptr_impl::impl45             impl(FP fp_)
46                 : fp(fp_) {}
47             template <typename A0 , typename A1 , typename A2>
operator ()function_ptr_impl::impl48             RT operator()(A0 & a0 , A1 & a1 , A2 & a2) const
49             {
50                 return fp(a0 , a1 , a2);
51             }
52             FP fp;
53         };
54     };
55 
56 
57 
58 
59 
60 
61 
62     template <typename Dummy>
63     struct function_ptr_impl<4, Dummy>
64     {
65         template <typename RT, typename FP>
66         struct impl
67         {
68             typedef RT result_type;
implfunction_ptr_impl::impl69             impl(FP fp_)
70                 : fp(fp_) {}
71             template <typename A0 , typename A1 , typename A2 , typename A3>
operator ()function_ptr_impl::impl72             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3) const
73             {
74                 return fp(a0 , a1 , a2 , a3);
75             }
76             FP fp;
77         };
78     };
79 
80 
81 
82 
83 
84 
85 
86     template <typename Dummy>
87     struct function_ptr_impl<5, Dummy>
88     {
89         template <typename RT, typename FP>
90         struct impl
91         {
92             typedef RT result_type;
implfunction_ptr_impl::impl93             impl(FP fp_)
94                 : fp(fp_) {}
95             template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
operator ()function_ptr_impl::impl96             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4) const
97             {
98                 return fp(a0 , a1 , a2 , a3 , a4);
99             }
100             FP fp;
101         };
102     };
103 
104 
105 
106 
107 
108 
109 
110     template <typename Dummy>
111     struct function_ptr_impl<6, Dummy>
112     {
113         template <typename RT, typename FP>
114         struct impl
115         {
116             typedef RT result_type;
implfunction_ptr_impl::impl117             impl(FP fp_)
118                 : fp(fp_) {}
119             template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
operator ()function_ptr_impl::impl120             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5) const
121             {
122                 return fp(a0 , a1 , a2 , a3 , a4 , a5);
123             }
124             FP fp;
125         };
126     };
127 
128 
129 
130 
131 
132 
133 
134     template <typename Dummy>
135     struct function_ptr_impl<7, Dummy>
136     {
137         template <typename RT, typename FP>
138         struct impl
139         {
140             typedef RT result_type;
implfunction_ptr_impl::impl141             impl(FP fp_)
142                 : fp(fp_) {}
143             template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
operator ()function_ptr_impl::impl144             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6) const
145             {
146                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6);
147             }
148             FP fp;
149         };
150     };
151 
152 
153 
154 
155 
156 
157 
158     template <typename Dummy>
159     struct function_ptr_impl<8, Dummy>
160     {
161         template <typename RT, typename FP>
162         struct impl
163         {
164             typedef RT result_type;
implfunction_ptr_impl::impl165             impl(FP fp_)
166                 : fp(fp_) {}
167             template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
operator ()function_ptr_impl::impl168             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7) const
169             {
170                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
171             }
172             FP fp;
173         };
174     };
175 
176 
177 
178 
179 
180 
181 
182     template <typename Dummy>
183     struct function_ptr_impl<9, Dummy>
184     {
185         template <typename RT, typename FP>
186         struct impl
187         {
188             typedef RT result_type;
implfunction_ptr_impl::impl189             impl(FP fp_)
190                 : fp(fp_) {}
191             template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
operator ()function_ptr_impl::impl192             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8) const
193             {
194                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
195             }
196             FP fp;
197         };
198     };
199 
200 
201 
202 
203 
204 
205 
206     template <typename Dummy>
207     struct function_ptr_impl<10, Dummy>
208     {
209         template <typename RT, typename FP>
210         struct impl
211         {
212             typedef RT result_type;
implfunction_ptr_impl::impl213             impl(FP fp_)
214                 : fp(fp_) {}
215             template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
operator ()function_ptr_impl::impl216             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9) const
217             {
218                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
219             }
220             FP fp;
221         };
222     };
223 
224 
225 
226 
227 
228 
229 
230     template <typename Dummy>
231     struct function_ptr_impl<11, Dummy>
232     {
233         template <typename RT, typename FP>
234         struct impl
235         {
236             typedef RT result_type;
implfunction_ptr_impl::impl237             impl(FP fp_)
238                 : fp(fp_) {}
239             template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
operator ()function_ptr_impl::impl240             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10) const
241             {
242                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
243             }
244             FP fp;
245         };
246     };
247 
248 
249 
250 
251 
252 
253 
254     template <typename Dummy>
255     struct function_ptr_impl<12, Dummy>
256     {
257         template <typename RT, typename FP>
258         struct impl
259         {
260             typedef RT result_type;
implfunction_ptr_impl::impl261             impl(FP fp_)
262                 : fp(fp_) {}
263             template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
operator ()function_ptr_impl::impl264             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11) const
265             {
266                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
267             }
268             FP fp;
269         };
270     };
271 
272 
273 
274 
275 
276 
277 
278     template <typename Dummy>
279     struct function_ptr_impl<13, Dummy>
280     {
281         template <typename RT, typename FP>
282         struct impl
283         {
284             typedef RT result_type;
implfunction_ptr_impl::impl285             impl(FP fp_)
286                 : fp(fp_) {}
287             template <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>
operator ()function_ptr_impl::impl288             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12) const
289             {
290                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
291             }
292             FP fp;
293         };
294     };
295 
296 
297 
298 
299 
300 
301 
302     template <typename Dummy>
303     struct function_ptr_impl<14, Dummy>
304     {
305         template <typename RT, typename FP>
306         struct impl
307         {
308             typedef RT result_type;
implfunction_ptr_impl::impl309             impl(FP fp_)
310                 : fp(fp_) {}
311             template <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>
operator ()function_ptr_impl::impl312             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13) const
313             {
314                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
315             }
316             FP fp;
317         };
318     };
319 
320 
321 
322 
323 
324 
325 
326     template <typename Dummy>
327     struct function_ptr_impl<15, Dummy>
328     {
329         template <typename RT, typename FP>
330         struct impl
331         {
332             typedef RT result_type;
implfunction_ptr_impl::impl333             impl(FP fp_)
334                 : fp(fp_) {}
335             template <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>
operator ()function_ptr_impl::impl336             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14) const
337             {
338                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
339             }
340             FP fp;
341         };
342     };
343 
344 
345 
346 
347 
348 
349 
350     template <typename Dummy>
351     struct function_ptr_impl<16, Dummy>
352     {
353         template <typename RT, typename FP>
354         struct impl
355         {
356             typedef RT result_type;
implfunction_ptr_impl::impl357             impl(FP fp_)
358                 : fp(fp_) {}
359             template <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>
operator ()function_ptr_impl::impl360             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15) const
361             {
362                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
363             }
364             FP fp;
365         };
366     };
367 
368 
369 
370 
371 
372 
373 
374     template <typename Dummy>
375     struct function_ptr_impl<17, Dummy>
376     {
377         template <typename RT, typename FP>
378         struct impl
379         {
380             typedef RT result_type;
implfunction_ptr_impl::impl381             impl(FP fp_)
382                 : fp(fp_) {}
383             template <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>
operator ()function_ptr_impl::impl384             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16) const
385             {
386                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
387             }
388             FP fp;
389         };
390     };
391 
392 
393 
394 
395 
396 
397 
398     template <typename Dummy>
399     struct function_ptr_impl<18, Dummy>
400     {
401         template <typename RT, typename FP>
402         struct impl
403         {
404             typedef RT result_type;
implfunction_ptr_impl::impl405             impl(FP fp_)
406                 : fp(fp_) {}
407             template <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>
operator ()function_ptr_impl::impl408             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17) const
409             {
410                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
411             }
412             FP fp;
413         };
414     };
415 
416 
417 
418 
419 
420 
421 
422     template <typename Dummy>
423     struct function_ptr_impl<19, Dummy>
424     {
425         template <typename RT, typename FP>
426         struct impl
427         {
428             typedef RT result_type;
implfunction_ptr_impl::impl429             impl(FP fp_)
430                 : fp(fp_) {}
431             template <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>
operator ()function_ptr_impl::impl432             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18) const
433             {
434                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
435             }
436             FP fp;
437         };
438     };
439 
440 
441 
442 
443 
444 
445 
446     template <typename Dummy>
447     struct function_ptr_impl<20, Dummy>
448     {
449         template <typename RT, typename FP>
450         struct impl
451         {
452             typedef RT result_type;
implfunction_ptr_impl::impl453             impl(FP fp_)
454                 : fp(fp_) {}
455             template <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>
operator ()function_ptr_impl::impl456             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19) const
457             {
458                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
459             }
460             FP fp;
461         };
462     };
463 
464 
465 
466 
467 
468 
469 
470     template <typename Dummy>
471     struct function_ptr_impl<21, Dummy>
472     {
473         template <typename RT, typename FP>
474         struct impl
475         {
476             typedef RT result_type;
implfunction_ptr_impl::impl477             impl(FP fp_)
478                 : fp(fp_) {}
479             template <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>
operator ()function_ptr_impl::impl480             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19 , A20 & a20) const
481             {
482                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20);
483             }
484             FP fp;
485         };
486     };
487 
488 
489 
490 
491 
492 
493 
494     template <typename Dummy>
495     struct function_ptr_impl<22, Dummy>
496     {
497         template <typename RT, typename FP>
498         struct impl
499         {
500             typedef RT result_type;
implfunction_ptr_impl::impl501             impl(FP fp_)
502                 : fp(fp_) {}
503             template <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>
operator ()function_ptr_impl::impl504             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19 , A20 & a20 , A21 & a21) const
505             {
506                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21);
507             }
508             FP fp;
509         };
510     };
511 
512 
513 
514 
515 
516 
517 
518     template <typename Dummy>
519     struct function_ptr_impl<23, Dummy>
520     {
521         template <typename RT, typename FP>
522         struct impl
523         {
524             typedef RT result_type;
implfunction_ptr_impl::impl525             impl(FP fp_)
526                 : fp(fp_) {}
527             template <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>
operator ()function_ptr_impl::impl528             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19 , A20 & a20 , A21 & a21 , A22 & a22) const
529             {
530                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22);
531             }
532             FP fp;
533         };
534     };
535 
536 
537 
538 
539 
540 
541 
542     template <typename Dummy>
543     struct function_ptr_impl<24, Dummy>
544     {
545         template <typename RT, typename FP>
546         struct impl
547         {
548             typedef RT result_type;
implfunction_ptr_impl::impl549             impl(FP fp_)
550                 : fp(fp_) {}
551             template <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>
operator ()function_ptr_impl::impl552             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19 , A20 & a20 , A21 & a21 , A22 & a22 , A23 & a23) const
553             {
554                 return fp(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23);
555             }
556             FP fp;
557         };
558     };
559 
560 
561 
562 
563 
564 
565 
566     template <typename Dummy>
567     struct function_ptr_impl<25, Dummy>
568     {
569         template <typename RT, typename FP>
570         struct impl
571         {
572             typedef RT result_type;
implfunction_ptr_impl::impl573             impl(FP fp_)
574                 : fp(fp_) {}
575             template <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>
operator ()function_ptr_impl::impl576             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19 , A20 & a20 , A21 & a21 , A22 & a22 , A23 & a23 , A24 & a24) const
577             {
578                 return fp(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);
579             }
580             FP fp;
581         };
582     };
583 
584 
585 
586 
587 
588 
589 
590     template <typename Dummy>
591     struct function_ptr_impl<26, Dummy>
592     {
593         template <typename RT, typename FP>
594         struct impl
595         {
596             typedef RT result_type;
implfunction_ptr_impl::impl597             impl(FP fp_)
598                 : fp(fp_) {}
599             template <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>
operator ()function_ptr_impl::impl600             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19 , A20 & a20 , A21 & a21 , A22 & a22 , A23 & a23 , A24 & a24 , A25 & a25) const
601             {
602                 return fp(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);
603             }
604             FP fp;
605         };
606     };
607 
608 
609 
610 
611 
612 
613 
614     template <typename Dummy>
615     struct function_ptr_impl<27, Dummy>
616     {
617         template <typename RT, typename FP>
618         struct impl
619         {
620             typedef RT result_type;
implfunction_ptr_impl::impl621             impl(FP fp_)
622                 : fp(fp_) {}
623             template <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>
operator ()function_ptr_impl::impl624             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19 , A20 & a20 , A21 & a21 , A22 & a22 , A23 & a23 , A24 & a24 , A25 & a25 , A26 & a26) const
625             {
626                 return fp(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);
627             }
628             FP fp;
629         };
630     };
631 
632 
633 
634 
635 
636 
637 
638     template <typename Dummy>
639     struct function_ptr_impl<28, Dummy>
640     {
641         template <typename RT, typename FP>
642         struct impl
643         {
644             typedef RT result_type;
implfunction_ptr_impl::impl645             impl(FP fp_)
646                 : fp(fp_) {}
647             template <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>
operator ()function_ptr_impl::impl648             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19 , A20 & a20 , A21 & a21 , A22 & a22 , A23 & a23 , A24 & a24 , A25 & a25 , A26 & a26 , A27 & a27) const
649             {
650                 return fp(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);
651             }
652             FP fp;
653         };
654     };
655 
656 
657 
658 
659 
660 
661 
662     template <typename Dummy>
663     struct function_ptr_impl<29, Dummy>
664     {
665         template <typename RT, typename FP>
666         struct impl
667         {
668             typedef RT result_type;
implfunction_ptr_impl::impl669             impl(FP fp_)
670                 : fp(fp_) {}
671             template <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>
operator ()function_ptr_impl::impl672             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19 , A20 & a20 , A21 & a21 , A22 & a22 , A23 & a23 , A24 & a24 , A25 & a25 , A26 & a26 , A27 & a27 , A28 & a28) const
673             {
674                 return fp(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);
675             }
676             FP fp;
677         };
678     };
679 
680 
681 
682 
683 
684 
685 
686     template <typename Dummy>
687     struct function_ptr_impl<30, Dummy>
688     {
689         template <typename RT, typename FP>
690         struct impl
691         {
692             typedef RT result_type;
implfunction_ptr_impl::impl693             impl(FP fp_)
694                 : fp(fp_) {}
695             template <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 , typename A29>
operator ()function_ptr_impl::impl696             RT operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19 , A20 & a20 , A21 & a21 , A22 & a22 , A23 & a23 , A24 & a24 , A25 & a25 , A26 & a26 , A27 & a27 , A28 & a28 , A29 & a29) const
697             {
698                 return fp(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 , a29);
699             }
700             FP fp;
701         };
702     };
703