Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-23 09:48:03

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