diff --git a/include/sqrat/sqratOverloadMethods.h b/include/sqrat/sqratOverloadMethods.h index 107610e9..af770863 100644 --- a/include/sqrat/sqratOverloadMethods.h +++ b/include/sqrat/sqratOverloadMethods.h @@ -887,289 +887,28 @@ inline SQFUNCTION SqOverloadFunc(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, return &SqOverload::Func; } - // // Query argument count // - -// Arg Count 0 -template -inline int SqGetArgCount(R (* /*method*/)()) { - return 0; +template +inline int SqGetArgCount(R (* /*method*/)(Args...)) { + return sizeof...(Args); } -// Arg Count 1 -template -inline int SqGetArgCount(R (* /*method*/)(A1)) { - return 1; -} - -// Arg Count 2 -template -inline int SqGetArgCount(R (* /*method*/)(A1, A2)) { - return 2; -} - -// Arg Count 3 -template -inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3)) { - return 3; -} - -// Arg Count 4 -template -inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4)) { - return 4; -} - -// Arg Count 5 -template -inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5)) { - return 5; -} - -// Arg Count 6 -template -inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6)) { - return 6; -} - -// Arg Count 7 -template -inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7)) { - return 7; -} - -// Arg Count 8 -template -inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8)) { - return 8; -} - -// Arg Count 9 -template -inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9)) { - return 9; -} - -// Arg Count 10 -template -inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)) { - return 10; -} - -// Arg Count 11 -template -inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)) { - return 11; -} - -// Arg Count 12 -template -inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)) { - return 12; -} - -// Arg Count 13 -template -inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)) { - return 13; -} - -// Arg Count 14 -template -inline int SqGetArgCount(R (* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)) { - return 14; -} - - // // Query member function argument count // - -// Arg Count 0 -template -inline int SqGetArgCount(R (C::* /*method*/)()) { - return 0; +template +inline int SqGetArgCount(R (C::* /*method*/)(Args...)) { + return sizeof...(Args); } -// Arg Count 1 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1)) { - return 1; -} - -// Arg Count 2 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2)) { - return 2; -} - -// Arg Count 3 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3)) { - return 3; -} - -// Arg Count 4 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4)) { - return 4; -} - -// Arg Count 5 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5)) { - return 5; -} - -// Arg Count 6 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6)) { - return 6; -} - -// Arg Count 7 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7)) { - return 7; -} - -// Arg Count 8 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8)) { - return 8; -} - -// Arg Count 9 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9)) { - return 9; -} - -// Arg Count 10 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)) { - return 10; -} - -// Arg Count 11 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)) { - return 11; -} - -// Arg Count 12 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)) { - return 12; -} - -// Arg Count 13 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)) { - return 13; -} - -// Arg Count 14 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)) { - return 14; -} - - // // Query const member function argument count // - -// Arg Count 0 -template -inline int SqGetArgCount(R (C::* /*method*/)() const) { - return 0; -} - -// Arg Count 1 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1) const) { - return 1; -} - -// Arg Count 2 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2) const) { - return 2; -} - -// Arg Count 3 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3) const) { - return 3; -} - -// Arg Count 4 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4) const) { - return 4; -} - -// Arg Count 5 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5) const) { - return 5; -} - -// Arg Count 6 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6) const) { - return 6; -} - -// Arg Count 7 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7) const) { - return 7; -} - -// Arg Count 8 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8) const) { - return 8; -} - -// Arg Count 9 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9) const) { - return 9; -} - -// Arg Count 10 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) const) { - return 10; -} - -// Arg Count 11 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) const) { - return 11; -} - -// Arg Count 12 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) const) { - return 12; -} - -// Arg Count 13 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13) const) { - return 13; -} - -// Arg Count 14 -template -inline int SqGetArgCount(R (C::* /*method*/)(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14) const) { - return 14; +template +inline int SqGetArgCount(R (C::* /*method*/)(Args...) const) { + return sizeof...(Args); } /// @endcond