diff --git a/rx/include/rx/refl.hpp b/rx/include/rx/refl.hpp index e829fea0c..1341bd364 100644 --- a/rx/include/rx/refl.hpp +++ b/rx/include/rx/refl.hpp @@ -133,18 +133,17 @@ namespace detail { template requires std::is_enum_v constexpr auto calcFieldCount() { - - if constexpr (!requires { getNameOf()[0]; }) { + if constexpr (requires { EnumT::Count; }) { + return static_cast(EnumT::Count); + } else if constexpr (requires { EnumT::_count; }) { + return static_cast(EnumT::_count); + } else if constexpr (requires { EnumT::count; }) { + return static_cast(EnumT::count); + } else if constexpr (!requires { getNameOf()[0]; }) { return N; } else { constexpr auto c = getNameOf()[0]; - if constexpr (requires { EnumT::Count; }) { - return static_cast(EnumT::Count); - } else if constexpr (requires { EnumT::_count; }) { - return static_cast(EnumT::_count); - } else if constexpr (requires { EnumT::count; }) { - return static_cast(EnumT::count); - } else if constexpr (!requires { getNameOf()[0]; }) { + if constexpr (!requires { getNameOf()[0]; }) { return N; } else if constexpr (c >= '0' && c <= '9') { return N;