1 //
2 //  bind/bind_mf_cc.hpp - support for different calling conventions
3 //
4 //  Do not include this header directly.
5 //
6 //  Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
7 //
8 // Distributed under the Boost Software License, Version 1.0. (See
9 // accompanying file LICENSE_1_0.txt or copy at
10 // http://www.boost.org/LICENSE_1_0.txt)
11 //
12 //  See http://www.boost.org/libs/bind/bind.html for documentation.
13 //
14 
15 // 0
16 
17 template<class R, class T,
18     class A1>
19     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(),A1 a1)20     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
21 {
22     typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F;
23     typedef typename _bi::list_av_1<A1>::type list_type;
24     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
25 }
26 
27 template<class R, class T,
28     class A1>
29     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)()const,A1 a1)30     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
31 {
32     typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F;
33     typedef typename _bi::list_av_1<A1>::type list_type;
34     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
35 }
36 
37 template<class Rt2, class R, class T,
38     class A1>
39     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
40     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(),A1 a1)41     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
42 {
43     typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F;
44     typedef typename _bi::list_av_1<A1>::type list_type;
45     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1));
46 }
47 
48 template<class Rt2, class R, class T,
49     class A1>
50     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
51     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)()const,A1 a1)52     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
53 {
54     typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F;
55     typedef typename _bi::list_av_1<A1>::type list_type;
56     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1));
57 }
58 
59 // 1
60 
61 template<class R, class T,
62     class B1,
63     class A1, class A2>
64     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1),A1 a1,A2 a2)65     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
66 {
67     typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F;
68     typedef typename _bi::list_av_2<A1, A2>::type list_type;
69     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
70 }
71 
72 template<class R, class T,
73     class B1,
74     class A1, class A2>
75     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1)const,A1 a1,A2 a2)76     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
77 {
78     typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F;
79     typedef typename _bi::list_av_2<A1, A2>::type list_type;
80     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
81 }
82 
83 template<class Rt2, class R, class T,
84     class B1,
85     class A1, class A2>
86     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
87     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1),A1 a1,A2 a2)88     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
89 {
90     typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F;
91     typedef typename _bi::list_av_2<A1, A2>::type list_type;
92     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2));
93 }
94 
95 template<class Rt2, class R, class T,
96     class B1,
97     class A1, class A2>
98     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
99     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1)const,A1 a1,A2 a2)100     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
101 {
102     typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F;
103     typedef typename _bi::list_av_2<A1, A2>::type list_type;
104     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2));
105 }
106 
107 // 2
108 
109 template<class R, class T,
110     class B1, class B2,
111     class A1, class A2, class A3>
112     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2),A1 a1,A2 a2,A3 a3)113     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
114 {
115     typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F;
116     typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
117     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
118 }
119 
120 template<class R, class T,
121     class B1, class B2,
122     class A1, class A2, class A3>
123     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2)const,A1 a1,A2 a2,A3 a3)124     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
125 {
126     typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F;
127     typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
128     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
129 }
130 
131 template<class Rt2, class R, class T,
132     class B1, class B2,
133     class A1, class A2, class A3>
134     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
135     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2),A1 a1,A2 a2,A3 a3)136     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
137 {
138     typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F;
139     typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
140     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3));
141 }
142 
143 template<class Rt2, class R, class T,
144     class B1, class B2,
145     class A1, class A2, class A3>
146     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
147     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2)const,A1 a1,A2 a2,A3 a3)148     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
149 {
150     typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F;
151     typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
152     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3));
153 }
154 
155 // 3
156 
157 template<class R, class T,
158     class B1, class B2, class B3,
159     class A1, class A2, class A3, class A4>
160     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3),A1 a1,A2 a2,A3 a3,A4 a4)161     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
162 {
163     typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F;
164     typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
165     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
166 }
167 
168 template<class R, class T,
169     class B1, class B2, class B3,
170     class A1, class A2, class A3, class A4>
171     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3)const,A1 a1,A2 a2,A3 a3,A4 a4)172     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
173 {
174     typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F;
175     typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
176     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
177 }
178 
179 template<class Rt2, class R, class T,
180     class B1, class B2, class B3,
181     class A1, class A2, class A3, class A4>
182     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
183     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3),A1 a1,A2 a2,A3 a3,A4 a4)184     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
185 {
186     typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F;
187     typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
188     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4));
189 }
190 
191 template<class Rt2, class R, class T,
192     class B1, class B2, class B3,
193     class A1, class A2, class A3, class A4>
194     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
195     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3)const,A1 a1,A2 a2,A3 a3,A4 a4)196     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
197 {
198     typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F;
199     typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
200     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4));
201 }
202 
203 // 4
204 
205 template<class R, class T,
206     class B1, class B2, class B3, class B4,
207     class A1, class A2, class A3, class A4, class A5>
208     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)209     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
210 {
211     typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F;
212     typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
213     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
214 }
215 
216 template<class R, class T,
217     class B1, class B2, class B3, class B4,
218     class A1, class A2, class A3, class A4, class A5>
219     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)220     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
221 {
222     typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F;
223     typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
224     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
225 }
226 
227 template<class Rt2, class R, class T,
228     class B1, class B2, class B3, class B4,
229     class A1, class A2, class A3, class A4, class A5>
230     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
231     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)232     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
233 {
234     typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F;
235     typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
236     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
237 }
238 
239 template<class Rt2, class R, class T,
240     class B1, class B2, class B3, class B4,
241     class A1, class A2, class A3, class A4, class A5>
242     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
243     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)244     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
245 {
246     typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F;
247     typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
248     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
249 }
250 
251 // 5
252 
253 template<class R, class T,
254     class B1, class B2, class B3, class B4, class B5,
255     class A1, class A2, class A3, class A4, class A5, class A6>
256     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6)257     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
258 {
259     typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F;
260     typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
261     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
262 }
263 
264 template<class R, class T,
265     class B1, class B2, class B3, class B4, class B5,
266     class A1, class A2, class A3, class A4, class A5, class A6>
267     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6)268     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
269 {
270     typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F;
271     typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
272     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
273 }
274 
275 template<class Rt2, class R, class T,
276     class B1, class B2, class B3, class B4, class B5,
277     class A1, class A2, class A3, class A4, class A5, class A6>
278     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
279     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6)280     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
281 {
282     typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F;
283     typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
284     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
285 }
286 
287 template<class Rt2, class R, class T,
288     class B1, class B2, class B3, class B4, class B5,
289     class A1, class A2, class A3, class A4, class A5, class A6>
290     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
291     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6)292     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
293 {
294     typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F;
295     typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
296     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
297 }
298 
299 // 6
300 
301 template<class R, class T,
302     class B1, class B2, class B3, class B4, class B5, class B6,
303     class A1, class A2, class A3, class A4, class A5, class A6, class A7>
304     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7)305     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
306 {
307     typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F;
308     typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
309     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
310 }
311 
312 template<class R, class T,
313     class B1, class B2, class B3, class B4, class B5, class B6,
314     class A1, class A2, class A3, class A4, class A5, class A6, class A7>
315     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7)316     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
317 {
318     typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F;
319     typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
320     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
321 }
322 
323 template<class Rt2, class R, class T,
324     class B1, class B2, class B3, class B4, class B5, class B6,
325     class A1, class A2, class A3, class A4, class A5, class A6, class A7>
326     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
327     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7)328     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
329 {
330     typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F;
331     typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
332     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
333 }
334 
335 template<class Rt2, class R, class T,
336     class B1, class B2, class B3, class B4, class B5, class B6,
337     class A1, class A2, class A3, class A4, class A5, class A6, class A7>
338     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
339     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7)340     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
341 {
342     typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F;
343     typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
344     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
345 }
346 
347 // 7
348 
349 template<class R, class T,
350     class B1, class B2, class B3, class B4, class B5, class B6, class B7,
351     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
352     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6,B7),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)353     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
354 {
355     typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
356     typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
357     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
358 }
359 
360 template<class R, class T,
361     class B1, class B2, class B3, class B4, class B5, class B6, class B7,
362     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
363     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6,B7)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)364     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
365 {
366     typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
367     typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
368     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
369 }
370 
371 template<class Rt2, class R, class T,
372     class B1, class B2, class B3, class B4, class B5, class B6, class B7,
373     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
374     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
375     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6,B7),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)376     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
377 {
378     typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
379     typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
380     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
381 }
382 
383 template<class Rt2, class R, class T,
384     class B1, class B2, class B3, class B4, class B5, class B6, class B7,
385     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
386     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
387     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6,B7)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)388     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
389 {
390     typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
391     typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
392     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
393 }
394 
395 // 8
396 
397 template<class R, class T,
398     class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
399     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
400     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6,B7,B8),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8,A9 a9)401     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
402 {
403     typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
404     typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
405     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
406 }
407 
408 template<class R, class T,
409     class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
410     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
411     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6,B7,B8)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8,A9 a9)412     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
413 {
414     typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
415     typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
416     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
417 }
418 
419 template<class Rt2, class R, class T,
420     class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
421     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
422     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
423     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6,B7,B8),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8,A9 a9)424     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
425 {
426     typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
427     typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
428     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
429 }
430 
431 template<class Rt2, class R, class T,
432     class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
433     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
434     typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
435     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
BOOST_BIND(R (BOOST_BIND_MF_CC T::* f)(B1,B2,B3,B4,B5,B6,B7,B8)const,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8,A9 a9)436     >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
437 {
438     typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
439     typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
440     return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
441 }
442