1 // -- bind_functions.hpp -- Boost Lambda Library
3 // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
5 // Distributed under the Boost Software License, Version 1.0. (See
6 // accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
9 // For more information, see http://www.boost.org
11 // ----------------------------------------------------------------
13 #ifndef BOOST_LAMBDA_BIND_FUNCTIONS_HPP
14 #define BOOST_LAMBDA_BIND_FUNCTIONS_HPP
20 #ifdef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING
22 // gcc 2.96 instantiates bind functions it does not even call.
23 // These instantiations lead to incorrect types in the return type,
24 // and a compilation error results.
25 // This tweaking is to prevent the formation of the erroneous type.
28 template<class T> struct constify_non_funcs {
30 detail::IF_type<boost::is_function<T>::value,
31 boost::add_reference<T>,
38 // 1-argument bind functions --------------------------
39 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
40 template <class Result>
44 action<1, function_action<1, Result> >,
45 typename detail::bind_tuple_mapper<Result(&)()>::type
49 bind(Result(& a1)()) {
52 action<1, function_action<1, Result> >,
53 typename detail::bind_tuple_mapper<Result(&)()>::type
55 ( typename detail::bind_tuple_mapper<Result(&)()>::type
61 #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING
66 action<1, function_action<1> >,
67 typename detail::bind_tuple_mapper<const Arg1>::type
71 bind(const Arg1& a1) {
74 action<1, function_action<1> >,
75 typename detail::bind_tuple_mapper<const Arg1>::type
77 ( typename detail::bind_tuple_mapper<const Arg1>::type
82 template <class Result, class Arg1>
86 action<1, function_action<1, Result> >,
87 typename detail::bind_tuple_mapper<const Arg1>::type
91 bind(const Arg1& a1) {
94 action<1, function_action<1, Result> >,
95 typename detail::bind_tuple_mapper<const Arg1>::type
97 ( typename detail::bind_tuple_mapper<const Arg1>::type
104 template <class Arg1>
108 action<1, function_action<1> >,
109 typename detail::bind_tuple_mapper<
110 typename detail::constify_non_funcs<Arg1>::type
115 bind(const Arg1& a1) {
118 action<1, function_action<1> >,
119 typename detail::bind_tuple_mapper<
120 typename detail::constify_non_funcs<Arg1>::type
123 ( typename detail::bind_tuple_mapper<
124 typename detail::constify_non_funcs<Arg1>::type
130 template <class Result, class Arg1>
134 action<1, function_action<1, Result> >,
135 typename detail::bind_tuple_mapper<
136 typename detail::constify_non_funcs<Arg1>::type
141 bind(const Arg1& a1) {
144 action<1, function_action<1, Result> >,
145 typename detail::bind_tuple_mapper<
146 typename detail::constify_non_funcs<Arg1>::type
149 ( typename detail::bind_tuple_mapper<
150 typename detail::constify_non_funcs<Arg1>::type
156 template <class Result>
160 action<1, function_action<1, Result> >,
161 typename detail::bind_tuple_mapper<Result(*)()>::type
165 bind(Result(* const & a1)()) {
168 action<1, function_action<1, Result> >,
169 typename detail::bind_tuple_mapper<Result(*)()>::type
171 ( typename detail::bind_tuple_mapper<Result(*)()>::type
179 // 2-argument bind functions --------------------------
180 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
181 template <class Result, class Par1, class Arg2>
185 action<2, function_action<2, Result> >,
186 typename detail::bind_tuple_mapper<Result(&)(Par1), const Arg2>::type
190 bind(Result(&a1)(Par1), const Arg2& a2) {
193 action<2, function_action<2, Result> >,
194 typename detail::bind_tuple_mapper<Result(&)(Par1), const Arg2>::type
196 ( typename detail::bind_tuple_mapper<Result(&)(Par1), const Arg2>::type
202 #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING
203 template <class Arg1, class Arg2>
207 action<2, function_action<2> >,
208 typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type
212 bind(const Arg1& a1, const Arg2& a2) {
215 action<2, function_action<2> >,
216 typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type
218 ( typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type
223 template <class Result, class Arg1, class Arg2>
227 action<2, function_action<2, Result> >,
228 typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type
232 bind(const Arg1& a1, const Arg2& a2) {
235 action<2, function_action<2, Result> >,
236 typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type
238 ( typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type
245 template <class Arg1, class Arg2>
249 action<2, function_action<2> >,
250 typename detail::bind_tuple_mapper<
251 typename detail::constify_non_funcs<Arg1>::type, const Arg2
256 bind(const Arg1& a1, const Arg2& a2) {
259 action<2, function_action<2> >,
260 typename detail::bind_tuple_mapper<
261 typename detail::constify_non_funcs<Arg1>::type, const Arg2
264 ( typename detail::bind_tuple_mapper<
265 typename detail::constify_non_funcs<Arg1>::type, const Arg2
271 template <class Result, class Arg1, class Arg2>
275 action<2, function_action<2, Result> >,
276 typename detail::bind_tuple_mapper<
277 typename detail::constify_non_funcs<Arg1>::type, const Arg2
282 bind(const Arg1& a1, const Arg2& a2) {
285 action<2, function_action<2, Result> >,
286 typename detail::bind_tuple_mapper<
287 typename detail::constify_non_funcs<Arg1>::type, const Arg2
290 ( typename detail::bind_tuple_mapper<
291 typename detail::constify_non_funcs<Arg1>::type, const Arg2
297 template <class Result, class Par1, class Arg2>
301 action<2, function_action<2, Result> >,
302 typename detail::bind_tuple_mapper<Result(*)(Par1), const Arg2>::type
306 bind(Result(* const & a1)(Par1), const Arg2& a2) {
309 action<2, function_action<2, Result> >,
310 typename detail::bind_tuple_mapper<Result(*)(Par1), const Arg2>::type
312 ( typename detail::bind_tuple_mapper<Result(*)(Par1), const Arg2>::type
320 // 3-argument bind functions --------------------------
321 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
322 template <class Result, class Par1, class Par2, class Arg2, class Arg3>
326 action<3, function_action<3, Result> >,
327 typename detail::bind_tuple_mapper<
328 Result(&)(Par1, Par2), const Arg2, const Arg3
333 bind(Result(&a1)(Par1, Par2), const Arg2& a2, const Arg3& a3) {
336 action<3, function_action<3, Result> >,
337 typename detail::bind_tuple_mapper<
338 Result(&)(Par1, Par2), const Arg2, const Arg3
341 ( typename detail::bind_tuple_mapper<
342 Result(&)(Par1, Par2), const Arg2, const Arg3
349 #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING
350 template <class Arg1, class Arg2, class Arg3>
354 action<3, function_action<3> >,
355 typename detail::bind_tuple_mapper<
356 const Arg1, const Arg2, const Arg3
361 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3) {
364 action<3, function_action<3> >,
365 typename detail::bind_tuple_mapper<
366 const Arg1, const Arg2, const Arg3
369 ( typename detail::bind_tuple_mapper<
370 const Arg1, const Arg2, const Arg3
376 template <class Result, class Arg1, class Arg2, class Arg3>
380 action<3, function_action<3, Result> >,
381 typename detail::bind_tuple_mapper<
382 const Arg1, const Arg2, const Arg3
387 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3) {
390 action<3, function_action<3, Result> >,
391 typename detail::bind_tuple_mapper<
392 const Arg1, const Arg2, const Arg3
395 ( typename detail::bind_tuple_mapper<
396 const Arg1, const Arg2, const Arg3
404 template <class Arg1, class Arg2, class Arg3>
408 action<3, function_action<3> >,
409 typename detail::bind_tuple_mapper<
410 typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3
415 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3) {
418 action<3, function_action<3> >,
419 typename detail::bind_tuple_mapper<
420 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
424 ( typename detail::bind_tuple_mapper<
425 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
432 template <class Result, class Arg1, class Arg2, class Arg3>
436 action<3, function_action<3, Result> >,
437 typename detail::bind_tuple_mapper<
438 typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3
443 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3) {
446 action<3, function_action<3, Result> >,
447 typename detail::bind_tuple_mapper<
448 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
452 ( typename detail::bind_tuple_mapper<
453 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
460 template <class Result, class Par1, class Par2, class Arg2, class Arg3>
464 action<3, function_action<3, Result> >,
465 typename detail::bind_tuple_mapper<
466 Result(*)(Par1, Par2), const Arg2, const Arg3
471 bind(Result(* const & a1)(Par1, Par2), const Arg2& a2, const Arg3& a3) {
474 action<3, function_action<3, Result> >,
475 typename detail::bind_tuple_mapper<
476 Result(*)(Par1, Par2), const Arg2, const Arg3
479 ( typename detail::bind_tuple_mapper<
480 Result(*)(Par1, Par2), const Arg2, const Arg3
489 // 4-argument bind functions --------------------------
490 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
491 template <class Result, class Par1, class Par2, class Par3, class Arg2,
492 class Arg3, class Arg4>
496 action<4, function_action<4, Result> >,
497 typename detail::bind_tuple_mapper<
498 Result(&)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4
503 bind(Result(&a1)(Par1, Par2, Par3), const Arg2& a2, const Arg3& a3,
507 action<4, function_action<4, Result> >,
508 typename detail::bind_tuple_mapper<
509 Result(&)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4
512 ( typename detail::bind_tuple_mapper<
513 Result(&)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4
520 #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING
521 template <class Arg1, class Arg2, class Arg3, class Arg4>
525 action<4, function_action<4> >,
526 typename detail::bind_tuple_mapper<
527 const Arg1, const Arg2, const Arg3, const Arg4
532 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) {
535 action<4, function_action<4> >,
536 typename detail::bind_tuple_mapper<
537 const Arg1, const Arg2, const Arg3, const Arg4
540 ( typename detail::bind_tuple_mapper<
541 const Arg1, const Arg2, const Arg3, const Arg4
547 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4>
551 action<4, function_action<4, Result> >,
552 typename detail::bind_tuple_mapper<
553 const Arg1, const Arg2, const Arg3, const Arg4
558 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) {
561 action<4, function_action<4, Result> >,
562 typename detail::bind_tuple_mapper<
563 const Arg1, const Arg2, const Arg3, const Arg4
566 ( typename detail::bind_tuple_mapper<
567 const Arg1, const Arg2, const Arg3, const Arg4
575 template <class Arg1, class Arg2, class Arg3, class Arg4>
579 action<4, function_action<4> >,
580 typename detail::bind_tuple_mapper<
581 typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
587 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) {
590 action<4, function_action<4> >,
591 typename detail::bind_tuple_mapper<
592 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
593 const Arg3, const Arg4
596 ( typename detail::bind_tuple_mapper<
597 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
598 const Arg3, const Arg4
604 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4>
608 action<4, function_action<4, Result> >,
609 typename detail::bind_tuple_mapper<
610 typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
616 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) {
619 action<4, function_action<4, Result> >,
620 typename detail::bind_tuple_mapper<
621 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
622 const Arg3, const Arg4
625 ( typename detail::bind_tuple_mapper<
626 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
627 const Arg3, const Arg4
633 template <class Result, class Par1, class Par2, class Par3, class Arg2,
634 class Arg3, class Arg4>
638 action<4, function_action<4, Result> >,
639 typename detail::bind_tuple_mapper<
640 Result(*)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4
645 bind(Result(* const & a1)(Par1, Par2, Par3), const Arg2& a2,
646 const Arg3& a3, const Arg4& a4) {
649 action<4, function_action<4, Result> >,
650 typename detail::bind_tuple_mapper<
651 Result(*)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4
654 ( typename detail::bind_tuple_mapper<
655 Result(*)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4
664 // 5-argument bind functions --------------------------
665 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
666 template <class Result, class Par1, class Par2, class Par3, class Par4,
667 class Arg2, class Arg3, class Arg4, class Arg5>
671 action<5, function_action<5, Result> >,
672 typename detail::bind_tuple_mapper<
673 Result(&)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4,
679 bind(Result(&a1)(Par1, Par2, Par3, Par4), const Arg2& a2, const Arg3& a3,
680 const Arg4& a4, const Arg5& a5) {
683 action<5, function_action<5, Result> >,
684 typename detail::bind_tuple_mapper<
685 Result(&)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4,
689 ( typename detail::bind_tuple_mapper<
690 Result(&)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4,
698 #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING
699 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
703 action<5, function_action<5> >,
704 typename detail::bind_tuple_mapper<
705 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5
710 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
714 action<5, function_action<5> >,
715 typename detail::bind_tuple_mapper<
716 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5
719 ( typename detail::bind_tuple_mapper<
720 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5
726 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
731 action<5, function_action<5, Result> >,
732 typename detail::bind_tuple_mapper<
733 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5
738 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
742 action<5, function_action<5, Result> >,
743 typename detail::bind_tuple_mapper<
744 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5
747 ( typename detail::bind_tuple_mapper<
748 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5
756 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
760 action<5, function_action<5> >,
761 typename detail::bind_tuple_mapper<
762 typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
763 const Arg4, const Arg5
768 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
772 action<5, function_action<5> >,
773 typename detail::bind_tuple_mapper<
774 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
775 const Arg3, const Arg4, const Arg5
778 ( typename detail::bind_tuple_mapper<
779 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
780 const Arg3, const Arg4, const Arg5
786 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
791 action<5, function_action<5, Result> >,
792 typename detail::bind_tuple_mapper<
793 typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
794 const Arg4, const Arg5
799 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
803 action<5, function_action<5, Result> >,
804 typename detail::bind_tuple_mapper<
805 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
806 const Arg3, const Arg4, const Arg5
809 ( typename detail::bind_tuple_mapper<
810 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
811 const Arg3, const Arg4, const Arg5
817 template <class Result, class Par1, class Par2, class Par3, class Par4,
818 class Arg2, class Arg3, class Arg4, class Arg5>
822 action<5, function_action<5, Result> >,
823 typename detail::bind_tuple_mapper<
824 Result(*)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4,
830 bind(Result(* const & a1)(Par1, Par2, Par3, Par4), const Arg2& a2,
831 const Arg3& a3, const Arg4& a4, const Arg5& a5) {
834 action<5, function_action<5, Result> >,
835 typename detail::bind_tuple_mapper<
836 Result(*)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4,
840 ( typename detail::bind_tuple_mapper<
841 Result(*)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4,
851 // 6-argument bind functions --------------------------
852 #ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T
853 template <class Result, class Par1, class Par2, class Par3, class Par4,
854 class Par5, class Arg2, class Arg3, class Arg4, class Arg5,
859 action<6, function_action<6, Result> >,
860 typename detail::bind_tuple_mapper<
861 Result(&)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3,
862 const Arg4, const Arg5, const Arg6
867 bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5), const Arg2& a2,
868 const Arg3& a3, const Arg4& a4, const Arg5& a5, const Arg6& a6) {
871 action<6, function_action<6, Result> >,
872 typename detail::bind_tuple_mapper<
873 Result(&)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3,
874 const Arg4, const Arg5, const Arg6
877 ( typename detail::bind_tuple_mapper<
878 Result(&)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3,
879 const Arg4, const Arg5, const Arg6
881 (a1, a2, a3, a4, a5, a6)
886 #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING
887 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
892 action<6, function_action<6> >,
893 typename detail::bind_tuple_mapper<
894 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6
899 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
900 const Arg5& a5, const Arg6& a6) {
903 action<6, function_action<6> >,
904 typename detail::bind_tuple_mapper<
905 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6
908 ( typename detail::bind_tuple_mapper<
909 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6
911 (a1, a2, a3, a4, a5, a6)
915 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
916 class Arg5, class Arg6>
920 action<6, function_action<6, Result> >,
921 typename detail::bind_tuple_mapper<
922 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6
927 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
928 const Arg5& a5, const Arg6& a6) {
931 action<6, function_action<6, Result> >,
932 typename detail::bind_tuple_mapper<
933 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6
936 ( typename detail::bind_tuple_mapper<
937 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6
939 (a1, a2, a3, a4, a5, a6)
945 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
950 action<6, function_action<6> >,
951 typename detail::bind_tuple_mapper<
952 typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
953 const Arg4, const Arg5, const Arg6
958 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
959 const Arg5& a5, const Arg6& a6) {
962 action<6, function_action<6> >,
963 typename detail::bind_tuple_mapper<
964 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
965 const Arg3, const Arg4, const Arg5, const Arg6
968 ( typename detail::bind_tuple_mapper<
969 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
970 const Arg3, const Arg4, const Arg5, const Arg6
972 (a1, a2, a3, a4, a5, a6)
976 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
977 class Arg5, class Arg6>
981 action<6, function_action<6, Result> >,
982 typename detail::bind_tuple_mapper<
983 typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3,
984 const Arg4, const Arg5, const Arg6
989 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
990 const Arg5& a5, const Arg6& a6) {
993 action<6, function_action<6, Result> >,
994 typename detail::bind_tuple_mapper<
995 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
996 const Arg3, const Arg4, const Arg5, const Arg6
999 ( typename detail::bind_tuple_mapper<
1000 typename detail::constify_non_funcs<Arg1>::type, const Arg2,
1001 const Arg3, const Arg4, const Arg5, const Arg6
1003 (a1, a2, a3, a4, a5, a6)
1007 template <class Result, class Par1, class Par2, class Par3, class Par4,
1008 class Par5, class Arg2, class Arg3, class Arg4, class Arg5,
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
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) {
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
1031 ( typename detail::bind_tuple_mapper<
1032 Result(*)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3,
1033 const Arg4, const Arg5, const Arg6
1035 (a1, a2, a3, a4, a5, a6)
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>
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
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,
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
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
1073 (a1, a2, a3, a4, a5, a6, a7)
1078 #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING
1079 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
1080 class Arg6, class Arg7>
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,
1092 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1093 const Arg5& a5, const Arg6& a6, const Arg7& a7) {
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
1102 ( typename detail::bind_tuple_mapper<
1103 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1104 const Arg6, const Arg7
1106 (a1, a2, a3, a4, a5, a6, a7)
1110 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1111 class Arg5, class Arg6, class Arg7>
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,
1123 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1124 const Arg5& a5, const Arg6& a6, const Arg7& a7) {
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
1133 ( typename detail::bind_tuple_mapper<
1134 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1135 const Arg6, const Arg7
1137 (a1, a2, a3, a4, a5, a6, a7)
1143 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
1144 class Arg6, class Arg7>
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
1156 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1157 const Arg5& a5, const Arg6& a6, const Arg7& a7) {
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
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
1170 (a1, a2, a3, a4, a5, a6, a7)
1174 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1175 class Arg5, class Arg6, class Arg7>
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
1187 bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4,
1188 const Arg5& a5, const Arg6& a6, const Arg7& a7) {
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
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
1201 (a1, a2, a3, a4, a5, a6, a7)
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>
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
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) {
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
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
1234 (a1, a2, a3, a4, a5, a6, a7)
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>
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
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) {
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
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
1272 (a1, a2, a3, a4, a5, a6, a7, a8)
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>
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
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) {
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
1301 ( typename detail::bind_tuple_mapper<
1302 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1303 const Arg6, const Arg7, const Arg8
1305 (a1, a2, a3, a4, a5, a6, a7, a8)
1309 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1310 class Arg5, class Arg6, class Arg7, class Arg8>
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
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) {
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
1332 ( typename detail::bind_tuple_mapper<
1333 const Arg1, const Arg2, const Arg3, const Arg4, const Arg5,
1334 const Arg6, const Arg7, const Arg8
1336 (a1, a2, a3, a4, a5, a6, a7, a8)
1342 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
1343 class Arg6, class Arg7, class Arg8>
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
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) {
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
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
1369 (a1, a2, a3, a4, a5, a6, a7, a8)
1373 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1374 class Arg5, class Arg6, class Arg7, class Arg8>
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
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) {
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
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
1400 (a1, a2, a3, a4, a5, a6, a7, a8)
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>
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
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) {
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
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
1433 (a1, a2, a3, a4, a5, a6, a7, a8)
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>
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,
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) {
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
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
1475 (a1, a2, a3, a4, a5, a6, a7, a8, a9)
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>
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
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,
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
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
1509 (a1, a2, a3, a4, a5, a6, a7, a8, a9)
1513 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1514 class Arg5, class Arg6, class Arg7, class Arg8, class Arg9>
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
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,
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
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
1541 (a1, a2, a3, a4, a5, a6, a7, a8, a9)
1547 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
1548 class Arg6, class Arg7, class Arg8, class Arg9>
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
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,
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
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
1577 (a1, a2, a3, a4, a5, a6, a7, a8, a9)
1581 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1582 class Arg5, class Arg6, class Arg7, class Arg8, class Arg9>
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
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,
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
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
1611 (a1, a2, a3, a4, a5, a6, a7, a8, a9)
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>
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,
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) {
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
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
1648 (a1, a2, a3, a4, a5, a6, a7, a8, a9)
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>
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
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,
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
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
1691 (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
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>
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
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) {
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
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
1725 (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
1729 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1730 class Arg5, class Arg6, class Arg7, class Arg8, class Arg9,
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
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) {
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
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
1758 (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
1764 template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5,
1765 class Arg6, class Arg7, class Arg8, class Arg9, class Arg10>
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,
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) {
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
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
1795 (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
1799 template <class Result, class Arg1, class Arg2, class Arg3, class Arg4,
1800 class Arg5, class Arg6, class Arg7, class Arg8, class Arg9,
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,
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) {
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
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
1831 (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
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>
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
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,
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
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
1869 (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
1876 } // namespace lambda
1877 } // namespace boost