From f6bcade29c997592caffff9fc9eedbb572fd805a Mon Sep 17 00:00:00 2001 From: Jamie Reece Wilson Date: Wed, 29 May 2024 13:24:08 +0100 Subject: [PATCH] [+] AuIsEqualOfEnum [+] AuGetAmbiguousMethodNoArgs [+] AuGetAmbiguousStaticFunction [+] AuGetAmbiguousStaticFunctionNoArgs --- Include/auROXTL/auTemplateMeta.hpp | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/Include/auROXTL/auTemplateMeta.hpp b/Include/auROXTL/auTemplateMeta.hpp index a688fca..0279550 100644 --- a/Include/auROXTL/auTemplateMeta.hpp +++ b/Include/auROXTL/auTemplateMeta.hpp @@ -447,6 +447,11 @@ static auto AuGetAmbiguousMethod2(Ret_t(T :: *a)(Args...)) return a; } +template +static auto AuGetAmbiguousFunction2(Ret_t(*a)(Args...)) +{ + return a; +} // According to MSVC: "only function types and reference types can't be const qualified" @@ -487,9 +492,10 @@ struct AuIsObject : AuBoolType> // I dont think I can easily implement these in templates // For the sake of syntax sugar, these will be macros for now -#define AuGetAmbiguousMethod(Ret_t, Args, T, Method) AuGetAmbiguousMethod2(&T::Method) - -#define AuGetAmbiguousMethod_v AuGetAmbiguousMethod +#define AuGetAmbiguousMethod(Ret_t, Args, T, Method) AuGetAmbiguousMethod2(&T::Method) +#define AuGetAmbiguousMethodNoArgs(Ret_t, T, Method) AuGetAmbiguousMethod2 (&T::Method) +#define AuGetAmbiguousStaticFunction(Ret_t, Args, T, Func) AuGetAmbiguousFunction2 (&T::Func) +#define AuGetAmbiguousStaticFunctionNoArgs(Ret_t, T, Func) AuGetAmbiguousFunction2 (&T::Func) namespace _audetail { @@ -819,4 +825,16 @@ struct AuIsNothrowDefaultConstructible : AuIsNothrowConstructible { }; template -constexpr bool AuIsNothrowDefaultConstructible_v = AuIsNothrowDefaultConstructible::value; \ No newline at end of file +constexpr bool AuIsNothrowDefaultConstructible_v = AuIsNothrowDefaultConstructible::value; + +template +constexpr bool AuIsEqualOfEnum(T cmp) +{ + return false; +} + +template +constexpr bool AuIsEqualOfEnum(T cmp) +{ + return e == cmp || AuIsEqualOfEnum(cmp); +} \ No newline at end of file