]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /*============================================================================= |
2 | Copyright (c) 2001-2007 Joel de Guzman | |
3 | ||
4 | Distributed under the Boost Software License, Version 1.0. (See accompanying | |
5 | file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
6 | ==============================================================================*/ | |
7 | ||
8 | ||
9 | ||
10 | ||
11 | ||
12 | ||
13 | ||
14 | template <> | |
15 | struct member_function_ptr_impl<1> | |
16 | { | |
17 | template <typename RT, typename FP> | |
18 | struct impl | |
19 | { | |
20 | typedef RT result_type; | |
21 | impl(FP fp_) | |
22 | : fp(fp_) {} | |
23 | template <typename Class, typename A0> | |
24 | RT operator()(Class& obj, A0 & a0) const | |
25 | { | |
26 | BOOST_PROTO_USE_GET_POINTER(); | |
27 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
28 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0); | |
29 | } | |
30 | template <typename Class, typename A0> | |
31 | RT operator()(Class* obj, A0 & a0) const | |
32 | { | |
33 | return (obj->*fp)(a0); | |
34 | } | |
35 | FP fp; | |
36 | }; | |
37 | }; | |
38 | ||
39 | ||
40 | ||
41 | ||
42 | ||
43 | ||
44 | ||
45 | template <> | |
46 | struct member_function_ptr_impl<2> | |
47 | { | |
48 | template <typename RT, typename FP> | |
49 | struct impl | |
50 | { | |
51 | typedef RT result_type; | |
52 | impl(FP fp_) | |
53 | : fp(fp_) {} | |
54 | template <typename Class, typename A0 , typename A1> | |
55 | RT operator()(Class& obj, A0 & a0 , A1 & a1) const | |
56 | { | |
57 | BOOST_PROTO_USE_GET_POINTER(); | |
58 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
59 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1); | |
60 | } | |
61 | template <typename Class, typename A0 , typename A1> | |
62 | RT operator()(Class* obj, A0 & a0 , A1 & a1) const | |
63 | { | |
64 | return (obj->*fp)(a0 , a1); | |
65 | } | |
66 | FP fp; | |
67 | }; | |
68 | }; | |
69 | ||
70 | ||
71 | ||
72 | ||
73 | ||
74 | ||
75 | ||
76 | template <> | |
77 | struct member_function_ptr_impl<3> | |
78 | { | |
79 | template <typename RT, typename FP> | |
80 | struct impl | |
81 | { | |
82 | typedef RT result_type; | |
83 | impl(FP fp_) | |
84 | : fp(fp_) {} | |
85 | template <typename Class, typename A0 , typename A1 , typename A2> | |
86 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2) const | |
87 | { | |
88 | BOOST_PROTO_USE_GET_POINTER(); | |
89 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
90 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2); | |
91 | } | |
92 | template <typename Class, typename A0 , typename A1 , typename A2> | |
93 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2) const | |
94 | { | |
95 | return (obj->*fp)(a0 , a1 , a2); | |
96 | } | |
97 | FP fp; | |
98 | }; | |
99 | }; | |
100 | ||
101 | ||
102 | ||
103 | ||
104 | ||
105 | ||
106 | ||
107 | template <> | |
108 | struct member_function_ptr_impl<4> | |
109 | { | |
110 | template <typename RT, typename FP> | |
111 | struct impl | |
112 | { | |
113 | typedef RT result_type; | |
114 | impl(FP fp_) | |
115 | : fp(fp_) {} | |
116 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3> | |
117 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3) const | |
118 | { | |
119 | BOOST_PROTO_USE_GET_POINTER(); | |
120 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
121 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3); | |
122 | } | |
123 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3> | |
124 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3) const | |
125 | { | |
126 | return (obj->*fp)(a0 , a1 , a2 , a3); | |
127 | } | |
128 | FP fp; | |
129 | }; | |
130 | }; | |
131 | ||
132 | ||
133 | ||
134 | ||
135 | ||
136 | ||
137 | ||
138 | template <> | |
139 | struct member_function_ptr_impl<5> | |
140 | { | |
141 | template <typename RT, typename FP> | |
142 | struct impl | |
143 | { | |
144 | typedef RT result_type; | |
145 | impl(FP fp_) | |
146 | : fp(fp_) {} | |
147 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
148 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4) const | |
149 | { | |
150 | BOOST_PROTO_USE_GET_POINTER(); | |
151 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
152 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4); | |
153 | } | |
154 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
155 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4) const | |
156 | { | |
157 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4); | |
158 | } | |
159 | FP fp; | |
160 | }; | |
161 | }; | |
162 | ||
163 | ||
164 | ||
165 | ||
166 | ||
167 | ||
168 | ||
169 | template <> | |
170 | struct member_function_ptr_impl<6> | |
171 | { | |
172 | template <typename RT, typename FP> | |
173 | struct impl | |
174 | { | |
175 | typedef RT result_type; | |
176 | impl(FP fp_) | |
177 | : fp(fp_) {} | |
178 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
179 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5) const | |
180 | { | |
181 | BOOST_PROTO_USE_GET_POINTER(); | |
182 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
183 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5); | |
184 | } | |
185 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
186 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5) const | |
187 | { | |
188 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5); | |
189 | } | |
190 | FP fp; | |
191 | }; | |
192 | }; | |
193 | ||
194 | ||
195 | ||
196 | ||
197 | ||
198 | ||
199 | ||
200 | template <> | |
201 | struct member_function_ptr_impl<7> | |
202 | { | |
203 | template <typename RT, typename FP> | |
204 | struct impl | |
205 | { | |
206 | typedef RT result_type; | |
207 | impl(FP fp_) | |
208 | : fp(fp_) {} | |
209 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
210 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6) const | |
211 | { | |
212 | BOOST_PROTO_USE_GET_POINTER(); | |
213 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
214 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
215 | } | |
216 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
217 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6) const | |
218 | { | |
219 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
220 | } | |
221 | FP fp; | |
222 | }; | |
223 | }; | |
224 | ||
225 | ||
226 | ||
227 | ||
228 | ||
229 | ||
230 | ||
231 | template <> | |
232 | struct member_function_ptr_impl<8> | |
233 | { | |
234 | template <typename RT, typename FP> | |
235 | struct impl | |
236 | { | |
237 | typedef RT result_type; | |
238 | impl(FP fp_) | |
239 | : fp(fp_) {} | |
240 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
241 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7) const | |
242 | { | |
243 | BOOST_PROTO_USE_GET_POINTER(); | |
244 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
245 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
246 | } | |
247 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
248 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7) const | |
249 | { | |
250 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
251 | } | |
252 | FP fp; | |
253 | }; | |
254 | }; | |
255 | ||
256 | ||
257 | ||
258 | ||
259 | ||
260 | ||
261 | ||
262 | template <> | |
263 | struct member_function_ptr_impl<9> | |
264 | { | |
265 | template <typename RT, typename FP> | |
266 | struct impl | |
267 | { | |
268 | typedef RT result_type; | |
269 | impl(FP fp_) | |
270 | : fp(fp_) {} | |
271 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
272 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8) const | |
273 | { | |
274 | BOOST_PROTO_USE_GET_POINTER(); | |
275 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
276 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
277 | } | |
278 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
279 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8) const | |
280 | { | |
281 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
282 | } | |
283 | FP fp; | |
284 | }; | |
285 | }; | |
286 | ||
287 | ||
288 | ||
289 | ||
290 | ||
291 | ||
292 | ||
293 | template <> | |
294 | struct member_function_ptr_impl<10> | |
295 | { | |
296 | template <typename RT, typename FP> | |
297 | struct impl | |
298 | { | |
299 | typedef RT result_type; | |
300 | impl(FP fp_) | |
301 | : fp(fp_) {} | |
302 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9> | |
303 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9) const | |
304 | { | |
305 | BOOST_PROTO_USE_GET_POINTER(); | |
306 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
307 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9); | |
308 | } | |
309 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9> | |
310 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9) const | |
311 | { | |
312 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9); | |
313 | } | |
314 | FP fp; | |
315 | }; | |
316 | }; | |
317 | ||
318 | ||
319 | ||
320 | ||
321 | ||
322 | ||
323 | ||
324 | template <> | |
325 | struct member_function_ptr_impl<11> | |
326 | { | |
327 | template <typename RT, typename FP> | |
328 | struct impl | |
329 | { | |
330 | typedef RT result_type; | |
331 | impl(FP fp_) | |
332 | : fp(fp_) {} | |
333 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10> | |
334 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10) const | |
335 | { | |
336 | BOOST_PROTO_USE_GET_POINTER(); | |
337 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
338 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10); | |
339 | } | |
340 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10> | |
341 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10) const | |
342 | { | |
343 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10); | |
344 | } | |
345 | FP fp; | |
346 | }; | |
347 | }; | |
348 | ||
349 | ||
350 | ||
351 | ||
352 | ||
353 | ||
354 | ||
355 | template <> | |
356 | struct member_function_ptr_impl<12> | |
357 | { | |
358 | template <typename RT, typename FP> | |
359 | struct impl | |
360 | { | |
361 | typedef RT result_type; | |
362 | impl(FP fp_) | |
363 | : fp(fp_) {} | |
364 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11> | |
365 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11) const | |
366 | { | |
367 | BOOST_PROTO_USE_GET_POINTER(); | |
368 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
369 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11); | |
370 | } | |
371 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11> | |
372 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11) const | |
373 | { | |
374 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11); | |
375 | } | |
376 | FP fp; | |
377 | }; | |
378 | }; | |
379 | ||
380 | ||
381 | ||
382 | ||
383 | ||
384 | ||
385 | ||
386 | template <> | |
387 | struct member_function_ptr_impl<13> | |
388 | { | |
389 | template <typename RT, typename FP> | |
390 | struct impl | |
391 | { | |
392 | typedef RT result_type; | |
393 | impl(FP fp_) | |
394 | : fp(fp_) {} | |
395 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12> | |
396 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12) const | |
397 | { | |
398 | BOOST_PROTO_USE_GET_POINTER(); | |
399 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
400 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12); | |
401 | } | |
402 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12> | |
403 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12) const | |
404 | { | |
405 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12); | |
406 | } | |
407 | FP fp; | |
408 | }; | |
409 | }; | |
410 | ||
411 | ||
412 | ||
413 | ||
414 | ||
415 | ||
416 | ||
417 | template <> | |
418 | struct member_function_ptr_impl<14> | |
419 | { | |
420 | template <typename RT, typename FP> | |
421 | struct impl | |
422 | { | |
423 | typedef RT result_type; | |
424 | impl(FP fp_) | |
425 | : fp(fp_) {} | |
426 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13> | |
427 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13) const | |
428 | { | |
429 | BOOST_PROTO_USE_GET_POINTER(); | |
430 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
431 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13); | |
432 | } | |
433 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13> | |
434 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13) const | |
435 | { | |
436 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13); | |
437 | } | |
438 | FP fp; | |
439 | }; | |
440 | }; | |
441 | ||
442 | ||
443 | ||
444 | ||
445 | ||
446 | ||
447 | ||
448 | template <> | |
449 | struct member_function_ptr_impl<15> | |
450 | { | |
451 | template <typename RT, typename FP> | |
452 | struct impl | |
453 | { | |
454 | typedef RT result_type; | |
455 | impl(FP fp_) | |
456 | : fp(fp_) {} | |
457 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14> | |
458 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14) const | |
459 | { | |
460 | BOOST_PROTO_USE_GET_POINTER(); | |
461 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
462 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14); | |
463 | } | |
464 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14> | |
465 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14) const | |
466 | { | |
467 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14); | |
468 | } | |
469 | FP fp; | |
470 | }; | |
471 | }; | |
472 | ||
473 | ||
474 | ||
475 | ||
476 | ||
477 | ||
478 | ||
479 | template <> | |
480 | struct member_function_ptr_impl<16> | |
481 | { | |
482 | template <typename RT, typename FP> | |
483 | struct impl | |
484 | { | |
485 | typedef RT result_type; | |
486 | impl(FP fp_) | |
487 | : fp(fp_) {} | |
488 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15> | |
489 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15) const | |
490 | { | |
491 | BOOST_PROTO_USE_GET_POINTER(); | |
492 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
493 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15); | |
494 | } | |
495 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15> | |
496 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15) const | |
497 | { | |
498 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15); | |
499 | } | |
500 | FP fp; | |
501 | }; | |
502 | }; | |
503 | ||
504 | ||
505 | ||
506 | ||
507 | ||
508 | ||
509 | ||
510 | template <> | |
511 | struct member_function_ptr_impl<17> | |
512 | { | |
513 | template <typename RT, typename FP> | |
514 | struct impl | |
515 | { | |
516 | typedef RT result_type; | |
517 | impl(FP fp_) | |
518 | : fp(fp_) {} | |
519 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16> | |
520 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16) const | |
521 | { | |
522 | BOOST_PROTO_USE_GET_POINTER(); | |
523 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
524 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16); | |
525 | } | |
526 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16> | |
527 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16) const | |
528 | { | |
529 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16); | |
530 | } | |
531 | FP fp; | |
532 | }; | |
533 | }; | |
534 | ||
535 | ||
536 | ||
537 | ||
538 | ||
539 | ||
540 | ||
541 | template <> | |
542 | struct member_function_ptr_impl<18> | |
543 | { | |
544 | template <typename RT, typename FP> | |
545 | struct impl | |
546 | { | |
547 | typedef RT result_type; | |
548 | impl(FP fp_) | |
549 | : fp(fp_) {} | |
550 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17> | |
551 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17) const | |
552 | { | |
553 | BOOST_PROTO_USE_GET_POINTER(); | |
554 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
555 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17); | |
556 | } | |
557 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17> | |
558 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17) const | |
559 | { | |
560 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17); | |
561 | } | |
562 | FP fp; | |
563 | }; | |
564 | }; | |
565 | ||
566 | ||
567 | ||
568 | ||
569 | ||
570 | ||
571 | ||
572 | template <> | |
573 | struct member_function_ptr_impl<19> | |
574 | { | |
575 | template <typename RT, typename FP> | |
576 | struct impl | |
577 | { | |
578 | typedef RT result_type; | |
579 | impl(FP fp_) | |
580 | : fp(fp_) {} | |
581 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18> | |
582 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18) const | |
583 | { | |
584 | BOOST_PROTO_USE_GET_POINTER(); | |
585 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
586 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18); | |
587 | } | |
588 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18> | |
589 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18) const | |
590 | { | |
591 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18); | |
592 | } | |
593 | FP fp; | |
594 | }; | |
595 | }; | |
596 | ||
597 | ||
598 | ||
599 | ||
600 | ||
601 | ||
602 | ||
603 | template <> | |
604 | struct member_function_ptr_impl<20> | |
605 | { | |
606 | template <typename RT, typename FP> | |
607 | struct impl | |
608 | { | |
609 | typedef RT result_type; | |
610 | impl(FP fp_) | |
611 | : fp(fp_) {} | |
612 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19> | |
613 | RT operator()(Class& obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19) const | |
614 | { | |
615 | BOOST_PROTO_USE_GET_POINTER(); | |
616 | typedef typename proto::detail::class_member_traits<FP>::class_type class_type; | |
617 | return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19); | |
618 | } | |
619 | template <typename Class, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19> | |
620 | RT operator()(Class* obj, A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11 , A12 & a12 , A13 & a13 , A14 & a14 , A15 & a15 , A16 & a16 , A17 & a17 , A18 & a18 , A19 & a19) const | |
621 | { | |
622 | return (obj->*fp)(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19); | |
623 | } | |
624 | FP fp; | |
625 | }; | |
626 | }; |