1#ifndef CLASSDESC_FUNCTIONDB5
2#define CLASSDESC_FUNCTIONDB5
3template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
4struct Arg<R (*)(A1,A2,A3,A4,A5), 1>
10template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
11struct Arg<R (C::*)(A1,A2,A3,A4,A5), 1>
17template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
18struct Arg<R (C::*)(A1,A2,A3,A4,A5) const, 1>
24#if defined(__cplusplus) && __cplusplus>=201703L
26template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
27struct Arg<R (*)(A1,A2,A3,A4,A5)
noexcept, 1>
33template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
34struct Arg<R (C::*)(A1,A2,A3,A4,A5) noexcept, 1>
40template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
41struct Arg<R (C::*)(A1,A2,A3,A4,A5) const noexcept, 1>
47template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
48struct Arg<R (*)(A1,A2,A3,A4,A5), 2>
54template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
55struct Arg<R (C::*)(A1,A2,A3,A4,A5), 2>
61template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
62struct Arg<R (C::*)(A1,A2,A3,A4,A5) const, 2>
68#if defined(__cplusplus) && __cplusplus>=201703L
70template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
71struct Arg<R (*)(A1,A2,A3,A4,A5)
noexcept, 2>
77template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
78struct Arg<R (C::*)(A1,A2,A3,A4,A5) noexcept, 2>
84template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
85struct Arg<R (C::*)(A1,A2,A3,A4,A5) const noexcept, 2>
91template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
92struct Arg<R (*)(A1,A2,A3,A4,A5), 3>
98template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
99struct Arg<R (C::*)(A1,A2,A3,A4,A5), 3>
105template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
106struct Arg<R (C::*)(A1,A2,A3,A4,A5) const, 3>
112#if defined(__cplusplus) && __cplusplus>=201703L
114template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
115struct Arg<R (*)(A1,A2,A3,A4,A5)
noexcept, 3>
121template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
122struct Arg<R (C::*)(A1,A2,A3,A4,A5) noexcept, 3>
128template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
129struct Arg<R (C::*)(A1,A2,A3,A4,A5) const noexcept, 3>
135template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
136struct Arg<R (*)(A1,A2,A3,A4,A5), 4>
142template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
143struct Arg<R (C::*)(A1,A2,A3,A4,A5), 4>
149template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
150struct Arg<R (C::*)(A1,A2,A3,A4,A5) const, 4>
156#if defined(__cplusplus) && __cplusplus>=201703L
158template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
159struct Arg<R (*)(A1,A2,A3,A4,A5)
noexcept, 4>
165template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
166struct Arg<R (C::*)(A1,A2,A3,A4,A5) noexcept, 4>
172template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
173struct Arg<R (C::*)(A1,A2,A3,A4,A5) const noexcept, 4>
179template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
180struct Arg<R (*)(A1,A2,A3,A4,A5), 5>
186template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
187struct Arg<R (C::*)(A1,A2,A3,A4,A5), 5>
193template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
194struct Arg<R (C::*)(A1,A2,A3,A4,A5) const, 5>
200#if defined(__cplusplus) && __cplusplus>=201703L
202template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
203struct Arg<R (*)(A1,A2,A3,A4,A5)
noexcept, 5>
209template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
210struct Arg<R (C::*)(A1,A2,A3,A4,A5) noexcept, 5>
216template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
217struct Arg<R (C::*)(A1,A2,A3,A4,A5) const noexcept, 5>
223template <
class F,
template<
class>
class P>
226 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;
230template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
231struct Arity<R (*)(A1,A2,A3,A4,A5)>
233 static const int V=5;
234 static const int value=5;
237template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
238struct Return<R (*)(A1,A2,A3,A4,A5)>
244template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
245struct Arity<R (* C::*)(A1,A2,A3,A4,A5)>
247 static const int V=5;
248 static const int value=5;
251template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
252struct Return<R (* C::*)(A1,A2,A3,A4,A5)>
258template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
259struct Arity<R (C::*)(A1,A2,A3,A4,A5)>
261 static const int V=5;
262 static const int value=5;
265template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
266struct Return<R (C::*)(A1,A2,A3,A4,A5)>
272template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
273struct Arity<R (C::*)(A1,A2,A3,A4,A5) const>
275 static const int V=5;
276 static const int value=5;
279template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
280struct Return<R (C::*)(A1,A2,A3,A4,A5) const>
286template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
287struct ClassOf<R (C::*)(A1,A2,A3,A4,A5)>
293template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
294struct ClassOf<R (*C::*)(A1,A2,A3,A4,A5)>
300template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
301struct ClassOf<R (C::*)(A1,A2,A3,A4,A5) const>
307template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
308struct is_member_function_ptr<R (C::*)(A1,A2,A3,A4,A5)>
310 static const bool value=
true;
313template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
314struct is_member_function_ptr<R (C::*)(A1,A2,A3,A4,A5) const>
316 static const bool value=
true;
319template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
320struct is_const_method<R (C::*)(A1,A2,A3,A4,A5) const>
322 static const bool value=
true;
325template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
326struct is_nonmember_function_ptr<R (*)(A1,A2,A3,A4,A5)>
328 static const bool value=
true;
331template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
332struct is_nonmember_function_ptr<R (*C::*)(A1,A2,A3,A4,A5)>
334 static const bool value=
true;
337template <
class C,
class D,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
338class bound_method<C, R (D::*)(A1,A2,A3,A4,A5)>
340 typedef R (D::*M)(A1,A2,A3,A4,A5);
344 static const int arity=5;
346 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
347 bound_method(C& obj, M method): obj(&obj), method(method) {}
348 typename enable_if<Not<classdesc::is_const<C> >, R>::T
349 operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)
const {
return (obj->*method)(a1,a2,a3,a4,a5);}
350 void rebind(C& newObj) {obj=&newObj;}
351 static const bool is_const=
false;
354template <
class C,
class D,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
355class bound_method<const C, R (D::*)(A1,A2,A3,A4,A5)>
357 typedef R (D::*M)(A1,A2,A3,A4,A5);
361 static const int arity=5;
363 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
364 bound_method(
const C& obj, M method): obj(&obj), method(method) {}
365 R operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)
const {
366 throw std::runtime_error(
"cannot call method, inappropriate argument type");
368 void rebind(C& newObj) {obj=&newObj;}
369 static const bool is_const=
false;
372template <
class C,
class D,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
373class bound_method<C, R (D::*)(A1,A2,A3,A4,A5) const>
375 typedef R (D::*M)(A1,A2,A3,A4,A5)
const;
379 static const int arity=5;
381 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
382 bound_method(C& obj, M method): obj(obj), method(method) {}
383 R operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)
const {
return (obj.*method)(a1,a2,a3,a4,a5);}
384 static const bool is_const=
true;
387#if defined(__cplusplus) && __cplusplus>=201703L
390template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
391struct Arity<R (*)(A1,A2,A3,A4,A5)
noexcept>
393 static const int V=5;
394 static const int value=5;
397template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
398struct Return<R (*)(A1,A2,A3,A4,A5)
noexcept>
404template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
405struct Arity<R (* C::*)(A1,A2,A3,A4,A5)
noexcept>
407 static const int V=5;
408 static const int value=5;
411template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
412struct Return<R (* C::*)(A1,A2,A3,A4,A5)
noexcept>
418template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
419struct Arity<R (C::*)(A1,A2,A3,A4,A5) noexcept>
421 static const int V=5;
422 static const int value=5;
425template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
426struct Return<R (C::*)(A1,A2,A3,A4,A5) noexcept>
432template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
433struct Arity<R (C::*)(A1,A2,A3,A4,A5) const noexcept>
435 static const int V=5;
436 static const int value=5;
439template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
440struct Return<R (C::*)(A1,A2,A3,A4,A5) const noexcept>
446template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
447struct ClassOf<R (C::*)(A1,A2,A3,A4,A5) noexcept>
453template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
454struct ClassOf<R (*C::*)(A1,A2,A3,A4,A5)
noexcept>
460template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
461struct ClassOf<R (C::*)(A1,A2,A3,A4,A5) const noexcept>
467template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
468struct is_member_function_ptr<R (C::*)(A1,A2,A3,A4,A5) noexcept>
470 static const bool value=
true;
473template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
474struct is_member_function_ptr<R (C::*)(A1,A2,A3,A4,A5) const noexcept>
476 static const bool value=
true;
479template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
480struct is_const_method<R (C::*)(A1,A2,A3,A4,A5) const noexcept>
482 static const bool value=
true;
485template <
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
486struct is_nonmember_function_ptr<R (*)(A1,A2,A3,A4,A5)
noexcept>
488 static const bool value=
true;
491template <
class C,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
492struct is_nonmember_function_ptr<R (*C::*)(A1,A2,A3,A4,A5)
noexcept>
494 static const bool value=
true;
497template <
class C,
class D,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
498class bound_method<C, R (D::*)(A1,A2,A3,A4,A5) noexcept>
500 typedef R (D::*M)(A1,A2,A3,A4,A5);
504 static const int arity=5;
506 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
507 bound_method(C& obj, M method): obj(&obj), method(method) {}
508 typename enable_if<Not<classdesc::is_const<C> >, R>::T
509 operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)
const {
return (obj->*method)(a1,a2,a3,a4,a5);}
510 void rebind(C& newObj) {obj=&newObj;}
511 static const bool is_const=
false;
514template <
class C,
class D,
class A1,
class A2,
class A3,
class A4,
class A5>
515class bound_method<C, void (D::*)(A1,A2,A3,A4,A5) noexcept>
517 typedef void (D::*M)(A1,A2,A3,A4,A5);
521 static const int arity=5;
523 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
524 bound_method(C& obj, M method): obj(&obj), method(method) {}
525 typename enable_if<Not<classdesc::is_const<C> > >::T
526 operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)
const {(obj->*method)(a1,a2,a3,a4,a5);}
527 void rebind(C& newObj) {obj=&newObj;}
528 static const bool is_const=
false;
531template <
class C,
class D,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
532class bound_method<const C, R (D::*)(A1,A2,A3,A4,A5) noexcept>
534 typedef R (D::*M)(A1,A2,A3,A4,A5);
538 static const int arity=5;
540 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
541 bound_method(
const C& obj, M method): obj(&obj), method(method) {}
542 R operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)
const {
543 throw std::runtime_error(
"cannot call method, inappropriate argument type");
545 void rebind(C& newObj) {obj=&newObj;}
546 static const bool is_const=
false;
549template <
class C,
class D,
class A1,
class A2,
class A3,
class A4,
class A5>
550class bound_method<const C, void (D::*)(A1,A2,A3,A4,A5) noexcept>
552 typedef void (D::*M)(A1,A2,A3,A4,A5);
556 static const int arity=5;
558 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
559 bound_method(
const C& obj, M method): obj(&obj), method(method) {}
560 typename enable_if<Not<classdesc::is_const<C> > >::T
561 operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)
const {
562 throw std::runtime_error(
"cannot call method, inappropriate argument type");
564 void rebind(C& newObj) {obj=&newObj;}
565 static const bool is_const=
false;
568template <
class C,
class D,
class R,
class A1,
class A2,
class A3,
class A4,
class A5>
569class bound_method<C, R (D::*)(A1,A2,A3,A4,A5) const noexcept>
571 typedef R (D::*M)(A1,A2,A3,A4,A5)
const;
575 static const int arity=5;
577 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
578 bound_method(C& obj, M method): obj(obj), method(method) {}
579 R operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)
const {
return (obj.*method)(a1,a2,a3,a4,a5);}
580 static const bool is_const=
true;
583template <
class C,
class D,
class A1,
class A2,
class A3,
class A4,
class A5>
584class bound_method<C, void (D::*)(A1,A2,A3,A4,A5) const noexcept>
586 typedef void (D::*M)(A1,A2,A3,A4,A5)
const;
590 static const int arity=5;
592 template <
int i>
struct Arg:
public functional::Arg<M,i> {};
593 bound_method(C& obj, M method): obj(obj), method(method) {}
594 void operator()(A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)
const {(obj.*method)(a1,a2,a3,a4,a5);}
595 static const bool is_const=
true;
599template <
class F,
class Args>
600typename enable_if<And<AllArgs<F, is_rvalue>, Eq<Arity<F>::value, 5> >,
601 typename Return<F>::T>::T
602apply_nonvoid_fn(F f, Args& a, Fdummy<F> dum=0)
604 return f(a[0],a[1],a[2],a[3],a[4]);
613template <
class F,
class Args>
614typename enable_if<And<AllArgs<F, is_rvalue>, Eq<Arity<F>::value, 5> >,
616apply_void_fn(F f, Args& a, Fdummy<F> dum=0)
618 f(a[0],a[1],a[2],a[3],a[4]);
621template <
class Buffer,
class F>
622typename enable_if<Eq<Arity<F>::value, 5>,
typename Return<F>::T>::T
623callOnBuffer(Buffer& buffer, F f)
625 typename remove_const<typename remove_reference<typename Arg<F,1>::T>::type>::type a1;
627 typename remove_const<typename remove_reference<typename Arg<F,2>::T>::type>::type a2;
629 typename remove_const<typename remove_reference<typename Arg<F,3>::T>::type>::type a3;
631 typename remove_const<typename remove_reference<typename Arg<F,4>::T>::type>::type a4;
633 typename remove_const<typename remove_reference<typename Arg<F,5>::T>::type>::type a5;
Definition functiondb5.h:381
Definition functiondb5.h:346
Definition functiondb5.h:363