Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-23 09:47:54

0001 /*=============================================================================
0002     Copyright (c) 2001-2007 Joel de Guzman
0003 
0004     Distributed under the Boost Software License, Version 1.0. (See accompanying 
0005     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0006 ==============================================================================*/
0007     
0008     
0009     
0010     
0011     
0012     
0013     
0014     template <
0015         typename RT
0016       , typename T0 , typename T1
0017       , typename A0 , typename A1
0018     >
0019     inline
0020     typename detail::expression::function_eval<
0021         detail::function_ptr<
0022             2
0023           , RT
0024           , RT(*)(T0 , T1)
0025         >
0026       , A0 , A1
0027     >::type const
0028     bind(
0029         RT(*f)(T0 , T1)
0030       , A0 const& a0 , A1 const& a1
0031     )
0032     {
0033         typedef detail::function_ptr<
0034             2
0035           , RT
0036           , RT(*)(T0 , T1)
0037         > fp_type;
0038         return
0039             detail::expression::function_eval<
0040                 fp_type
0041               , A0 , A1
0042             >::make(
0043                 fp_type(f)
0044               , a0 , a1
0045             );
0046     }
0047     
0048     
0049     
0050     
0051     
0052     
0053     
0054     template <
0055         typename RT
0056       , typename T0 , typename T1 , typename T2
0057       , typename A0 , typename A1 , typename A2
0058     >
0059     inline
0060     typename detail::expression::function_eval<
0061         detail::function_ptr<
0062             3
0063           , RT
0064           , RT(*)(T0 , T1 , T2)
0065         >
0066       , A0 , A1 , A2
0067     >::type const
0068     bind(
0069         RT(*f)(T0 , T1 , T2)
0070       , A0 const& a0 , A1 const& a1 , A2 const& a2
0071     )
0072     {
0073         typedef detail::function_ptr<
0074             3
0075           , RT
0076           , RT(*)(T0 , T1 , T2)
0077         > fp_type;
0078         return
0079             detail::expression::function_eval<
0080                 fp_type
0081               , A0 , A1 , A2
0082             >::make(
0083                 fp_type(f)
0084               , a0 , a1 , a2
0085             );
0086     }
0087     
0088     
0089     
0090     
0091     
0092     
0093     
0094     template <
0095         typename RT
0096       , typename T0 , typename T1 , typename T2 , typename T3
0097       , typename A0 , typename A1 , typename A2 , typename A3
0098     >
0099     inline
0100     typename detail::expression::function_eval<
0101         detail::function_ptr<
0102             4
0103           , RT
0104           , RT(*)(T0 , T1 , T2 , T3)
0105         >
0106       , A0 , A1 , A2 , A3
0107     >::type const
0108     bind(
0109         RT(*f)(T0 , T1 , T2 , T3)
0110       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
0111     )
0112     {
0113         typedef detail::function_ptr<
0114             4
0115           , RT
0116           , RT(*)(T0 , T1 , T2 , T3)
0117         > fp_type;
0118         return
0119             detail::expression::function_eval<
0120                 fp_type
0121               , A0 , A1 , A2 , A3
0122             >::make(
0123                 fp_type(f)
0124               , a0 , a1 , a2 , a3
0125             );
0126     }
0127     
0128     
0129     
0130     
0131     
0132     
0133     
0134     template <
0135         typename RT
0136       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4
0137       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4
0138     >
0139     inline
0140     typename detail::expression::function_eval<
0141         detail::function_ptr<
0142             5
0143           , RT
0144           , RT(*)(T0 , T1 , T2 , T3 , T4)
0145         >
0146       , A0 , A1 , A2 , A3 , A4
0147     >::type const
0148     bind(
0149         RT(*f)(T0 , T1 , T2 , T3 , T4)
0150       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
0151     )
0152     {
0153         typedef detail::function_ptr<
0154             5
0155           , RT
0156           , RT(*)(T0 , T1 , T2 , T3 , T4)
0157         > fp_type;
0158         return
0159             detail::expression::function_eval<
0160                 fp_type
0161               , A0 , A1 , A2 , A3 , A4
0162             >::make(
0163                 fp_type(f)
0164               , a0 , a1 , a2 , a3 , a4
0165             );
0166     }
0167     
0168     
0169     
0170     
0171     
0172     
0173     
0174     template <
0175         typename RT
0176       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
0177       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5
0178     >
0179     inline
0180     typename detail::expression::function_eval<
0181         detail::function_ptr<
0182             6
0183           , RT
0184           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5)
0185         >
0186       , A0 , A1 , A2 , A3 , A4 , A5
0187     >::type const
0188     bind(
0189         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5)
0190       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
0191     )
0192     {
0193         typedef detail::function_ptr<
0194             6
0195           , RT
0196           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5)
0197         > fp_type;
0198         return
0199             detail::expression::function_eval<
0200                 fp_type
0201               , A0 , A1 , A2 , A3 , A4 , A5
0202             >::make(
0203                 fp_type(f)
0204               , a0 , a1 , a2 , a3 , a4 , a5
0205             );
0206     }
0207     
0208     
0209     
0210     
0211     
0212     
0213     
0214     template <
0215         typename RT
0216       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
0217       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6
0218     >
0219     inline
0220     typename detail::expression::function_eval<
0221         detail::function_ptr<
0222             7
0223           , RT
0224           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
0225         >
0226       , A0 , A1 , A2 , A3 , A4 , A5 , A6
0227     >::type const
0228     bind(
0229         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
0230       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
0231     )
0232     {
0233         typedef detail::function_ptr<
0234             7
0235           , RT
0236           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
0237         > fp_type;
0238         return
0239             detail::expression::function_eval<
0240                 fp_type
0241               , A0 , A1 , A2 , A3 , A4 , A5 , A6
0242             >::make(
0243                 fp_type(f)
0244               , a0 , a1 , a2 , a3 , a4 , a5 , a6
0245             );
0246     }
0247     
0248     
0249     
0250     
0251     
0252     
0253     
0254     template <
0255         typename RT
0256       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
0257       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7
0258     >
0259     inline
0260     typename detail::expression::function_eval<
0261         detail::function_ptr<
0262             8
0263           , RT
0264           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
0265         >
0266       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
0267     >::type const
0268     bind(
0269         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
0270       , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
0271     )
0272     {
0273         typedef detail::function_ptr<
0274             8
0275           , RT
0276           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
0277         > fp_type;
0278         return
0279             detail::expression::function_eval<
0280                 fp_type
0281               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
0282             >::make(
0283                 fp_type(f)
0284               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7
0285             );
0286     }
0287     
0288     
0289     
0290     
0291     
0292     
0293     
0294     template <
0295         typename RT
0296       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
0297       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8
0298     >
0299     inline
0300     typename detail::expression::function_eval<
0301         detail::function_ptr<
0302             9
0303           , RT
0304           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
0305         >
0306       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
0307     >::type const
0308     bind(
0309         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
0310       , 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
0311     )
0312     {
0313         typedef detail::function_ptr<
0314             9
0315           , RT
0316           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
0317         > fp_type;
0318         return
0319             detail::expression::function_eval<
0320                 fp_type
0321               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
0322             >::make(
0323                 fp_type(f)
0324               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8
0325             );
0326     }
0327     
0328     
0329     
0330     
0331     
0332     
0333     
0334     template <
0335         typename RT
0336       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
0337       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9
0338     >
0339     inline
0340     typename detail::expression::function_eval<
0341         detail::function_ptr<
0342             10
0343           , RT
0344           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
0345         >
0346       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
0347     >::type const
0348     bind(
0349         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
0350       , 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
0351     )
0352     {
0353         typedef detail::function_ptr<
0354             10
0355           , RT
0356           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
0357         > fp_type;
0358         return
0359             detail::expression::function_eval<
0360                 fp_type
0361               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
0362             >::make(
0363                 fp_type(f)
0364               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9
0365             );
0366     }
0367     
0368     
0369     
0370     
0371     
0372     
0373     
0374     template <
0375         typename RT
0376       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10
0377       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10
0378     >
0379     inline
0380     typename detail::expression::function_eval<
0381         detail::function_ptr<
0382             11
0383           , RT
0384           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
0385         >
0386       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
0387     >::type const
0388     bind(
0389         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
0390       , 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
0391     )
0392     {
0393         typedef detail::function_ptr<
0394             11
0395           , RT
0396           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
0397         > fp_type;
0398         return
0399             detail::expression::function_eval<
0400                 fp_type
0401               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
0402             >::make(
0403                 fp_type(f)
0404               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10
0405             );
0406     }
0407     
0408     
0409     
0410     
0411     
0412     
0413     
0414     template <
0415         typename RT
0416       , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11
0417       , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11
0418     >
0419     inline
0420     typename detail::expression::function_eval<
0421         detail::function_ptr<
0422             12
0423           , RT
0424           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
0425         >
0426       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
0427     >::type const
0428     bind(
0429         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
0430       , 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
0431     )
0432     {
0433         typedef detail::function_ptr<
0434             12
0435           , RT
0436           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
0437         > fp_type;
0438         return
0439             detail::expression::function_eval<
0440                 fp_type
0441               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
0442             >::make(
0443                 fp_type(f)
0444               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11
0445             );
0446     }
0447     
0448     
0449     
0450     
0451     
0452     
0453     
0454     template <
0455         typename RT
0456       , 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
0457       , 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
0458     >
0459     inline
0460     typename detail::expression::function_eval<
0461         detail::function_ptr<
0462             13
0463           , RT
0464           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
0465         >
0466       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
0467     >::type const
0468     bind(
0469         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
0470       , 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
0471     )
0472     {
0473         typedef detail::function_ptr<
0474             13
0475           , RT
0476           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
0477         > fp_type;
0478         return
0479             detail::expression::function_eval<
0480                 fp_type
0481               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
0482             >::make(
0483                 fp_type(f)
0484               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12
0485             );
0486     }
0487     
0488     
0489     
0490     
0491     
0492     
0493     
0494     template <
0495         typename RT
0496       , 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
0497       , 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
0498     >
0499     inline
0500     typename detail::expression::function_eval<
0501         detail::function_ptr<
0502             14
0503           , RT
0504           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
0505         >
0506       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
0507     >::type const
0508     bind(
0509         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
0510       , 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
0511     )
0512     {
0513         typedef detail::function_ptr<
0514             14
0515           , RT
0516           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
0517         > fp_type;
0518         return
0519             detail::expression::function_eval<
0520                 fp_type
0521               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
0522             >::make(
0523                 fp_type(f)
0524               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13
0525             );
0526     }
0527     
0528     
0529     
0530     
0531     
0532     
0533     
0534     template <
0535         typename RT
0536       , 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
0537       , 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
0538     >
0539     inline
0540     typename detail::expression::function_eval<
0541         detail::function_ptr<
0542             15
0543           , RT
0544           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
0545         >
0546       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
0547     >::type const
0548     bind(
0549         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
0550       , 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
0551     )
0552     {
0553         typedef detail::function_ptr<
0554             15
0555           , RT
0556           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
0557         > fp_type;
0558         return
0559             detail::expression::function_eval<
0560                 fp_type
0561               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
0562             >::make(
0563                 fp_type(f)
0564               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14
0565             );
0566     }
0567     
0568     
0569     
0570     
0571     
0572     
0573     
0574     template <
0575         typename RT
0576       , 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
0577       , 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
0578     >
0579     inline
0580     typename detail::expression::function_eval<
0581         detail::function_ptr<
0582             16
0583           , RT
0584           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
0585         >
0586       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
0587     >::type const
0588     bind(
0589         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
0590       , 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
0591     )
0592     {
0593         typedef detail::function_ptr<
0594             16
0595           , RT
0596           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
0597         > fp_type;
0598         return
0599             detail::expression::function_eval<
0600                 fp_type
0601               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
0602             >::make(
0603                 fp_type(f)
0604               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15
0605             );
0606     }
0607     
0608     
0609     
0610     
0611     
0612     
0613     
0614     template <
0615         typename RT
0616       , 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
0617       , 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
0618     >
0619     inline
0620     typename detail::expression::function_eval<
0621         detail::function_ptr<
0622             17
0623           , RT
0624           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
0625         >
0626       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
0627     >::type const
0628     bind(
0629         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
0630       , 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
0631     )
0632     {
0633         typedef detail::function_ptr<
0634             17
0635           , RT
0636           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
0637         > fp_type;
0638         return
0639             detail::expression::function_eval<
0640                 fp_type
0641               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
0642             >::make(
0643                 fp_type(f)
0644               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16
0645             );
0646     }
0647     
0648     
0649     
0650     
0651     
0652     
0653     
0654     template <
0655         typename RT
0656       , 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
0657       , 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
0658     >
0659     inline
0660     typename detail::expression::function_eval<
0661         detail::function_ptr<
0662             18
0663           , RT
0664           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
0665         >
0666       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
0667     >::type const
0668     bind(
0669         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
0670       , 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
0671     )
0672     {
0673         typedef detail::function_ptr<
0674             18
0675           , RT
0676           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
0677         > fp_type;
0678         return
0679             detail::expression::function_eval<
0680                 fp_type
0681               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
0682             >::make(
0683                 fp_type(f)
0684               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17
0685             );
0686     }
0687     
0688     
0689     
0690     
0691     
0692     
0693     
0694     template <
0695         typename RT
0696       , 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
0697       , 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
0698     >
0699     inline
0700     typename detail::expression::function_eval<
0701         detail::function_ptr<
0702             19
0703           , RT
0704           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
0705         >
0706       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
0707     >::type const
0708     bind(
0709         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
0710       , 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
0711     )
0712     {
0713         typedef detail::function_ptr<
0714             19
0715           , RT
0716           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
0717         > fp_type;
0718         return
0719             detail::expression::function_eval<
0720                 fp_type
0721               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
0722             >::make(
0723                 fp_type(f)
0724               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18
0725             );
0726     }
0727     
0728     
0729     
0730     
0731     
0732     
0733     
0734     template <
0735         typename RT
0736       , 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
0737       , 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
0738     >
0739     inline
0740     typename detail::expression::function_eval<
0741         detail::function_ptr<
0742             20
0743           , RT
0744           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
0745         >
0746       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
0747     >::type const
0748     bind(
0749         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
0750       , 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
0751     )
0752     {
0753         typedef detail::function_ptr<
0754             20
0755           , RT
0756           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
0757         > fp_type;
0758         return
0759             detail::expression::function_eval<
0760                 fp_type
0761               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
0762             >::make(
0763                 fp_type(f)
0764               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19
0765             );
0766     }
0767     
0768     
0769     
0770     
0771     
0772     
0773     
0774     template <
0775         typename RT
0776       , 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
0777       , 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
0778     >
0779     inline
0780     typename detail::expression::function_eval<
0781         detail::function_ptr<
0782             21
0783           , RT
0784           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
0785         >
0786       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
0787     >::type const
0788     bind(
0789         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
0790       , 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
0791     )
0792     {
0793         typedef detail::function_ptr<
0794             21
0795           , RT
0796           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
0797         > fp_type;
0798         return
0799             detail::expression::function_eval<
0800                 fp_type
0801               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
0802             >::make(
0803                 fp_type(f)
0804               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20
0805             );
0806     }
0807     
0808     
0809     
0810     
0811     
0812     
0813     
0814     template <
0815         typename RT
0816       , 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
0817       , 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
0818     >
0819     inline
0820     typename detail::expression::function_eval<
0821         detail::function_ptr<
0822             22
0823           , RT
0824           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
0825         >
0826       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
0827     >::type const
0828     bind(
0829         RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
0830       , 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
0831     )
0832     {
0833         typedef detail::function_ptr<
0834             22
0835           , RT
0836           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
0837         > fp_type;
0838         return
0839             detail::expression::function_eval<
0840                 fp_type
0841               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
0842             >::make(
0843                 fp_type(f)
0844               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21
0845             );
0846     }
0847     
0848     
0849     
0850     
0851     
0852     
0853     
0854     template <
0855         typename RT
0856       , 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
0857       , 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
0858     >
0859     inline
0860     typename detail::expression::function_eval<
0861         detail::function_ptr<
0862             23
0863           , RT
0864           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
0865         >
0866       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
0867     >::type const
0868     bind(
0869         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)
0870       , 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
0871     )
0872     {
0873         typedef detail::function_ptr<
0874             23
0875           , RT
0876           , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
0877         > fp_type;
0878         return
0879             detail::expression::function_eval<
0880                 fp_type
0881               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
0882             >::make(
0883                 fp_type(f)
0884               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22
0885             );
0886     }
0887     
0888     
0889     
0890     
0891     
0892     
0893     
0894     template <
0895         typename RT
0896       , 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
0897       , 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
0898     >
0899     inline
0900     typename detail::expression::function_eval<
0901         detail::function_ptr<
0902             24
0903           , RT
0904           , 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)
0905         >
0906       , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
0907     >::type const
0908     bind(
0909         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)
0910       , 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
0911     )
0912     {
0913         typedef detail::function_ptr<
0914             24
0915           , RT
0916           , 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)
0917         > fp_type;
0918         return
0919             detail::expression::function_eval<
0920                 fp_type
0921               , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
0922             >::make(
0923                 fp_type(f)
0924               , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23
0925             );
0926     }
0927     
0928     
0929     
0930     
0931     
0932     
0933     
0934     template <
0935         typename RT
0936       , 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
0937       , 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
0938     >
0939     inline
0940     typename detail::expression::function_eval<
0941         detail::function_ptr<
0942             25
0943           , RT
0944           , 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)
0945         >
0946       , 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
0947     >::type const
0948     bind(
0949         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)
0950       , 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
0951     )
0952     {
0953         typedef detail::function_ptr<
0954             25
0955           , RT
0956           , 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)
0957         > fp_type;
0958         return
0959             detail::expression::function_eval<
0960                 fp_type
0961               , 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
0962             >::make(
0963                 fp_type(f)
0964               , 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
0965             );
0966     }
0967     
0968     
0969     
0970     
0971     
0972     
0973     
0974     template <
0975         typename RT
0976       , 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
0977       , 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
0978     >
0979     inline
0980     typename detail::expression::function_eval<
0981         detail::function_ptr<
0982             26
0983           , RT
0984           , 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)
0985         >
0986       , 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
0987     >::type const
0988     bind(
0989         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)
0990       , 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
0991     )
0992     {
0993         typedef detail::function_ptr<
0994             26
0995           , RT
0996           , 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)
0997         > fp_type;
0998         return
0999             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     }