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 | auto |
20 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1) |
21 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1 ) ) |
22 | { |
23 | return boost::BOOST_BIND( boost::mem_fn( f ), a1 ); |
24 | } |
25 | |
26 | template<class R, class T, |
27 | class A1> |
28 | auto |
29 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1) |
30 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1 ) ) |
31 | { |
32 | return boost::BOOST_BIND( boost::mem_fn( f ), a1 ); |
33 | } |
34 | |
35 | template<class Rt2, class R, class T, |
36 | class A1, |
37 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
38 | auto |
39 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1) |
40 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1 ) ) |
41 | { |
42 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1 ); |
43 | } |
44 | |
45 | template<class Rt2, class R, class T, |
46 | class A1, |
47 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
48 | auto |
49 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1) |
50 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1 ) ) |
51 | { |
52 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1 ); |
53 | } |
54 | |
55 | // 1 |
56 | |
57 | template<class R, class T, |
58 | class B1, |
59 | class A1, class A2> |
60 | auto |
61 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) |
62 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2 ) ) |
63 | { |
64 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2 ); |
65 | } |
66 | |
67 | template<class R, class T, |
68 | class B1, |
69 | class A1, class A2> |
70 | auto |
71 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) |
72 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2 ) ) |
73 | { |
74 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2 ); |
75 | } |
76 | |
77 | template<class Rt2, class R, class T, |
78 | class B1, |
79 | class A1, class A2, |
80 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
81 | auto |
82 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) |
83 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2 ) ) |
84 | { |
85 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2 ); |
86 | } |
87 | |
88 | template<class Rt2, class R, class T, |
89 | class B1, |
90 | class A1, class A2, |
91 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
92 | auto |
93 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) |
94 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2 ) ) |
95 | { |
96 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2 ); |
97 | } |
98 | |
99 | // 2 |
100 | |
101 | template<class R, class T, |
102 | class B1, class B2, |
103 | class A1, class A2, class A3> |
104 | auto |
105 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) |
106 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3 ) ) |
107 | { |
108 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3 ); |
109 | } |
110 | |
111 | template<class R, class T, |
112 | class B1, class B2, |
113 | class A1, class A2, class A3> |
114 | auto |
115 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) |
116 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3 ) ) |
117 | { |
118 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3 ); |
119 | } |
120 | |
121 | template<class Rt2, class R, class T, |
122 | class B1, class B2, |
123 | class A1, class A2, class A3, |
124 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
125 | auto |
126 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) |
127 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3 ) ) |
128 | { |
129 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3 ); |
130 | } |
131 | |
132 | template<class Rt2, class R, class T, |
133 | class B1, class B2, |
134 | class A1, class A2, class A3, |
135 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
136 | auto |
137 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) |
138 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3 ) ) |
139 | { |
140 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3 ); |
141 | } |
142 | |
143 | // 3 |
144 | |
145 | template<class R, class T, |
146 | class B1, class B2, class B3, |
147 | class A1, class A2, class A3, class A4> |
148 | auto |
149 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) |
150 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4 ) ) |
151 | { |
152 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4 ); |
153 | } |
154 | |
155 | template<class R, class T, |
156 | class B1, class B2, class B3, |
157 | class A1, class A2, class A3, class A4> |
158 | auto |
159 | 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) |
160 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4 ) ) |
161 | { |
162 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4 ); |
163 | } |
164 | |
165 | template<class Rt2, class R, class T, |
166 | class B1, class B2, class B3, |
167 | class A1, class A2, class A3, class A4, |
168 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
169 | auto |
170 | BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) |
171 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4 ) ) |
172 | { |
173 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4 ); |
174 | } |
175 | |
176 | template<class Rt2, class R, class T, |
177 | class B1, class B2, class B3, |
178 | class A1, class A2, class A3, class A4, |
179 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
180 | auto |
181 | 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) |
182 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4 ) ) |
183 | { |
184 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4 ); |
185 | } |
186 | |
187 | // 4 |
188 | |
189 | template<class R, class T, |
190 | class B1, class B2, class B3, class B4, |
191 | class A1, class A2, class A3, class A4, class A5> |
192 | auto |
193 | 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) |
194 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5 ) ) |
195 | { |
196 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5 ); |
197 | } |
198 | |
199 | template<class R, class T, |
200 | class B1, class B2, class B3, class B4, |
201 | class A1, class A2, class A3, class A4, class A5> |
202 | auto |
203 | 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) |
204 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5 ) ) |
205 | { |
206 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5 ); |
207 | } |
208 | |
209 | template<class Rt2, class R, class T, |
210 | class B1, class B2, class B3, class B4, |
211 | class A1, class A2, class A3, class A4, class A5, |
212 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
213 | auto |
214 | 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) |
215 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5 ) ) |
216 | { |
217 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5 ); |
218 | } |
219 | |
220 | template<class Rt2, class R, class T, |
221 | class B1, class B2, class B3, class B4, |
222 | class A1, class A2, class A3, class A4, class A5, |
223 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
224 | auto |
225 | 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) |
226 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5 ) ) |
227 | { |
228 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5 ); |
229 | } |
230 | |
231 | // 5 |
232 | |
233 | template<class R, class T, |
234 | class B1, class B2, class B3, class B4, class B5, |
235 | class A1, class A2, class A3, class A4, class A5, class A6> |
236 | auto |
237 | 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) |
238 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ) ) |
239 | { |
240 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ); |
241 | } |
242 | |
243 | template<class R, class T, |
244 | class B1, class B2, class B3, class B4, class B5, |
245 | class A1, class A2, class A3, class A4, class A5, class A6> |
246 | auto |
247 | 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) |
248 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ) ) |
249 | { |
250 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ); |
251 | } |
252 | |
253 | template<class Rt2, 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 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
257 | auto |
258 | 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) |
259 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ) ) |
260 | { |
261 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ); |
262 | } |
263 | |
264 | template<class Rt2, 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 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
268 | auto |
269 | 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) |
270 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ) ) |
271 | { |
272 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 ); |
273 | } |
274 | |
275 | // 6 |
276 | |
277 | template<class R, class T, |
278 | class B1, class B2, class B3, class B4, class B5, class B6, |
279 | class A1, class A2, class A3, class A4, class A5, class A6, class A7> |
280 | auto |
281 | 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) |
282 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ) ) |
283 | { |
284 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ); |
285 | } |
286 | |
287 | template<class R, class T, |
288 | class B1, class B2, class B3, class B4, class B5, class B6, |
289 | class A1, class A2, class A3, class A4, class A5, class A6, class A7> |
290 | auto |
291 | 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) |
292 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ) ) |
293 | { |
294 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ); |
295 | } |
296 | |
297 | template<class Rt2, class R, class T, |
298 | class B1, class B2, class B3, class B4, class B5, class B6, |
299 | class A1, class A2, class A3, class A4, class A5, class A6, class A7, |
300 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
301 | auto |
302 | 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) |
303 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ) ) |
304 | { |
305 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ); |
306 | } |
307 | |
308 | template<class Rt2, class R, class T, |
309 | class B1, class B2, class B3, class B4, class B5, class B6, |
310 | class A1, class A2, class A3, class A4, class A5, class A6, class A7, |
311 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
312 | auto |
313 | 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) |
314 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ) ) |
315 | { |
316 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 ); |
317 | } |
318 | |
319 | // 7 |
320 | |
321 | template<class R, class T, |
322 | class B1, class B2, class B3, class B4, class B5, class B6, class B7, |
323 | class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> |
324 | auto |
325 | 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) |
326 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ) ) |
327 | { |
328 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ); |
329 | } |
330 | |
331 | template<class R, class T, |
332 | class B1, class B2, class B3, class B4, class B5, class B6, class B7, |
333 | class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> |
334 | auto |
335 | 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) |
336 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ) ) |
337 | { |
338 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ); |
339 | } |
340 | |
341 | template<class Rt2, class R, class T, |
342 | class B1, class B2, class B3, class B4, class B5, class B6, class B7, |
343 | class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, |
344 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
345 | auto |
346 | 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) |
347 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ) ) |
348 | { |
349 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ); |
350 | } |
351 | |
352 | template<class Rt2, class R, class T, |
353 | class B1, class B2, class B3, class B4, class B5, class B6, class B7, |
354 | class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, |
355 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
356 | auto |
357 | 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) |
358 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ) ) |
359 | { |
360 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 ); |
361 | } |
362 | |
363 | // 8 |
364 | |
365 | template<class R, class T, |
366 | class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, |
367 | class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> |
368 | auto |
369 | 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) |
370 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ) ) |
371 | { |
372 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ); |
373 | } |
374 | |
375 | template<class R, class T, |
376 | class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, |
377 | class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> |
378 | auto |
379 | 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) |
380 | -> decltype( boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ) ) |
381 | { |
382 | return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ); |
383 | } |
384 | |
385 | template<class Rt2, class R, class T, |
386 | class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, |
387 | class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, |
388 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
389 | auto |
390 | 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) |
391 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ) ) |
392 | { |
393 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ); |
394 | } |
395 | |
396 | template<class Rt2, class R, class T, |
397 | class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, |
398 | class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, |
399 | class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type> |
400 | auto |
401 | 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) |
402 | -> decltype( boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ) ) |
403 | { |
404 | return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 ); |
405 | } |
406 | |