From 1c79d9b266e6191432e01c8e0afb0a0adb999437 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Sat, 26 Mar 2022 21:36:58 +0100 Subject: [PATCH] Added general iterate function --- src/cpptypesafeenum.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/cpptypesafeenum.h b/src/cpptypesafeenum.h index 81cda1b..acf31c7 100644 --- a/src/cpptypesafeenum.h +++ b/src/cpptypesafeenum.h @@ -27,6 +27,9 @@ namespace detail { }; } // namespace detail +template +struct iterateEnum; + template constexpr bool IsTypeSafeEnum = detail::IsTypeSafeEnumTrait::value; @@ -57,7 +60,14 @@ constexpr bool IsTypeSafeEnum = detail::IsTypeSafeEnumTrait::value; using TheEnum = Name; \ Values(DECLARE_TYPESAFE_ENUM_HELPER4) \ } \ - constexpr inline bool isTypeSafeEnum(Name) { return true; } - + constexpr inline bool isTypeSafeEnum(Name) { return true; } \ + template<> \ + struct iterateEnum { \ + template \ + static void iterate(T&&cb) \ + { \ + return iterate##Name(std::forward(cb)); \ + } \ + }; #define IMPLEMENT_TYPESAFE_ENUM(Name, Derivation, Values)