diff --git a/src/common/settings_enums.h b/src/common/settings_enums.h index 0254b1df01..da142e8e1c 100644 --- a/src/common/settings_enums.h +++ b/src/common/settings_enums.h @@ -75,7 +75,7 @@ struct EnumMetadata { #define PP_HEAD(A, ...) A #define ENUM(NAME, ...) \ - enum class NAME : u32 { __VA_ARGS__, Count }; \ + enum class NAME : u32 { __VA_ARGS__ }; \ template<> inline std::vector> EnumMetadata::Canonicalizations() { \ return {PAIR(NAME, __VA_ARGS__)}; \ } \ diff --git a/src/common/settings_setting.h b/src/common/settings_setting.h index 6b5fb4053b..a337df17f4 100644 --- a/src/common/settings_setting.h +++ b/src/common/settings_setting.h @@ -375,7 +375,9 @@ public: // Enums have a maximal range which they're allowed Type temp{}; if constexpr (std::is_enum_v) { - temp = Type(std::clamp(std::underlying_type_t(val), std::underlying_type_t(0), std::underlying_type_t(Type::Count) - 1)); + auto const r_min = std::underlying_type_t(0); + auto const r_max = std::underlying_type_t(EnumMetadata::GetLast()); + temp = Type(std::clamp(std::underlying_type_t(val), r_min, r_max)); } else { temp = ranged ? std::clamp(val, this->minimum, this->maximum) : val; }