Back to home page

EIC code displayed by LXR

 
 

    


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

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     }