diff --git a/include/Nazara/Core/Flags.hpp b/include/Nazara/Core/Flags.hpp index e87d21158..2211a9d9f 100644 --- a/include/Nazara/Core/Flags.hpp +++ b/include/Nazara/Core/Flags.hpp @@ -18,33 +18,29 @@ namespace Nz { }; + template struct IsEnumFlag : std::false_type {}; template struct IsEnumFlag::max)>> : std::true_type {}; + template - struct GetEnumAutoFlag : std::false_type - { - static constexpr bool value = true; - }; + struct GetEnumAutoFlag : std::integral_constant {}; template - struct GetEnumAutoFlag> : std::true_type - { - static constexpr bool value = T::AutoFlag; - }; + struct GetEnumAutoFlag> : std::integral_constant {}; template class Flags { - static_assert(std::is_enum::value, "Type must be an enumeration"); - static_assert(IsEnumFlag::value, "Enum has not been enabled as flags by an EnumAsFlags specialization"); + static_assert(std::is_enum_v, "Type must be an enumeration"); + static_assert(IsEnumFlag(), "Enum has not been enabled as flags by an EnumAsFlags specialization"); static_assert(std::is_same_v::max)>, E>, "EnumAsFlags field max should be of the same type as the enum"); static constexpr std::size_t MaxValue = static_cast(EnumAsFlags::max); - static constexpr bool AutoFlag = GetEnumAutoFlag::value; + static constexpr bool AutoFlag = GetEnumAutoFlag(); using BitField16 = std::conditional_t<(MaxValue >= 8), UInt16, UInt8>; using BitField32 = std::conditional_t<(MaxValue >= 16), UInt32, BitField16>;