Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:39:06

0001 // -- bind_functions.hpp -- Boost Lambda Library
0002 //
0003 // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
0004 //
0005 // Distributed under the Boost Software License, Version 1.0. (See
0006 // accompanying file LICENSE_1_0.txt or copy at
0007 // http://www.boost.org/LICENSE_1_0.txt)
0008 //
0009 // For more information, see http://www.boost.org
0010 
0011 // ----------------------------------------------------------------
0012 
0013 #ifndef BOOST_LAMBDA_BIND_FUNCTIONS_HPP
0014 #define BOOST_LAMBDA_BIND_FUNCTIONS_HPP
0015 
0016 
0017 namespace boost { 
0018 namespace lambda {
0019 
0020 #ifdef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING
0021 
0022   // gcc 2.96 instantiates bind functions it does not even call.
0023   // These instantiations lead to incorrect types in the return type, 
0024   // and a compilation error results. 
0025   // This tweaking is to prevent the formation of the erroneous type.
0026 namespace detail {
0027 
0028 template<class T> struct constify_non_funcs {
0029   typedef typename 
0030   detail::IF_type<boost::is_function<T>::value,
0031     boost::add_reference<T>,
0032     boost::add_const<T>
0033   >::type type;
0034 };
0035 
0036 }
0037 #endif
0038 // 1-argument bind functions --------------------------
0039 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
0040 template <class Result>
0041 inline const
0042 lambda_functor<
0043   lambda_functor_base<
0044     action<1, function_action<1, Result> >,
0045     typename detail::bind_tuple_mapper<Result(&)()>::type
0046   >
0047 >
0048 
0049 bind(Result(& a1)()) {
0050   return
0051     lambda_functor_base<
0052       action<1, function_action<1, Result> >,
0053       typename detail::bind_tuple_mapper<Result(&)()>::type
0054     >
0055     ( typename detail::bind_tuple_mapper<Result(&)()>::type
0056       (a1)
0057     );
0058 }
0059 #endif
0060 
0061  #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING 
0062 template <class Arg1>
0063 inline const
0064 lambda_functor<
0065   lambda_functor_base<
0066     action<1, function_action<1> >,
0067     typename detail::bind_tuple_mapper<const Arg1>::type
0068   >
0069 >
0070 
0071 bind(const Arg1& a1) {
0072   return
0073     lambda_functor_base<
0074       action<1, function_action<1> >,
0075       typename detail::bind_tuple_mapper<const Arg1>::type
0076     >
0077     ( typename detail::bind_tuple_mapper<const Arg1>::type
0078       (a1)
0079     );
0080 }
0081 
0082 template <class Result, class Arg1>
0083 inline const
0084 lambda_functor<
0085   lambda_functor_base<
0086     action<1, function_action<1, Result> >,
0087     typename detail::bind_tuple_mapper<const Arg1>::type
0088   >
0089 >
0090 
0091 bind(const Arg1& a1) {
0092   return
0093     lambda_functor_base<
0094       action<1, function_action<1, Result> >,
0095       typename detail::bind_tuple_mapper<const Arg1>::type
0096     >
0097     ( typename detail::bind_tuple_mapper<const Arg1>::type
0098       (a1)
0099     );
0100 }
0101 
0102 
0103  #else 
0104 template <class Arg1>
0105 inline const
0106 lambda_functor<
0107   lambda_functor_base<
0108     action<1, function_action<1> >,
0109     typename detail::bind_tuple_mapper<
0110       typename detail::constify_non_funcs<Arg1>::type
0111     >::type
0112   >
0113 >
0114 
0115 bind(const Arg1& a1) {
0116   return
0117     lambda_functor_base<
0118       action<1, function_action<1> >,
0119       typename detail::bind_tuple_mapper<
0120         typename detail::constify_non_funcs<Arg1>::type
0121       >::type
0122     >
0123     ( typename detail::bind_tuple_mapper<
0124         typename detail::constify_non_funcs<Arg1>::type
0125       >::type
0126       (a1)
0127     );
0128 }
0129 
0130 template <class Result, class Arg1>
0131 inline const
0132 lambda_functor<
0133   lambda_functor_base<
0134     action<1, function_action<1, Result> >,
0135     typename detail::bind_tuple_mapper<
0136       typename detail::constify_non_funcs<Arg1>::type
0137     >::type
0138   >
0139 >
0140 
0141 bind(const Arg1& a1) {
0142   return
0143     lambda_functor_base<
0144       action<1, function_action<1, Result> >,
0145       typename detail::bind_tuple_mapper<
0146         typename detail::constify_non_funcs<Arg1>::type
0147       >::type
0148     >
0149     ( typename detail::bind_tuple_mapper<
0150         typename detail::constify_non_funcs<Arg1>::type
0151       >::type
0152       (a1)
0153     );
0154 }
0155 
0156 template <class Result>
0157 inline const
0158 lambda_functor<
0159   lambda_functor_base<
0160     action<1, function_action<1, Result> >,
0161     typename detail::bind_tuple_mapper<Result(*)()>::type
0162   >
0163 >
0164 
0165 bind(Result(* const & a1)()) {
0166   return
0167     lambda_functor_base<
0168       action<1, function_action<1, Result> >,
0169       typename detail::bind_tuple_mapper<Result(*)()>::type
0170     >
0171     ( typename detail::bind_tuple_mapper<Result(*)()>::type
0172       (a1)
0173     );
0174 }
0175 
0176 
0177 #endif 
0178 
0179 // 2-argument bind functions --------------------------
0180 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
0181 template <class Result, class Par1, class Arg2>
0182 inline const
0183 lambda_functor<
0184   lambda_functor_base<
0185     action<2, function_action<2, Result> >,
0186     typename detail::bind_tuple_mapper<Result(&)(Par1), const Arg2>::type
0187   >
0188 >
0189 
0190 bind(Result(&a1)(Par1), const Arg2& a2) {
0191   return
0192     lambda_functor_base<
0193       action<2, function_action<2, Result> >,
0194       typename detail::bind_tuple_mapper<Result(&)(Par1), const Arg2>::type
0195     >
0196     ( typename detail::bind_tuple_mapper<Result(&)(Par1), const Arg2>::type
0197       (a1, a2)
0198     );
0199 }
0200 #endif
0201 
0202 #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING 
0203 template <class Arg1, class Arg2>
0204 inline const
0205 lambda_functor<
0206   lambda_functor_base<
0207     action<2, function_action<2> >,
0208     typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type
0209   >
0210 >
0211 
0212 bind(const Arg1& a1, const Arg2& a2) {
0213   return
0214     lambda_functor_base<
0215       action<2, function_action<2> >,
0216       typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type
0217     >
0218     ( typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type
0219       (a1, a2)
0220     );
0221 }
0222 
0223 template <class Result, class Arg1, class Arg2>
0224 inline const
0225 lambda_functor<
0226   lambda_functor_base<
0227     action<2, function_action<2, Result> >,
0228     typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type
0229   >
0230 >
0231 
0232 bind(const Arg1& a1, const Arg2& a2) {
0233   return
0234     lambda_functor_base<
0235       action<2, function_action<2, Result> >,
0236       typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type
0237     >
0238     ( typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type
0239       (a1, a2)
0240     );
0241 }
0242 
0243 
0244  #else 
0245 template <class Arg1, class Arg2>
0246 inline const
0247 lambda_functor<
0248   lambda_functor_base<
0249     action<2, function_action<2> >,
0250     typename detail::bind_tuple_mapper<
0251       typename detail::constify_non_funcs<Arg1>::type, const Arg2
0252     >::type
0253   >
0254 >
0255 
0256 bind(const Arg1& a1, const Arg2& a2) {
0257   return
0258     lambda_functor_base<
0259       action<2, function_action<2> >,
0260       typename detail::bind_tuple_mapper<
0261         typename detail::constify_non_funcs<Arg1>::type, const Arg2
0262       >::type
0263     >
0264     ( typename detail::bind_tuple_mapper<
0265         typename detail::constify_non_funcs<Arg1>::type, const Arg2
0266       >::type
0267       (a1, a2)
0268     );
0269 }
0270 
0271 template <class Result, class Arg1, class Arg2>
0272 inline const
0273 lambda_functor<
0274   lambda_functor_base<
0275     action<2, function_action<2, Result> >,
0276     typename detail::bind_tuple_mapper<
0277       typename detail::constify_non_funcs<Arg1>::type, const Arg2
0278     >::type
0279   >
0280 >
0281 
0282 bind(const Arg1& a1, const Arg2& a2) {
0283   return
0284     lambda_functor_base<
0285       action<2, function_action<2, Result> >,
0286       typename detail::bind_tuple_mapper<
0287         typename detail::constify_non_funcs<Arg1>::type, const Arg2
0288       >::type
0289     >
0290     ( typename detail::bind_tuple_mapper<
0291         typename detail::constify_non_funcs<Arg1>::type, const Arg2
0292       >::type
0293       (a1, a2)
0294     );
0295 }
0296 
0297 template <class Result, class Par1, class Arg2>
0298 inline const
0299 lambda_functor<
0300   lambda_functor_base<
0301     action<2, function_action<2, Result> >,
0302     typename detail::bind_tuple_mapper<Result(*)(Par1), const Arg2>::type
0303   >
0304 >
0305 
0306 bind(Result(* const & a1)(Par1), const Arg2& a2) {
0307   return
0308     lambda_functor_base<
0309       action<2, function_action<2, Result> >,
0310       typename detail::bind_tuple_mapper<Result(*)(Par1), const Arg2>::type
0311     >
0312     ( typename detail::bind_tuple_mapper<Result(*)(Par1), const Arg2>::type
0313       (a1, a2)
0314     );
0315 }
0316 
0317 
0318  #endif 
0319 
0320 // 3-argument bind functions --------------------------
0321 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
0322 template <class Result, class Par1, class Par2, class Arg2, class Arg3>
0323 inline const
0324 lambda_functor<
0325   lambda_functor_base<
0326     action<3, function_action<3, Result> >,
0327     typename detail::bind_tuple_mapper<
0328       Result(&)(Par1, Par2), const Arg2, const Arg3
0329     >::type
0330   >
0331 >
0332 
0333 bind(Result(&a1)(Par1, Par2), const Arg2& a2, const Arg3& a3) {
0334   return
0335     lambda_functor_base<
0336       action<3, function_action<3, Result> >,
0337       typename detail::bind_tuple_mapper<
0338         Result(&)(Par1, Par2), const Arg2, const Arg3
0339       >::type
0340     >
0341     ( typename detail::bind_tuple_mapper<
0342         Result(&)(Par1, Par2), const Arg2, const Arg3
0343       >::type
0344       (a1, a2, a3)
0345     );
0346 }
0347 #endif
0348 
0349  #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING 
0350 template <class Arg1, class Arg2, class Arg3>
0351 inline const
0352 lambda_functor<
0353   lambda_functor_base<
0354     action<3, function_action<3> >,
0355     typename detail::bind_tuple_mapper<
0356       const Arg1, const Arg2, const Arg3
0357     >::type
0358   >
0359 >
0360 
0361 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3) {
0362   return
0363     lambda_functor_base<
0364       action<3, function_action<3> >,
0365       typename detail::bind_tuple_mapper<
0366         const Arg1, const Arg2, const Arg3
0367       >::type
0368     >
0369     ( typename detail::bind_tuple_mapper<
0370         const Arg1, const Arg2, const Arg3
0371       >::type
0372       (a1, a2, a3)
0373     );
0374 }
0375 
0376 template <class Result, class Arg1, class Arg2, class Arg3>
0377 inline const
0378 lambda_functor<
0379   lambda_functor_base<
0380     action<3, function_action<3, Result> >,
0381     typename detail::bind_tuple_mapper<
0382       const Arg1, const Arg2, const Arg3
0383     >::type
0384   >
0385 >
0386 
0387 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3) {
0388   return
0389     lambda_functor_base<
0390       action<3, function_action<3, Result> >,
0391       typename detail::bind_tuple_mapper<
0392         const Arg1, const Arg2, const Arg3
0393       >::type
0394     >
0395     ( typename detail::bind_tuple_mapper<
0396         const Arg1, const Arg2, const Arg3
0397       >::type
0398       (a1, a2, a3)
0399     );
0400 }
0401 
0402 
0403  #else 
0404 template <class Arg1, class Arg2, class Arg3>
0405 inline const
0406 lambda_functor<
0407   lambda_functor_base<
0408     action<3, function_action<3> >,
0409     typename detail::bind_tuple_mapper<
0410       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3
0411     >::type
0412   >
0413 >
0414 
0415 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3) {
0416   return
0417     lambda_functor_base<
0418       action<3, function_action<3> >,
0419       typename detail::bind_tuple_mapper<
0420         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0421         const Arg3
0422       >::type
0423     >
0424     ( typename detail::bind_tuple_mapper<
0425         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0426         const Arg3
0427       >::type
0428       (a1, a2, a3)
0429     );
0430 }
0431 
0432 template <class Result, class Arg1, class Arg2, class Arg3>
0433 inline const
0434 lambda_functor<
0435   lambda_functor_base<
0436     action<3, function_action<3, Result> >,
0437     typename detail::bind_tuple_mapper<
0438       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3
0439     >::type
0440   >
0441 >
0442 
0443 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3) {
0444   return
0445     lambda_functor_base<
0446       action<3, function_action<3, Result> >,
0447       typename detail::bind_tuple_mapper<
0448         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0449         const Arg3
0450       >::type
0451     >
0452     ( typename detail::bind_tuple_mapper<
0453         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0454         const Arg3
0455       >::type
0456       (a1, a2, a3)
0457     );
0458 }
0459 
0460 template <class Result, class Par1, class Par2, class Arg2, class Arg3>
0461 inline const
0462 lambda_functor<
0463   lambda_functor_base<
0464     action<3, function_action<3, Result> >,
0465     typename detail::bind_tuple_mapper<
0466       Result(*)(Par1, Par2), const Arg2, const Arg3
0467     >::type
0468   >
0469 >
0470 
0471 bind(Result(* const & a1)(Par1, Par2), const Arg2& a2, const Arg3& a3) {
0472   return
0473     lambda_functor_base<
0474       action<3, function_action<3, Result> >,
0475       typename detail::bind_tuple_mapper<
0476         Result(*)(Par1, Par2), const Arg2, const Arg3
0477       >::type
0478     >
0479     ( typename detail::bind_tuple_mapper<
0480         Result(*)(Par1, Par2), const Arg2, const Arg3
0481       >::type
0482       (a1, a2, a3)
0483     );
0484 }
0485 
0486 
0487  #endif 
0488 
0489 // 4-argument bind functions --------------------------
0490 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
0491 template <class Result, class Par1, class Par2, class Par3, class Arg2,
0492           class Arg3, class Arg4>
0493 inline const
0494 lambda_functor<
0495   lambda_functor_base<
0496     action<4, function_action<4, Result> >,
0497     typename detail::bind_tuple_mapper<
0498       Result(&)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4
0499     >::type
0500   >
0501 >
0502 
0503 bind(Result(&a1)(Par1, Par2, Par3), const Arg2& a2, const Arg3& a3,
0504      const Arg4& a4) {
0505   return
0506     lambda_functor_base<
0507       action<4, function_action<4, Result> >,
0508       typename detail::bind_tuple_mapper<
0509         Result(&)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4
0510       >::type
0511     >
0512     ( typename detail::bind_tuple_mapper<
0513         Result(&)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4
0514       >::type
0515       (a1, a2, a3, a4)
0516     );
0517 }
0518 #endif
0519 
0520  #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING 
0521 template <class Arg1, class Arg2, class Arg3, class Arg4>
0522 inline const
0523 lambda_functor<
0524   lambda_functor_base<
0525     action<4, function_action<4> >,
0526     typename detail::bind_tuple_mapper<
0527       const Arg1, const Arg2, const Arg3, const Arg4
0528     >::type
0529   >
0530 >
0531 
0532 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) {
0533   return
0534     lambda_functor_base<
0535       action<4, function_action<4> >,
0536       typename detail::bind_tuple_mapper<
0537         const Arg1, const Arg2, const Arg3, const Arg4
0538       >::type
0539     >
0540     ( typename detail::bind_tuple_mapper<
0541         const Arg1, const Arg2, const Arg3, const Arg4
0542       >::type
0543       (a1, a2, a3, a4)
0544     );
0545 }
0546 
0547 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4>
0548 inline const
0549 lambda_functor<
0550   lambda_functor_base<
0551     action<4, function_action<4, Result> >,
0552     typename detail::bind_tuple_mapper<
0553       const Arg1, const Arg2, const Arg3, const Arg4
0554     >::type
0555   >
0556 >
0557 
0558 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) {
0559   return
0560     lambda_functor_base<
0561       action<4, function_action<4, Result> >,
0562       typename detail::bind_tuple_mapper<
0563         const Arg1, const Arg2, const Arg3, const Arg4
0564       >::type
0565     >
0566     ( typename detail::bind_tuple_mapper<
0567         const Arg1, const Arg2, const Arg3, const Arg4
0568       >::type
0569       (a1, a2, a3, a4)
0570     );
0571 }
0572 
0573 
0574  #else 
0575 template <class Arg1, class Arg2, class Arg3, class Arg4>
0576 inline const
0577 lambda_functor<
0578   lambda_functor_base<
0579     action<4, function_action<4> >,
0580     typename detail::bind_tuple_mapper<
0581       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
0582       const Arg4
0583     >::type
0584   >
0585 >
0586 
0587 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) {
0588   return
0589     lambda_functor_base<
0590       action<4, function_action<4> >,
0591       typename detail::bind_tuple_mapper<
0592         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0593         const Arg3, const Arg4
0594       >::type
0595     >
0596     ( typename detail::bind_tuple_mapper<
0597         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0598         const Arg3, const Arg4
0599       >::type
0600       (a1, a2, a3, a4)
0601     );
0602 }
0603 
0604 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4>
0605 inline const
0606 lambda_functor<
0607   lambda_functor_base<
0608     action<4, function_action<4, Result> >,
0609     typename detail::bind_tuple_mapper<
0610       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
0611       const Arg4
0612     >::type
0613   >
0614 >
0615 
0616 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) {
0617   return
0618     lambda_functor_base<
0619       action<4, function_action<4, Result> >,
0620       typename detail::bind_tuple_mapper<
0621         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0622         const Arg3, const Arg4
0623       >::type
0624     >
0625     ( typename detail::bind_tuple_mapper<
0626         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0627         const Arg3, const Arg4
0628       >::type
0629       (a1, a2, a3, a4)
0630     );
0631 }
0632 
0633 template <class Result, class Par1, class Par2, class Par3, class Arg2,
0634           class Arg3, class Arg4>
0635 inline const
0636 lambda_functor<
0637   lambda_functor_base<
0638     action<4, function_action<4, Result> >,
0639     typename detail::bind_tuple_mapper<
0640       Result(*)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4
0641     >::type
0642   >
0643 >
0644 
0645 bind(Result(* const & a1)(Par1, Par2, Par3), const Arg2& a2,
0646      const Arg3& a3, const Arg4& a4) {
0647   return
0648     lambda_functor_base<
0649       action<4, function_action<4, Result> >,
0650       typename detail::bind_tuple_mapper<
0651         Result(*)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4
0652       >::type
0653     >
0654     ( typename detail::bind_tuple_mapper<
0655         Result(*)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4
0656       >::type
0657       (a1, a2, a3, a4)
0658     );
0659 }
0660 
0661 
0662  #endif 
0663 
0664 // 5-argument bind functions --------------------------
0665 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
0666 template <class Result, class Par1, class Par2, class Par3, class Par4,
0667           class Arg2, class Arg3, class Arg4, class Arg5>
0668 inline const
0669 lambda_functor<
0670   lambda_functor_base<
0671     action<5, function_action<5, Result> >,
0672     typename detail::bind_tuple_mapper<
0673       Result(&)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4,
0674       const Arg5
0675     >::type
0676   >
0677 >
0678 
0679 bind(Result(&a1)(Par1, Par2, Par3, Par4), const Arg2& a2, const Arg3& a3,
0680      const Arg4& a4, const Arg5& a5) {
0681   return
0682     lambda_functor_base<
0683       action<5, function_action<5, Result> >,
0684       typename detail::bind_tuple_mapper<
0685         Result(&)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4,
0686         const Arg5
0687       >::type
0688     >
0689     ( typename detail::bind_tuple_mapper<
0690         Result(&)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4,
0691         const Arg5
0692       >::type
0693       (a1, a2, a3, a4, a5)
0694     );
0695 }
0696 #endif
0697 
0698  #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING 
0699 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
0700 inline const
0701 lambda_functor<
0702   lambda_functor_base<
0703     action<5, function_action<5> >,
0704     typename detail::bind_tuple_mapper<
0705       const Arg1, const Arg2, const Arg3, const Arg4, const Arg5
0706     >::type
0707   >
0708 >
0709 
0710 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
0711      const Arg5& a5) {
0712   return
0713     lambda_functor_base<
0714       action<5, function_action<5> >,
0715       typename detail::bind_tuple_mapper<
0716         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5
0717       >::type
0718     >
0719     ( typename detail::bind_tuple_mapper<
0720         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5
0721       >::type
0722       (a1, a2, a3, a4, a5)
0723     );
0724 }
0725 
0726 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
0727           class Arg5>
0728 inline const
0729 lambda_functor<
0730   lambda_functor_base<
0731     action<5, function_action<5, Result> >,
0732     typename detail::bind_tuple_mapper<
0733       const Arg1, const Arg2, const Arg3, const Arg4, const Arg5
0734     >::type
0735   >
0736 >
0737 
0738 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
0739      const Arg5& a5) {
0740   return
0741     lambda_functor_base<
0742       action<5, function_action<5, Result> >,
0743       typename detail::bind_tuple_mapper<
0744         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5
0745       >::type
0746     >
0747     ( typename detail::bind_tuple_mapper<
0748         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5
0749       >::type
0750       (a1, a2, a3, a4, a5)
0751     );
0752 }
0753 
0754 
0755  #else 
0756 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
0757 inline const
0758 lambda_functor<
0759   lambda_functor_base<
0760     action<5, function_action<5> >,
0761     typename detail::bind_tuple_mapper<
0762       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
0763       const Arg4, const Arg5
0764     >::type
0765   >
0766 >
0767 
0768 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
0769      const Arg5& a5) {
0770   return
0771     lambda_functor_base<
0772       action<5, function_action<5> >,
0773       typename detail::bind_tuple_mapper<
0774         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0775         const Arg3, const Arg4, const Arg5
0776       >::type
0777     >
0778     ( typename detail::bind_tuple_mapper<
0779         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0780         const Arg3, const Arg4, const Arg5
0781       >::type
0782       (a1, a2, a3, a4, a5)
0783     );
0784 }
0785 
0786 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
0787           class Arg5>
0788 inline const
0789 lambda_functor<
0790   lambda_functor_base<
0791     action<5, function_action<5, Result> >,
0792     typename detail::bind_tuple_mapper<
0793       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
0794       const Arg4, const Arg5
0795     >::type
0796   >
0797 >
0798 
0799 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
0800      const Arg5& a5) {
0801   return
0802     lambda_functor_base<
0803       action<5, function_action<5, Result> >,
0804       typename detail::bind_tuple_mapper<
0805         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0806         const Arg3, const Arg4, const Arg5
0807       >::type
0808     >
0809     ( typename detail::bind_tuple_mapper<
0810         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0811         const Arg3, const Arg4, const Arg5
0812       >::type
0813       (a1, a2, a3, a4, a5)
0814     );
0815 }
0816 
0817 template <class Result, class Par1, class Par2, class Par3, class Par4,
0818           class Arg2, class Arg3, class Arg4, class Arg5>
0819 inline const
0820 lambda_functor<
0821   lambda_functor_base<
0822     action<5, function_action<5, Result> >,
0823     typename detail::bind_tuple_mapper<
0824       Result(*)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4,
0825       const Arg5
0826     >::type
0827   >
0828 >
0829 
0830 bind(Result(* const & a1)(Par1, Par2, Par3, Par4), const Arg2& a2,
0831      const Arg3& a3, const Arg4& a4, const Arg5& a5) {
0832   return
0833     lambda_functor_base<
0834       action<5, function_action<5, Result> >,
0835       typename detail::bind_tuple_mapper<
0836         Result(*)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4,
0837         const Arg5
0838       >::type
0839     >
0840     ( typename detail::bind_tuple_mapper<
0841         Result(*)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4,
0842         const Arg5
0843       >::type
0844       (a1, a2, a3, a4, a5)
0845     );
0846 }
0847 
0848 
0849  #endif 
0850 
0851 // 6-argument bind functions --------------------------
0852 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
0853 template <class Result, class Par1, class Par2, class Par3, class Par4,
0854           class Par5, class Arg2, class Arg3, class Arg4, class Arg5,
0855           class Arg6>
0856 inline const
0857 lambda_functor<
0858   lambda_functor_base<
0859     action<6, function_action<6, Result> >,
0860     typename detail::bind_tuple_mapper<
0861       Result(&)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3,
0862       const Arg4, const Arg5, const Arg6
0863     >::type
0864   >
0865 >
0866 
0867 bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5), const Arg2& a2,
0868      const Arg3& a3, const Arg4& a4, const Arg5& a5, const Arg6& a6) {
0869   return
0870     lambda_functor_base<
0871       action<6, function_action<6, Result> >,
0872       typename detail::bind_tuple_mapper<
0873         Result(&)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3,
0874         const Arg4, const Arg5, const Arg6
0875       >::type
0876     >
0877     ( typename detail::bind_tuple_mapper<
0878         Result(&)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3,
0879         const Arg4, const Arg5, const Arg6
0880       >::type
0881       (a1, a2, a3, a4, a5, a6)
0882     );
0883 }
0884 #endif
0885 
0886  #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING 
0887 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
0888           class Arg6>
0889 inline const
0890 lambda_functor<
0891   lambda_functor_base<
0892     action<6, function_action<6> >,
0893     typename detail::bind_tuple_mapper<
0894       const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6
0895     >::type
0896   >
0897 >
0898 
0899 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
0900      const Arg5& a5, const Arg6& a6) {
0901   return
0902     lambda_functor_base<
0903       action<6, function_action<6> >,
0904       typename detail::bind_tuple_mapper<
0905         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6
0906       >::type
0907     >
0908     ( typename detail::bind_tuple_mapper<
0909         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6
0910       >::type
0911       (a1, a2, a3, a4, a5, a6)
0912     );
0913 }
0914 
0915 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
0916           class Arg5, class Arg6>
0917 inline const
0918 lambda_functor<
0919   lambda_functor_base<
0920     action<6, function_action<6, Result> >,
0921     typename detail::bind_tuple_mapper<
0922       const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6
0923     >::type
0924   >
0925 >
0926 
0927 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
0928      const Arg5& a5, const Arg6& a6) {
0929   return
0930     lambda_functor_base<
0931       action<6, function_action<6, Result> >,
0932       typename detail::bind_tuple_mapper<
0933         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6
0934       >::type
0935     >
0936     ( typename detail::bind_tuple_mapper<
0937         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6
0938       >::type
0939       (a1, a2, a3, a4, a5, a6)
0940     );
0941 }
0942 
0943 
0944  #else 
0945 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
0946           class Arg6>
0947 inline const
0948 lambda_functor<
0949   lambda_functor_base<
0950     action<6, function_action<6> >,
0951     typename detail::bind_tuple_mapper<
0952       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
0953       const Arg4, const Arg5, const Arg6
0954     >::type
0955   >
0956 >
0957 
0958 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
0959      const Arg5& a5, const Arg6& a6) {
0960   return
0961     lambda_functor_base<
0962       action<6, function_action<6> >,
0963       typename detail::bind_tuple_mapper<
0964         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0965         const Arg3, const Arg4, const Arg5, const Arg6
0966       >::type
0967     >
0968     ( typename detail::bind_tuple_mapper<
0969         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0970         const Arg3, const Arg4, const Arg5, const Arg6
0971       >::type
0972       (a1, a2, a3, a4, a5, a6)
0973     );
0974 }
0975 
0976 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
0977           class Arg5, class Arg6>
0978 inline const
0979 lambda_functor<
0980   lambda_functor_base<
0981     action<6, function_action<6, Result> >,
0982     typename detail::bind_tuple_mapper<
0983       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
0984       const Arg4, const Arg5, const Arg6
0985     >::type
0986   >
0987 >
0988 
0989 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
0990      const Arg5& a5, const Arg6& a6) {
0991   return
0992     lambda_functor_base<
0993       action<6, function_action<6, Result> >,
0994       typename detail::bind_tuple_mapper<
0995         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
0996         const Arg3, const Arg4, const Arg5, const Arg6
0997       >::type
0998     >
0999     ( typename detail::bind_tuple_mapper<
1000         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1001         const Arg3, const Arg4, const Arg5, const Arg6
1002       >::type
1003       (a1, a2, a3, a4, a5, a6)
1004     );
1005 }
1006 
1007 template <class Result, class Par1, class Par2, class Par3, class Par4,
1008           class Par5, class Arg2, class Arg3, class Arg4, class Arg5,
1009           class Arg6>
1010 inline const
1011 lambda_functor<
1012   lambda_functor_base<
1013     action<6, function_action<6, Result> >,
1014     typename detail::bind_tuple_mapper<
1015       Result(*)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3,
1016       const Arg4, const Arg5, const Arg6
1017     >::type
1018   >
1019 >
1020 
1021 bind(Result(* const & a1)(Par1, Par2, Par3, Par4, Par5), const Arg2& a2,
1022      const Arg3& a3, const Arg4& a4, const Arg5& a5, const Arg6& a6) {
1023   return
1024     lambda_functor_base<
1025       action<6, function_action<6, Result> >,
1026       typename detail::bind_tuple_mapper<
1027         Result(*)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3,
1028         const Arg4, const Arg5, const Arg6
1029       >::type
1030     >
1031     ( typename detail::bind_tuple_mapper<
1032         Result(*)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3,
1033         const Arg4, const Arg5, const Arg6
1034       >::type
1035       (a1, a2, a3, a4, a5, a6)
1036     );
1037 }
1038 
1039 
1040  #endif 
1041 
1042 // 7-argument bind functions --------------------------
1043 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
1044 template <class Result, class Par1, class Par2, class Par3, class Par4,
1045           class Par5, class Par6, class Arg2, class Arg3, class Arg4,
1046           class Arg5, class Arg6, class Arg7>
1047 inline const
1048 lambda_functor<
1049   lambda_functor_base<
1050     action<7, function_action<7, Result> >,
1051     typename detail::bind_tuple_mapper<
1052       Result(&)(Par1, Par2, Par3, Par4, Par5, Par6), const Arg2, const Arg3,
1053       const Arg4, const Arg5, const Arg6, const Arg7
1054     >::type
1055   >
1056 >
1057 
1058 bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6), const Arg2& a2,
1059      const Arg3& a3, const Arg4& a4, const Arg5& a5, const Arg6& a6,
1060      const Arg7& a7) {
1061   return
1062     lambda_functor_base<
1063       action<7, function_action<7, Result> >,
1064       typename detail::bind_tuple_mapper<
1065         Result(&)(Par1, Par2, Par3, Par4, Par5, Par6), const Arg2, const Arg3,
1066         const Arg4, const Arg5, const Arg6, const Arg7
1067       >::type
1068     >
1069     ( typename detail::bind_tuple_mapper<
1070         Result(&)(Par1, Par2, Par3, Par4, Par5, Par6), const Arg2, const Arg3,
1071         const Arg4, const Arg5, const Arg6, const Arg7
1072       >::type
1073       (a1, a2, a3, a4, a5, a6, a7)
1074     );
1075 }
1076 #endif
1077 
1078  #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING 
1079 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
1080           class Arg6, class Arg7>
1081 inline const
1082 lambda_functor<
1083   lambda_functor_base<
1084     action<7, function_action<7> >,
1085     typename detail::bind_tuple_mapper<
1086       const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6,
1087       const Arg7
1088     >::type
1089   >
1090 >
1091 
1092 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1093      const Arg5& a5, const Arg6& a6, const Arg7& a7) {
1094   return
1095     lambda_functor_base<
1096       action<7, function_action<7> >,
1097       typename detail::bind_tuple_mapper<
1098         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1099         const Arg6, const Arg7
1100       >::type
1101     >
1102     ( typename detail::bind_tuple_mapper<
1103         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1104         const Arg6, const Arg7
1105       >::type
1106       (a1, a2, a3, a4, a5, a6, a7)
1107     );
1108 }
1109 
1110 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1111           class Arg5, class Arg6, class Arg7>
1112 inline const
1113 lambda_functor<
1114   lambda_functor_base<
1115     action<7, function_action<7, Result> >,
1116     typename detail::bind_tuple_mapper<
1117       const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6,
1118       const Arg7
1119     >::type
1120   >
1121 >
1122 
1123 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1124      const Arg5& a5, const Arg6& a6, const Arg7& a7) {
1125   return
1126     lambda_functor_base<
1127       action<7, function_action<7, Result> >,
1128       typename detail::bind_tuple_mapper<
1129         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1130         const Arg6, const Arg7
1131       >::type
1132     >
1133     ( typename detail::bind_tuple_mapper<
1134         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1135         const Arg6, const Arg7
1136       >::type
1137       (a1, a2, a3, a4, a5, a6, a7)
1138     );
1139 }
1140 
1141 
1142  #else 
1143 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
1144           class Arg6, class Arg7>
1145 inline const
1146 lambda_functor<
1147   lambda_functor_base<
1148     action<7, function_action<7> >,
1149     typename detail::bind_tuple_mapper<
1150       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
1151       const Arg4, const Arg5, const Arg6, const Arg7
1152     >::type
1153   >
1154 >
1155 
1156 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1157      const Arg5& a5, const Arg6& a6, const Arg7& a7) {
1158   return
1159     lambda_functor_base<
1160       action<7, function_action<7> >,
1161       typename detail::bind_tuple_mapper<
1162         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1163         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7
1164       >::type
1165     >
1166     ( typename detail::bind_tuple_mapper<
1167         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1168         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7
1169       >::type
1170       (a1, a2, a3, a4, a5, a6, a7)
1171     );
1172 }
1173 
1174 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1175           class Arg5, class Arg6, class Arg7>
1176 inline const
1177 lambda_functor<
1178   lambda_functor_base<
1179     action<7, function_action<7, Result> >,
1180     typename detail::bind_tuple_mapper<
1181       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
1182       const Arg4, const Arg5, const Arg6, const Arg7
1183     >::type
1184   >
1185 >
1186 
1187 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1188      const Arg5& a5, const Arg6& a6, const Arg7& a7) {
1189   return
1190     lambda_functor_base<
1191       action<7, function_action<7, Result> >,
1192       typename detail::bind_tuple_mapper<
1193         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1194         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7
1195       >::type
1196     >
1197     ( typename detail::bind_tuple_mapper<
1198         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1199         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7
1200       >::type
1201       (a1, a2, a3, a4, a5, a6, a7)
1202     );
1203 }
1204 
1205 template <class Result, class Par1, class Par2, class Par3, class Par4,
1206           class Par5, class Par6, class Arg2, class Arg3, class Arg4,
1207           class Arg5, class Arg6, class Arg7>
1208 inline const
1209 lambda_functor<
1210   lambda_functor_base<
1211     action<7, function_action<7, Result> >,
1212     typename detail::bind_tuple_mapper<
1213       Result(*)(Par1, Par2, Par3, Par4, Par5, Par6), const Arg2, const Arg3,
1214       const Arg4, const Arg5, const Arg6, const Arg7
1215     >::type
1216   >
1217 >
1218 
1219 bind(Result(* const & a1)(Par1, Par2, Par3, Par4, Par5, Par6),
1220      const Arg2& a2, const Arg3& a3, const Arg4& a4, const Arg5& a5,
1221      const Arg6& a6, const Arg7& a7) {
1222   return
1223     lambda_functor_base<
1224       action<7, function_action<7, Result> >,
1225       typename detail::bind_tuple_mapper<
1226         Result(*)(Par1, Par2, Par3, Par4, Par5, Par6), const Arg2, const Arg3,
1227         const Arg4, const Arg5, const Arg6, const Arg7
1228       >::type
1229     >
1230     ( typename detail::bind_tuple_mapper<
1231         Result(*)(Par1, Par2, Par3, Par4, Par5, Par6), const Arg2, const Arg3,
1232         const Arg4, const Arg5, const Arg6, const Arg7
1233       >::type
1234       (a1, a2, a3, a4, a5, a6, a7)
1235     );
1236 }
1237 
1238 
1239  #endif 
1240 
1241 // 8-argument bind functions --------------------------
1242 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
1243 template <class Result, class Par1, class Par2, class Par3, class Par4,
1244           class Par5, class Par6, class Par7, class Arg2, class Arg3,
1245           class Arg4, class Arg5, class Arg6, class Arg7, class Arg8>
1246 inline const
1247 lambda_functor<
1248   lambda_functor_base<
1249     action<8, function_action<8, Result> >,
1250     typename detail::bind_tuple_mapper<
1251       Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7), const Arg2,
1252       const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8
1253     >::type
1254   >
1255 >
1256 
1257 bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7), const Arg2& a2,
1258      const Arg3& a3, const Arg4& a4, const Arg5& a5, const Arg6& a6,
1259      const Arg7& a7, const Arg8& a8) {
1260   return
1261     lambda_functor_base<
1262       action<8, function_action<8, Result> >,
1263       typename detail::bind_tuple_mapper<
1264         Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7), const Arg2,
1265         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8
1266       >::type
1267     >
1268     ( typename detail::bind_tuple_mapper<
1269         Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7), const Arg2,
1270         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8
1271       >::type
1272       (a1, a2, a3, a4, a5, a6, a7, a8)
1273     );
1274 }
1275 #endif
1276 
1277  #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING 
1278 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
1279           class Arg6, class Arg7, class Arg8>
1280 inline const
1281 lambda_functor<
1282   lambda_functor_base<
1283     action<8, function_action<8> >,
1284     typename detail::bind_tuple_mapper<
1285       const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6,
1286       const Arg7, const Arg8
1287     >::type
1288   >
1289 >
1290 
1291 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1292      const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8) {
1293   return
1294     lambda_functor_base<
1295       action<8, function_action<8> >,
1296       typename detail::bind_tuple_mapper<
1297         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1298         const Arg6, const Arg7, const Arg8
1299       >::type
1300     >
1301     ( typename detail::bind_tuple_mapper<
1302         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1303         const Arg6, const Arg7, const Arg8
1304       >::type
1305       (a1, a2, a3, a4, a5, a6, a7, a8)
1306     );
1307 }
1308 
1309 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1310           class Arg5, class Arg6, class Arg7, class Arg8>
1311 inline const
1312 lambda_functor<
1313   lambda_functor_base<
1314     action<8, function_action<8, Result> >,
1315     typename detail::bind_tuple_mapper<
1316       const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6,
1317       const Arg7, const Arg8
1318     >::type
1319   >
1320 >
1321 
1322 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1323      const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8) {
1324   return
1325     lambda_functor_base<
1326       action<8, function_action<8, Result> >,
1327       typename detail::bind_tuple_mapper<
1328         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1329         const Arg6, const Arg7, const Arg8
1330       >::type
1331     >
1332     ( typename detail::bind_tuple_mapper<
1333         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1334         const Arg6, const Arg7, const Arg8
1335       >::type
1336       (a1, a2, a3, a4, a5, a6, a7, a8)
1337     );
1338 }
1339 
1340 
1341  #else 
1342 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
1343           class Arg6, class Arg7, class Arg8>
1344 inline const
1345 lambda_functor<
1346   lambda_functor_base<
1347     action<8, function_action<8> >,
1348     typename detail::bind_tuple_mapper<
1349       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
1350       const Arg4, const Arg5, const Arg6, const Arg7, const Arg8
1351     >::type
1352   >
1353 >
1354 
1355 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1356      const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8) {
1357   return
1358     lambda_functor_base<
1359       action<8, function_action<8> >,
1360       typename detail::bind_tuple_mapper<
1361         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1362         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8
1363       >::type
1364     >
1365     ( typename detail::bind_tuple_mapper<
1366         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1367         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8
1368       >::type
1369       (a1, a2, a3, a4, a5, a6, a7, a8)
1370     );
1371 }
1372 
1373 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1374           class Arg5, class Arg6, class Arg7, class Arg8>
1375 inline const
1376 lambda_functor<
1377   lambda_functor_base<
1378     action<8, function_action<8, Result> >,
1379     typename detail::bind_tuple_mapper<
1380       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
1381       const Arg4, const Arg5, const Arg6, const Arg7, const Arg8
1382     >::type
1383   >
1384 >
1385 
1386 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1387      const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8) {
1388   return
1389     lambda_functor_base<
1390       action<8, function_action<8, Result> >,
1391       typename detail::bind_tuple_mapper<
1392         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1393         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8
1394       >::type
1395     >
1396     ( typename detail::bind_tuple_mapper<
1397         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1398         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8
1399       >::type
1400       (a1, a2, a3, a4, a5, a6, a7, a8)
1401     );
1402 }
1403 
1404 template <class Result, class Par1, class Par2, class Par3, class Par4,
1405           class Par5, class Par6, class Par7, class Arg2, class Arg3,
1406           class Arg4, class Arg5, class Arg6, class Arg7, class Arg8>
1407 inline const
1408 lambda_functor<
1409   lambda_functor_base<
1410     action<8, function_action<8, Result> >,
1411     typename detail::bind_tuple_mapper<
1412       Result(*)(Par1, Par2, Par3, Par4, Par5, Par6, Par7), const Arg2,
1413       const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8
1414     >::type
1415   >
1416 >
1417 
1418 bind(Result(* const & a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7),
1419      const Arg2& a2, const Arg3& a3, const Arg4& a4, const Arg5& a5,
1420      const Arg6& a6, const Arg7& a7, const Arg8& a8) {
1421   return
1422     lambda_functor_base<
1423       action<8, function_action<8, Result> >,
1424       typename detail::bind_tuple_mapper<
1425         Result(*)(Par1, Par2, Par3, Par4, Par5, Par6, Par7), const Arg2,
1426         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8
1427       >::type
1428     >
1429     ( typename detail::bind_tuple_mapper<
1430         Result(*)(Par1, Par2, Par3, Par4, Par5, Par6, Par7), const Arg2,
1431         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8
1432       >::type
1433       (a1, a2, a3, a4, a5, a6, a7, a8)
1434     );
1435 }
1436 
1437 
1438  #endif 
1439 
1440 // 9-argument bind functions --------------------------
1441 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
1442 template <class Result, class Par1, class Par2, class Par3, class Par4,
1443           class Par5, class Par6, class Par7, class Par8, class Arg2,
1444           class Arg3, class Arg4, class Arg5, class Arg6, class Arg7,
1445           class Arg8, class Arg9>
1446 inline const
1447 lambda_functor<
1448   lambda_functor_base<
1449     action<9, function_action<9, Result> >,
1450     typename detail::bind_tuple_mapper<
1451       Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8), const Arg2,
1452       const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8,
1453       const Arg9
1454     >::type
1455   >
1456 >
1457 
1458 bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8),
1459      const Arg2& a2, const Arg3& a3, const Arg4& a4, const Arg5& a5,
1460      const Arg6& a6, const Arg7& a7, const Arg8& a8, const Arg9& a9) {
1461   return
1462     lambda_functor_base<
1463       action<9, function_action<9, Result> >,
1464       typename detail::bind_tuple_mapper<
1465         Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8), const Arg2,
1466         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7,
1467         const Arg8, const Arg9
1468       >::type
1469     >
1470     ( typename detail::bind_tuple_mapper<
1471         Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8), const Arg2,
1472         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7,
1473         const Arg8, const Arg9
1474       >::type
1475       (a1, a2, a3, a4, a5, a6, a7, a8, a9)
1476     );
1477 }
1478 #endif
1479 
1480  #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING 
1481 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
1482           class Arg6, class Arg7, class Arg8, class Arg9>
1483 inline const
1484 lambda_functor<
1485   lambda_functor_base<
1486     action<9, function_action<9> >,
1487     typename detail::bind_tuple_mapper<
1488       const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6,
1489       const Arg7, const Arg8, const Arg9
1490     >::type
1491   >
1492 >
1493 
1494 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1495      const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8,
1496      const Arg9& a9) {
1497   return
1498     lambda_functor_base<
1499       action<9, function_action<9> >,
1500       typename detail::bind_tuple_mapper<
1501         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1502         const Arg6, const Arg7, const Arg8, const Arg9
1503       >::type
1504     >
1505     ( typename detail::bind_tuple_mapper<
1506         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1507         const Arg6, const Arg7, const Arg8, const Arg9
1508       >::type
1509       (a1, a2, a3, a4, a5, a6, a7, a8, a9)
1510     );
1511 }
1512 
1513 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1514           class Arg5, class Arg6, class Arg7, class Arg8, class Arg9>
1515 inline const
1516 lambda_functor<
1517   lambda_functor_base<
1518     action<9, function_action<9, Result> >,
1519     typename detail::bind_tuple_mapper<
1520       const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6,
1521       const Arg7, const Arg8, const Arg9
1522     >::type
1523   >
1524 >
1525 
1526 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1527      const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8,
1528      const Arg9& a9) {
1529   return
1530     lambda_functor_base<
1531       action<9, function_action<9, Result> >,
1532       typename detail::bind_tuple_mapper<
1533         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1534         const Arg6, const Arg7, const Arg8, const Arg9
1535       >::type
1536     >
1537     ( typename detail::bind_tuple_mapper<
1538         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1539         const Arg6, const Arg7, const Arg8, const Arg9
1540       >::type
1541       (a1, a2, a3, a4, a5, a6, a7, a8, a9)
1542     );
1543 }
1544 
1545 
1546  #else 
1547 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
1548           class Arg6, class Arg7, class Arg8, class Arg9>
1549 inline const
1550 lambda_functor<
1551   lambda_functor_base<
1552     action<9, function_action<9> >,
1553     typename detail::bind_tuple_mapper<
1554       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
1555       const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9
1556     >::type
1557   >
1558 >
1559 
1560 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1561      const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8,
1562      const Arg9& a9) {
1563   return
1564     lambda_functor_base<
1565       action<9, function_action<9> >,
1566       typename detail::bind_tuple_mapper<
1567         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1568         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7,
1569         const Arg8, const Arg9
1570       >::type
1571     >
1572     ( typename detail::bind_tuple_mapper<
1573         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1574         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7,
1575         const Arg8, const Arg9
1576       >::type
1577       (a1, a2, a3, a4, a5, a6, a7, a8, a9)
1578     );
1579 }
1580 
1581 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1582           class Arg5, class Arg6, class Arg7, class Arg8, class Arg9>
1583 inline const
1584 lambda_functor<
1585   lambda_functor_base<
1586     action<9, function_action<9, Result> >,
1587     typename detail::bind_tuple_mapper<
1588       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
1589       const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9
1590     >::type
1591   >
1592 >
1593 
1594 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1595      const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8,
1596      const Arg9& a9) {
1597   return
1598     lambda_functor_base<
1599       action<9, function_action<9, Result> >,
1600       typename detail::bind_tuple_mapper<
1601         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1602         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7,
1603         const Arg8, const Arg9
1604       >::type
1605     >
1606     ( typename detail::bind_tuple_mapper<
1607         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1608         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7,
1609         const Arg8, const Arg9
1610       >::type
1611       (a1, a2, a3, a4, a5, a6, a7, a8, a9)
1612     );
1613 }
1614 
1615 template <class Result, class Par1, class Par2, class Par3, class Par4,
1616           class Par5, class Par6, class Par7, class Par8, class Arg2,
1617           class Arg3, class Arg4, class Arg5, class Arg6, class Arg7,
1618           class Arg8, class Arg9>
1619 inline const
1620 lambda_functor<
1621   lambda_functor_base<
1622     action<9, function_action<9, Result> >,
1623     typename detail::bind_tuple_mapper<
1624       Result(*)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8), const Arg2,
1625       const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8,
1626       const Arg9
1627     >::type
1628   >
1629 >
1630 
1631 bind(Result(* const & a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8),
1632      const Arg2& a2, const Arg3& a3, const Arg4& a4, const Arg5& a5,
1633      const Arg6& a6, const Arg7& a7, const Arg8& a8, const Arg9& a9) {
1634   return
1635     lambda_functor_base<
1636       action<9, function_action<9, Result> >,
1637       typename detail::bind_tuple_mapper<
1638         Result(*)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8), const Arg2,
1639         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7,
1640         const Arg8, const Arg9
1641       >::type
1642     >
1643     ( typename detail::bind_tuple_mapper<
1644         Result(*)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8), const Arg2,
1645         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7,
1646         const Arg8, const Arg9
1647       >::type
1648       (a1, a2, a3, a4, a5, a6, a7, a8, a9)
1649     );
1650 }
1651 
1652 
1653  #endif 
1654 
1655 // 10-argument bind functions --------------------------
1656 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
1657 template <class Result, class Par1, class Par2, class Par3, class Par4,
1658           class Par5, class Par6, class Par7, class Par8, class Par9,
1659           class Arg2, class Arg3, class Arg4, class Arg5, class Arg6,
1660           class Arg7, class Arg8, class Arg9, class Arg10>
1661 inline const
1662 lambda_functor<
1663   lambda_functor_base<
1664     action<10, function_action<10, Result> >,
1665     typename detail::bind_tuple_mapper<
1666       Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9),
1667       const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7,
1668       const Arg8, const Arg9, const Arg10
1669     >::type
1670   >
1671 >
1672 
1673 bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9),
1674      const Arg2& a2, const Arg3& a3, const Arg4& a4, const Arg5& a5,
1675      const Arg6& a6, const Arg7& a7, const Arg8& a8, const Arg9& a9,
1676      const Arg10& a10) {
1677   return
1678     lambda_functor_base<
1679       action<10, function_action<10, Result> >,
1680       typename detail::bind_tuple_mapper<
1681         Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9),
1682         const Arg2, const Arg3, const Arg4, const Arg5, const Arg6,
1683         const Arg7, const Arg8, const Arg9, const Arg10
1684       >::type
1685     >
1686     ( typename detail::bind_tuple_mapper<
1687         Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9),
1688         const Arg2, const Arg3, const Arg4, const Arg5, const Arg6,
1689         const Arg7, const Arg8, const Arg9, const Arg10
1690       >::type
1691       (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
1692     );
1693 }
1694 #endif
1695 
1696  #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING 
1697 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
1698           class Arg6, class Arg7, class Arg8, class Arg9, class Arg10>
1699 inline const
1700 lambda_functor<
1701   lambda_functor_base<
1702     action<10, function_action<10> >,
1703     typename detail::bind_tuple_mapper<
1704       const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6,
1705       const Arg7, const Arg8, const Arg9, const Arg10
1706     >::type
1707   >
1708 >
1709 
1710 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1711      const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8,
1712      const Arg9& a9, const Arg10& a10) {
1713   return
1714     lambda_functor_base<
1715       action<10, function_action<10> >,
1716       typename detail::bind_tuple_mapper<
1717         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1718         const Arg6, const Arg7, const Arg8, const Arg9, const Arg10
1719       >::type
1720     >
1721     ( typename detail::bind_tuple_mapper<
1722         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1723         const Arg6, const Arg7, const Arg8, const Arg9, const Arg10
1724       >::type
1725       (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
1726     );
1727 }
1728 
1729 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1730           class Arg5, class Arg6, class Arg7, class Arg8, class Arg9,
1731           class Arg10>
1732 inline const
1733 lambda_functor<
1734   lambda_functor_base<
1735     action<10, function_action<10, Result> >,
1736     typename detail::bind_tuple_mapper<
1737       const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6,
1738       const Arg7, const Arg8, const Arg9, const Arg10
1739     >::type
1740   >
1741 >
1742 
1743 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1744      const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8,
1745      const Arg9& a9, const Arg10& a10) {
1746   return
1747     lambda_functor_base<
1748       action<10, function_action<10, Result> >,
1749       typename detail::bind_tuple_mapper<
1750         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1751         const Arg6, const Arg7, const Arg8, const Arg9, const Arg10
1752       >::type
1753     >
1754     ( typename detail::bind_tuple_mapper<
1755         const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1756         const Arg6, const Arg7, const Arg8, const Arg9, const Arg10
1757       >::type
1758       (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
1759     );
1760 }
1761 
1762 
1763  #else 
1764 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
1765           class Arg6, class Arg7, class Arg8, class Arg9, class Arg10>
1766 inline const
1767 lambda_functor<
1768   lambda_functor_base<
1769     action<10, function_action<10> >,
1770     typename detail::bind_tuple_mapper<
1771       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
1772       const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9,
1773       const Arg10
1774     >::type
1775   >
1776 >
1777 
1778 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1779      const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8,
1780      const Arg9& a9, const Arg10& a10) {
1781   return
1782     lambda_functor_base<
1783       action<10, function_action<10> >,
1784       typename detail::bind_tuple_mapper<
1785         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1786         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7,
1787         const Arg8, const Arg9, const Arg10
1788       >::type
1789     >
1790     ( typename detail::bind_tuple_mapper<
1791         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1792         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7,
1793         const Arg8, const Arg9, const Arg10
1794       >::type
1795       (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
1796     );
1797 }
1798 
1799 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1800           class Arg5, class Arg6, class Arg7, class Arg8, class Arg9,
1801           class Arg10>
1802 inline const
1803 lambda_functor<
1804   lambda_functor_base<
1805     action<10, function_action<10, Result> >,
1806     typename detail::bind_tuple_mapper<
1807       typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
1808       const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9,
1809       const Arg10
1810     >::type
1811   >
1812 >
1813 
1814 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1815      const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8,
1816      const Arg9& a9, const Arg10& a10) {
1817   return
1818     lambda_functor_base<
1819       action<10, function_action<10, Result> >,
1820       typename detail::bind_tuple_mapper<
1821         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1822         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7,
1823         const Arg8, const Arg9, const Arg10
1824       >::type
1825     >
1826     ( typename detail::bind_tuple_mapper<
1827         typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1828         const Arg3, const Arg4, const Arg5, const Arg6, const Arg7,
1829         const Arg8, const Arg9, const Arg10
1830       >::type
1831       (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
1832     );
1833 }
1834 
1835 template <class Result, class Par1, class Par2, class Par3, class Par4,
1836           class Par5, class Par6, class Par7, class Par8, class Par9,
1837           class Arg2, class Arg3, class Arg4, class Arg5, class Arg6,
1838           class Arg7, class Arg8, class Arg9, class Arg10>
1839 inline const
1840 lambda_functor<
1841   lambda_functor_base<
1842     action<10, function_action<10, Result> >,
1843     typename detail::bind_tuple_mapper<
1844       Result(*)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9),
1845       const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7,
1846       const Arg8, const Arg9, const Arg10
1847     >::type
1848   >
1849 >
1850 
1851 bind(Result(* const & a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8,
1852      Par9), const Arg2& a2, const Arg3& a3, const Arg4& a4, const Arg5& a5,
1853      const Arg6& a6, const Arg7& a7, const Arg8& a8, const Arg9& a9,
1854      const Arg10& a10) {
1855   return
1856     lambda_functor_base<
1857       action<10, function_action<10, Result> >,
1858       typename detail::bind_tuple_mapper<
1859         Result(*)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9),
1860         const Arg2, const Arg3, const Arg4, const Arg5, const Arg6,
1861         const Arg7, const Arg8, const Arg9, const Arg10
1862       >::type
1863     >
1864     ( typename detail::bind_tuple_mapper<
1865         Result(*)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9),
1866         const Arg2, const Arg3, const Arg4, const Arg5, const Arg6,
1867         const Arg7, const Arg8, const Arg9, const Arg10
1868       >::type
1869       (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
1870     );
1871 }
1872 
1873 
1874  #endif 
1875 
1876 } // namespace lambda 
1877 } // namespace boost
1878 
1879 #endif