1#ifndef CLASSDESC_FUNCTIONDB8
2#define CLASSDESC_FUNCTIONDB8
3template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
4struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8), 1>
10template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
11struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8), 1>
17template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
18struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const, 1>
24#if defined(__cplusplus) && __cplusplus>=201703L
26template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
27struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept, 1>
33template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
34struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept, 1>
40template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
41struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept, 1>
47template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
48struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8), 2>
54template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
55struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8), 2>
61template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
62struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const, 2>
68#if defined(__cplusplus) && __cplusplus>=201703L
70template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
71struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept, 2>
77template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
78struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept, 2>
84template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
85struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept, 2>
91template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
92struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8), 3>
98template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
99struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8), 3>
105template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
106struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const, 3>
112#if defined(__cplusplus) && __cplusplus>=201703L
114template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
115struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept, 3>
121template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
122struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept, 3>
128template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
129struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept, 3>
135template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
136struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8), 4>
142template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
143struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8), 4>
149template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
150struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const, 4>
156#if defined(__cplusplus) && __cplusplus>=201703L
158template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
159struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept, 4>
165template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
166struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept, 4>
172template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
173struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept, 4>
179template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
180struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8), 5>
186template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
187struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8), 5>
193template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
194struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const, 5>
200#if defined(__cplusplus) && __cplusplus>=201703L
202template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
203struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept, 5>
209template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
210struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept, 5>
216template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
217struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept, 5>
223template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
224struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8), 6>
230template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
231struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8), 6>
237template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
238struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const, 6>
244#if defined(__cplusplus) && __cplusplus>=201703L
246template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
247struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept, 6>
253template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
254struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept, 6>
260template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
261struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept, 6>
267template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
268struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8), 7>
274template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
275struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8), 7>
281template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
282struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const, 7>
288#if defined(__cplusplus) && __cplusplus>=201703L
290template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
291struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept, 7>
297template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
298struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept, 7>
304template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
305struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept, 7>
311template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
312struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8), 8>
318template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
319struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8), 8>
325template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
326struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const, 8>
332#if defined(__cplusplus) && __cplusplus>=201703L
334template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
335struct Arg<R (*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept, 8>
341template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
342struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept, 8>
348template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
349struct Arg<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept, 8>
355template <
class F,
template<
class>
class P>
358 static const bool value=
true && P<typename Arg<F,1>::T>::value && P<typename Arg<F,2>::T>::value && P<typename Arg<F,3>::T>::value && P<typename Arg<F,4>::T>::value && P<typename Arg<F,5>::T>::value && P<typename Arg<F,6>::T>::value && P<typename Arg<F,7>::T>::value && P<typename Arg<F,8>::T>::value;
362template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
363struct Arity<R (*)(A1,A2,A3,A4,A5,A6,A7,A8)>
365 static const int V=8;
366 static const int value=8;
369template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
370struct Return<R (*)(A1,A2,A3,A4,A5,A6,A7,A8)>
376template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
377struct Arity<R (* C::*)(A1,A2,A3,A4,A5,A6,A7,A8)>
379 static const int V=8;
380 static const int value=8;
383template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
384struct Return<R (* C::*)(A1,A2,A3,A4,A5,A6,A7,A8)>
390template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
391struct Arity<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8)>
393 static const int V=8;
394 static const int value=8;
397template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
398struct Return<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8)>
404template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
405struct Arity<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const>
407 static const int V=8;
408 static const int value=8;
411template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
412struct Return<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const>
418template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
419struct ClassOf<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8)>
425template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
426struct ClassOf<R (*C::*)(A1,A2,A3,A4,A5,A6,A7,A8)>
432template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
433struct ClassOf<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const>
439template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
440struct is_member_function_ptr<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8)>
442 static const bool value=
true;
445template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
446struct is_member_function_ptr<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const>
448 static const bool value=
true;
451template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
452struct is_const_method<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const>
454 static const bool value=
true;
457template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
458struct is_nonmember_function_ptr<R (*)(A1,A2,A3,A4,A5,A6,A7,A8)>
460 static const bool value=
true;
463template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
464struct is_nonmember_function_ptr<R (*C::*)(A1,A2,A3,A4,A5,A6,A7,A8)>
466 static const bool value=
true;
469template <
class C,
class D,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
470class bound_method<C, R (D::*)(A1,A2,A3,A4,A5,A6,A7,A8)>
472 typedef R (D::*M)(A1,A2,A3,A4,A5,A6,A7,A8);
476 static const int arity=8;
478 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
479 bound_method(C& obj, M method): obj(&obj), method(method) {}
480 typename enable_if<Not<classdesc::is_const<C> >, R>::T
481 operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)
const {
return (obj->*method)(a1,a2,a3,a4,a5,a6,a7,a8);}
482 void rebind(C& newObj) {obj=&newObj;}
483 static const bool is_const=
false;
486template <
class C,
class D,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
487class bound_method<const C, R (D::*)(A1,A2,A3,A4,A5,A6,A7,A8)>
489 typedef R (D::*M)(A1,A2,A3,A4,A5,A6,A7,A8);
493 static const int arity=8;
495 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
496 bound_method(
const C& obj, M method): obj(&obj), method(method) {}
497 R operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)
const {
498 throw std::runtime_error(
"cannot call method, inappropriate argument type");
500 void rebind(C& newObj) {obj=&newObj;}
501 static const bool is_const=
false;
504template <
class C,
class D,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
505class bound_method<C, R (D::*)(A1,A2,A3,A4,A5,A6,A7,A8) const>
507 typedef R (D::*M)(A1,A2,A3,A4,A5,A6,A7,A8)
const;
511 static const int arity=8;
513 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
514 bound_method(C& obj, M method): obj(obj), method(method) {}
515 R operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)
const {
return (obj.*method)(a1,a2,a3,a4,a5,a6,a7,a8);}
516 static const bool is_const=
true;
519#if defined(__cplusplus) && __cplusplus>=201703L
522template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
523struct Arity<R (*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept>
525 static const int V=8;
526 static const int value=8;
529template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
530struct Return<R (*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept>
536template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
537struct Arity<R (* C::*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept>
539 static const int V=8;
540 static const int value=8;
543template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
544struct Return<R (* C::*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept>
550template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
551struct Arity<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept>
553 static const int V=8;
554 static const int value=8;
557template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
558struct Return<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept>
564template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
565struct Arity<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept>
567 static const int V=8;
568 static const int value=8;
571template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
572struct Return<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept>
578template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
579struct ClassOf<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept>
585template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
586struct ClassOf<R (*C::*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept>
592template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
593struct ClassOf<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept>
599template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
600struct is_member_function_ptr<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept>
602 static const bool value=
true;
605template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
606struct is_member_function_ptr<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept>
608 static const bool value=
true;
611template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
612struct is_const_method<R (C::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept>
614 static const bool value=
true;
617template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
618struct is_nonmember_function_ptr<R (*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept>
620 static const bool value=
true;
623template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
624struct is_nonmember_function_ptr<R (*C::*)(A1,A2,A3,A4,A5,A6,A7,A8)
noexcept>
626 static const bool value=
true;
629template <
class C,
class D,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
630class bound_method<C, R (D::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept>
632 typedef R (D::*M)(A1,A2,A3,A4,A5,A6,A7,A8);
636 static const int arity=8;
638 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
639 bound_method(C& obj, M method): obj(&obj), method(method) {}
640 typename enable_if<Not<classdesc::is_const<C> >, R>::T
641 operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)
const {
return (obj->*method)(a1,a2,a3,a4,a5,a6,a7,a8);}
642 void rebind(C& newObj) {obj=&newObj;}
643 static const bool is_const=
false;
646template <
class C,
class D,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
647class bound_method<C, void (D::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept>
649 typedef void (D::*M)(A1,A2,A3,A4,A5,A6,A7,A8);
653 static const int arity=8;
655 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
656 bound_method(C& obj, M method): obj(&obj), method(method) {}
657 typename enable_if<Not<classdesc::is_const<C> > >::T
658 operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)
const {(obj->*method)(a1,a2,a3,a4,a5,a6,a7,a8);}
659 void rebind(C& newObj) {obj=&newObj;}
660 static const bool is_const=
false;
663template <
class C,
class D,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
664class bound_method<const C, R (D::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept>
666 typedef R (D::*M)(A1,A2,A3,A4,A5,A6,A7,A8);
670 static const int arity=8;
672 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
673 bound_method(
const C& obj, M method): obj(&obj), method(method) {}
674 R operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)
const {
675 throw std::runtime_error(
"cannot call method, inappropriate argument type");
677 void rebind(C& newObj) {obj=&newObj;}
678 static const bool is_const=
false;
681template <
class C,
class D,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
682class bound_method<const C, void (D::*)(A1,A2,A3,A4,A5,A6,A7,A8) noexcept>
684 typedef void (D::*M)(A1,A2,A3,A4,A5,A6,A7,A8);
688 static const int arity=8;
690 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
691 bound_method(
const C& obj, M method): obj(&obj), method(method) {}
692 typename enable_if<Not<classdesc::is_const<C> > >::T
693 operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)
const {
694 throw std::runtime_error(
"cannot call method, inappropriate argument type");
696 void rebind(C& newObj) {obj=&newObj;}
697 static const bool is_const=
false;
700template <
class C,
class D,
class R,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
701class bound_method<C, R (D::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept>
703 typedef R (D::*M)(A1,A2,A3,A4,A5,A6,A7,A8)
const;
707 static const int arity=8;
709 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
710 bound_method(C& obj, M method): obj(obj), method(method) {}
711 R operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)
const {
return (obj.*method)(a1,a2,a3,a4,a5,a6,a7,a8);}
712 static const bool is_const=
true;
715template <
class C,
class D,
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
class A8>
716class bound_method<C, void (D::*)(A1,A2,A3,A4,A5,A6,A7,A8) const noexcept>
718 typedef void (D::*M)(A1,A2,A3,A4,A5,A6,A7,A8)
const;
722 static const int arity=8;
724 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
725 bound_method(C& obj, M method): obj(obj), method(method) {}
726 void operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)
const {(obj.*method)(a1,a2,a3,a4,a5,a6,a7,a8);}
727 static const bool is_const=
true;
731template <
class F,
class Args>
732typename enable_if<And<AllArgs<F, is_rvalue>, Eq<Arity<F>::value, 8> >,
733 typename Return<F>::T>::T
734apply_nonvoid_fn(F f, Args& a, Fdummy<F> dum=0)
736 return f(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);
745template <
class F,
class Args>
746typename enable_if<And<AllArgs<F, is_rvalue>, Eq<Arity<F>::value, 8> >,
748apply_void_fn(F f, Args& a, Fdummy<F> dum=0)
750 f(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);
753template <
class Buffer,
class F>
754typename enable_if<Eq<Arity<F>::value, 8>,
typename Return<F>::T>::T
755callOnBuffer(Buffer& buffer, F f)
757 typename remove_const<typename remove_reference<typename Arg<F,1>::T>::type>::type a1;
759 typename remove_const<typename remove_reference<typename Arg<F,2>::T>::type>::type a2;
761 typename remove_const<typename remove_reference<typename Arg<F,3>::T>::type>::type a3;
763 typename remove_const<typename remove_reference<typename Arg<F,4>::T>::type>::type a4;
765 typename remove_const<typename remove_reference<typename Arg<F,5>::T>::type>::type a5;
767 typename remove_const<typename remove_reference<typename Arg<F,6>::T>::type>::type a6;
769 typename remove_const<typename remove_reference<typename Arg<F,7>::T>::type>::type a7;
771 typename remove_const<typename remove_reference<typename Arg<F,8>::T>::type>::type a8;
Definition functiondb8.h:478
Definition functiondb8.h:513
Definition functiondb8.h:495