]> git.sesse.net Git - casparcg/blob - dependencies/boost/boost/phoenix/bind/preprocessed/bind_function_30.hpp
Manually merged pull request #222
[casparcg] / dependencies / boost / boost / phoenix / bind / preprocessed / bind_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 T0 , typename T1
17       , typename A0 , typename A1
18     >
19     inline
20     typename detail::expression::function_eval<
21         detail::function_ptr<
22             2
23           , RT
24           , RT(*)(T0 , T1)
25         >
26       , A0 , A1
27     >::type const
28     bind(
29         RT(*f)(T0 , T1)
30       , A0 const& a0 , A1 const& a1
31     )
32     {
33         typedef detail::function_ptr<
34             2
35           , RT
36           , RT(*)(T0 , T1)
37         > fp_type;
38         return
39             detail::expression::function_eval<
40                 fp_type
41               , A0 , A1
42             >::make(
43                 fp_type(f)
44               , a0 , a1
45             );
46     }
47     
48     
49     
50     
51     
52     
53     
54     template <
55         typename RT
56       , typename T0 , typename T1 , typename T2
57       , typename A0 , typename A1 , typename A2
58     >
59     inline
60     typename detail::expression::function_eval<
61         detail::function_ptr<
62             3
63           , RT
64           , RT(*)(T0 , T1 , T2)
65         >
66       , A0 , A1 , A2
67     >::type const
68     bind(
69         RT(*f)(T0 , T1 , T2)
70       , A0 const& a0 , A1 const& a1 , A2 const& a2
71     )
72     {
73         typedef detail::function_ptr<
74             3
75           , RT
76           , RT(*)(T0 , T1 , T2)
77         > fp_type;
78         return
79             detail::expression::function_eval<
80                 fp_type
81               , A0 , A1 , A2
82             >::make(
83                 fp_type(f)
84               , a0 , a1 , a2
85             );
86     }
87     
88     
89     
90     
91     
92     
93     
94     template <
95         typename RT
96       , typename T0 , typename T1 , typename T2 , typename T3
97       , typename A0 , typename A1 , typename A2 , typename A3
98     >
99     inline
100     typename detail::expression::function_eval<
101         detail::function_ptr<
102             4
103           , RT
104           , RT(*)(T0 , T1 , T2 , T3)
105         >
106       , A0 , A1 , A2 , A3
107     >::type const
108     bind(
109         RT(*f)(T0 , T1 , T2 , T3)
110       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
111     )
112     {
113         typedef detail::function_ptr<
114             4
115           , RT
116           , RT(*)(T0 , T1 , T2 , T3)
117         > fp_type;
118         return
119             detail::expression::function_eval<
120                 fp_type
121               , A0 , A1 , A2 , A3
122             >::make(
123                 fp_type(f)
124               , a0 , a1 , a2 , a3
125             );
126     }
127     
128     
129     
130     
131     
132     
133     
134     template <
135         typename RT
136       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4
137       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4
138     >
139     inline
140     typename detail::expression::function_eval<
141         detail::function_ptr<
142             5
143           , RT
144           , RT(*)(T0 , T1 , T2 , T3 , T4)
145         >
146       , A0 , A1 , A2 , A3 , A4
147     >::type const
148     bind(
149         RT(*f)(T0 , T1 , T2 , T3 , T4)
150       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
151     )
152     {
153         typedef detail::function_ptr<
154             5
155           , RT
156           , RT(*)(T0 , T1 , T2 , T3 , T4)
157         > fp_type;
158         return
159             detail::expression::function_eval<
160                 fp_type
161               , A0 , A1 , A2 , A3 , A4
162             >::make(
163                 fp_type(f)
164               , a0 , a1 , a2 , a3 , a4
165             );
166     }
167     
168     
169     
170     
171     
172     
173     
174     template <
175         typename RT
176       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
177       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5
178     >
179     inline
180     typename detail::expression::function_eval<
181         detail::function_ptr<
182             6
183           , RT
184           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5)
185         >
186       , A0 , A1 , A2 , A3 , A4 , A5
187     >::type const
188     bind(
189         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5)
190       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
191     )
192     {
193         typedef detail::function_ptr<
194             6
195           , RT
196           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5)
197         > fp_type;
198         return
199             detail::expression::function_eval<
200                 fp_type
201               , A0 , A1 , A2 , A3 , A4 , A5
202             >::make(
203                 fp_type(f)
204               , a0 , a1 , a2 , a3 , a4 , a5
205             );
206     }
207     
208     
209     
210     
211     
212     
213     
214     template <
215         typename RT
216       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
217       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6
218     >
219     inline
220     typename detail::expression::function_eval<
221         detail::function_ptr<
222             7
223           , RT
224           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
225         >
226       , A0 , A1 , A2 , A3 , A4 , A5 , A6
227     >::type const
228     bind(
229         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
230       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
231     )
232     {
233         typedef detail::function_ptr<
234             7
235           , RT
236           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
237         > fp_type;
238         return
239             detail::expression::function_eval<
240                 fp_type
241               , A0 , A1 , A2 , A3 , A4 , A5 , A6
242             >::make(
243                 fp_type(f)
244               , a0 , a1 , a2 , a3 , a4 , a5 , a6
245             );
246     }
247     
248     
249     
250     
251     
252     
253     
254     template <
255         typename RT
256       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
257       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7
258     >
259     inline
260     typename detail::expression::function_eval<
261         detail::function_ptr<
262             8
263           , RT
264           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
265         >
266       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
267     >::type const
268     bind(
269         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
270       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
271     )
272     {
273         typedef detail::function_ptr<
274             8
275           , RT
276           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
277         > fp_type;
278         return
279             detail::expression::function_eval<
280                 fp_type
281               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
282             >::make(
283                 fp_type(f)
284               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7
285             );
286     }
287     
288     
289     
290     
291     
292     
293     
294     template <
295         typename RT
296       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
297       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8
298     >
299     inline
300     typename detail::expression::function_eval<
301         detail::function_ptr<
302             9
303           , RT
304           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
305         >
306       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
307     >::type const
308     bind(
309         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
310       , 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
311     )
312     {
313         typedef detail::function_ptr<
314             9
315           , RT
316           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
317         > fp_type;
318         return
319             detail::expression::function_eval<
320                 fp_type
321               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
322             >::make(
323                 fp_type(f)
324               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8
325             );
326     }
327     
328     
329     
330     
331     
332     
333     
334     template <
335         typename RT
336       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
337       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9
338     >
339     inline
340     typename detail::expression::function_eval<
341         detail::function_ptr<
342             10
343           , RT
344           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
345         >
346       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
347     >::type const
348     bind(
349         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
350       , 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
351     )
352     {
353         typedef detail::function_ptr<
354             10
355           , RT
356           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
357         > fp_type;
358         return
359             detail::expression::function_eval<
360                 fp_type
361               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
362             >::make(
363                 fp_type(f)
364               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9
365             );
366     }
367     
368     
369     
370     
371     
372     
373     
374     template <
375         typename RT
376       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10
377       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10
378     >
379     inline
380     typename detail::expression::function_eval<
381         detail::function_ptr<
382             11
383           , RT
384           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
385         >
386       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
387     >::type const
388     bind(
389         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
390       , 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
391     )
392     {
393         typedef detail::function_ptr<
394             11
395           , RT
396           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
397         > fp_type;
398         return
399             detail::expression::function_eval<
400                 fp_type
401               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
402             >::make(
403                 fp_type(f)
404               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10
405             );
406     }
407     
408     
409     
410     
411     
412     
413     
414     template <
415         typename RT
416       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11
417       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11
418     >
419     inline
420     typename detail::expression::function_eval<
421         detail::function_ptr<
422             12
423           , RT
424           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
425         >
426       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
427     >::type const
428     bind(
429         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
430       , 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
431     )
432     {
433         typedef detail::function_ptr<
434             12
435           , RT
436           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
437         > fp_type;
438         return
439             detail::expression::function_eval<
440                 fp_type
441               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
442             >::make(
443                 fp_type(f)
444               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11
445             );
446     }
447     
448     
449     
450     
451     
452     
453     
454     template <
455         typename RT
456       , 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
457       , 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
458     >
459     inline
460     typename detail::expression::function_eval<
461         detail::function_ptr<
462             13
463           , RT
464           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
465         >
466       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
467     >::type const
468     bind(
469         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
470       , 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
471     )
472     {
473         typedef detail::function_ptr<
474             13
475           , RT
476           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
477         > fp_type;
478         return
479             detail::expression::function_eval<
480                 fp_type
481               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
482             >::make(
483                 fp_type(f)
484               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12
485             );
486     }
487     
488     
489     
490     
491     
492     
493     
494     template <
495         typename RT
496       , 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
497       , 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
498     >
499     inline
500     typename detail::expression::function_eval<
501         detail::function_ptr<
502             14
503           , RT
504           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
505         >
506       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
507     >::type const
508     bind(
509         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
510       , 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
511     )
512     {
513         typedef detail::function_ptr<
514             14
515           , RT
516           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
517         > fp_type;
518         return
519             detail::expression::function_eval<
520                 fp_type
521               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
522             >::make(
523                 fp_type(f)
524               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13
525             );
526     }
527     
528     
529     
530     
531     
532     
533     
534     template <
535         typename RT
536       , 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
537       , 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
538     >
539     inline
540     typename detail::expression::function_eval<
541         detail::function_ptr<
542             15
543           , RT
544           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
545         >
546       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
547     >::type const
548     bind(
549         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
550       , 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
551     )
552     {
553         typedef detail::function_ptr<
554             15
555           , RT
556           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
557         > fp_type;
558         return
559             detail::expression::function_eval<
560                 fp_type
561               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
562             >::make(
563                 fp_type(f)
564               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14
565             );
566     }
567     
568     
569     
570     
571     
572     
573     
574     template <
575         typename RT
576       , 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
577       , 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
578     >
579     inline
580     typename detail::expression::function_eval<
581         detail::function_ptr<
582             16
583           , RT
584           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
585         >
586       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
587     >::type const
588     bind(
589         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
590       , 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
591     )
592     {
593         typedef detail::function_ptr<
594             16
595           , RT
596           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
597         > fp_type;
598         return
599             detail::expression::function_eval<
600                 fp_type
601               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
602             >::make(
603                 fp_type(f)
604               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15
605             );
606     }
607     
608     
609     
610     
611     
612     
613     
614     template <
615         typename RT
616       , 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
617       , 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
618     >
619     inline
620     typename detail::expression::function_eval<
621         detail::function_ptr<
622             17
623           , RT
624           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
625         >
626       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
627     >::type const
628     bind(
629         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
630       , 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
631     )
632     {
633         typedef detail::function_ptr<
634             17
635           , RT
636           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
637         > fp_type;
638         return
639             detail::expression::function_eval<
640                 fp_type
641               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
642             >::make(
643                 fp_type(f)
644               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16
645             );
646     }
647     
648     
649     
650     
651     
652     
653     
654     template <
655         typename RT
656       , 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
657       , 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
658     >
659     inline
660     typename detail::expression::function_eval<
661         detail::function_ptr<
662             18
663           , RT
664           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
665         >
666       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
667     >::type const
668     bind(
669         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
670       , 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
671     )
672     {
673         typedef detail::function_ptr<
674             18
675           , RT
676           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
677         > fp_type;
678         return
679             detail::expression::function_eval<
680                 fp_type
681               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
682             >::make(
683                 fp_type(f)
684               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17
685             );
686     }
687     
688     
689     
690     
691     
692     
693     
694     template <
695         typename RT
696       , 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
697       , 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
698     >
699     inline
700     typename detail::expression::function_eval<
701         detail::function_ptr<
702             19
703           , RT
704           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
705         >
706       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
707     >::type const
708     bind(
709         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
710       , 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
711     )
712     {
713         typedef detail::function_ptr<
714             19
715           , RT
716           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
717         > fp_type;
718         return
719             detail::expression::function_eval<
720                 fp_type
721               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
722             >::make(
723                 fp_type(f)
724               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18
725             );
726     }
727     
728     
729     
730     
731     
732     
733     
734     template <
735         typename RT
736       , 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
737       , 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
738     >
739     inline
740     typename detail::expression::function_eval<
741         detail::function_ptr<
742             20
743           , RT
744           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
745         >
746       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
747     >::type const
748     bind(
749         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
750       , 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
751     )
752     {
753         typedef detail::function_ptr<
754             20
755           , RT
756           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
757         > fp_type;
758         return
759             detail::expression::function_eval<
760                 fp_type
761               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
762             >::make(
763                 fp_type(f)
764               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19
765             );
766     }
767     
768     
769     
770     
771     
772     
773     
774     template <
775         typename RT
776       , 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
777       , 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
778     >
779     inline
780     typename detail::expression::function_eval<
781         detail::function_ptr<
782             21
783           , RT
784           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
785         >
786       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
787     >::type const
788     bind(
789         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
790       , 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
791     )
792     {
793         typedef detail::function_ptr<
794             21
795           , RT
796           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
797         > fp_type;
798         return
799             detail::expression::function_eval<
800                 fp_type
801               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
802             >::make(
803                 fp_type(f)
804               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20
805             );
806     }
807     
808     
809     
810     
811     
812     
813     
814     template <
815         typename RT
816       , 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
817       , 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
818     >
819     inline
820     typename detail::expression::function_eval<
821         detail::function_ptr<
822             22
823           , RT
824           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
825         >
826       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
827     >::type const
828     bind(
829         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
830       , 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
831     )
832     {
833         typedef detail::function_ptr<
834             22
835           , RT
836           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
837         > fp_type;
838         return
839             detail::expression::function_eval<
840                 fp_type
841               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
842             >::make(
843                 fp_type(f)
844               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21
845             );
846     }
847     
848     
849     
850     
851     
852     
853     
854     template <
855         typename RT
856       , 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
857       , 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
858     >
859     inline
860     typename detail::expression::function_eval<
861         detail::function_ptr<
862             23
863           , RT
864           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
865         >
866       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
867     >::type const
868     bind(
869         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
870       , 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
871     )
872     {
873         typedef detail::function_ptr<
874             23
875           , RT
876           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
877         > fp_type;
878         return
879             detail::expression::function_eval<
880                 fp_type
881               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
882             >::make(
883                 fp_type(f)
884               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22
885             );
886     }
887     
888     
889     
890     
891     
892     
893     
894     template <
895         typename RT
896       , 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
897       , 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
898     >
899     inline
900     typename detail::expression::function_eval<
901         detail::function_ptr<
902             24
903           , RT
904           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
905         >
906       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
907     >::type const
908     bind(
909         RT(*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)
910       , 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
911     )
912     {
913         typedef detail::function_ptr<
914             24
915           , RT
916           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
917         > fp_type;
918         return
919             detail::expression::function_eval<
920                 fp_type
921               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
922             >::make(
923                 fp_type(f)
924               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23
925             );
926     }
927     
928     
929     
930     
931     
932     
933     
934     template <
935         typename RT
936       , 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
937       , 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
938     >
939     inline
940     typename detail::expression::function_eval<
941         detail::function_ptr<
942             25
943           , RT
944           , RT(*)(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)
945         >
946       , 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
947     >::type const
948     bind(
949         RT(*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)
950       , 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
951     )
952     {
953         typedef detail::function_ptr<
954             25
955           , RT
956           , RT(*)(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)
957         > fp_type;
958         return
959             detail::expression::function_eval<
960                 fp_type
961               , 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
962             >::make(
963                 fp_type(f)
964               , 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
965             );
966     }
967     
968     
969     
970     
971     
972     
973     
974     template <
975         typename RT
976       , 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
977       , 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
978     >
979     inline
980     typename detail::expression::function_eval<
981         detail::function_ptr<
982             26
983           , RT
984           , RT(*)(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)
985         >
986       , 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
987     >::type const
988     bind(
989         RT(*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)
990       , 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
991     )
992     {
993         typedef detail::function_ptr<
994             26
995           , RT
996           , RT(*)(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)
997         > fp_type;
998         return
999             detail::expression::function_eval<
1000                 fp_type
1001               , 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
1002             >::make(
1003                 fp_type(f)
1004               , 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
1005             );
1006     }
1007     
1008     
1009     
1010     
1011     
1012     
1013     
1014     template <
1015         typename RT
1016       , 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
1017       , 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
1018     >
1019     inline
1020     typename detail::expression::function_eval<
1021         detail::function_ptr<
1022             27
1023           , RT
1024           , RT(*)(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)
1025         >
1026       , 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
1027     >::type const
1028     bind(
1029         RT(*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)
1030       , 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
1031     )
1032     {
1033         typedef detail::function_ptr<
1034             27
1035           , RT
1036           , RT(*)(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)
1037         > fp_type;
1038         return
1039             detail::expression::function_eval<
1040                 fp_type
1041               , 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
1042             >::make(
1043                 fp_type(f)
1044               , 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
1045             );
1046     }
1047     
1048     
1049     
1050     
1051     
1052     
1053     
1054     template <
1055         typename RT
1056       , 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
1057       , 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
1058     >
1059     inline
1060     typename detail::expression::function_eval<
1061         detail::function_ptr<
1062             28
1063           , RT
1064           , RT(*)(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)
1065         >
1066       , 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
1067     >::type const
1068     bind(
1069         RT(*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)
1070       , 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
1071     )
1072     {
1073         typedef detail::function_ptr<
1074             28
1075           , RT
1076           , RT(*)(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)
1077         > fp_type;
1078         return
1079             detail::expression::function_eval<
1080                 fp_type
1081               , 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
1082             >::make(
1083                 fp_type(f)
1084               , 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
1085             );
1086     }
1087     
1088     
1089     
1090     
1091     
1092     
1093     
1094     template <
1095         typename RT
1096       , 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
1097       , 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
1098     >
1099     inline
1100     typename detail::expression::function_eval<
1101         detail::function_ptr<
1102             29
1103           , RT
1104           , RT(*)(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)
1105         >
1106       , 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
1107     >::type const
1108     bind(
1109         RT(*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)
1110       , 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
1111     )
1112     {
1113         typedef detail::function_ptr<
1114             29
1115           , RT
1116           , RT(*)(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)
1117         > fp_type;
1118         return
1119             detail::expression::function_eval<
1120                 fp_type
1121               , 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
1122             >::make(
1123                 fp_type(f)
1124               , 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
1125             );
1126     }