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> |
20 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, 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> |
30 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, 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> |
41 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, 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> |
52 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, 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> |
65 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, 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> |
76 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, 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> |
88 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, 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> |
100 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, 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> |
113 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, 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> |
124 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, 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> |
136 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, 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> |
148 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, 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> |
161 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, 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> |
172 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, 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> |
184 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, 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> |
196 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, 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> |
209 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, 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> |
220 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, 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> |
232 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, 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> |
244 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, 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> |
257 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, 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> |
268 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, 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> |
280 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, 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> |
292 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, 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> |
305 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, 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> |
316 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, 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> |
328 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, 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> |
340 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, 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> |
353 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, 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> |
364 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, 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> |
376 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, 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> |
388 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, 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> |
401 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, 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> |
412 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, 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> |
424 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, 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> |
436 | >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, 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 | |