From 089f188a5b68c87f2be32b465624841fd3c2b44f Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Mon, 31 Oct 2022 15:30:23 +0100 Subject: shortcuts work --- compat/enum-bitset.hpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'compat') diff --git a/compat/enum-bitset.hpp b/compat/enum-bitset.hpp index 1365b3fb..0a1f91e4 100644 --- a/compat/enum-bitset.hpp +++ b/compat/enum-bitset.hpp @@ -4,16 +4,16 @@ namespace floormat { template -requires std::is_enum_v -struct enum_bitset : std::bitset<(std::size_t)Enum::MAX> { - using type = Enum; - static_assert(std::is_same_v>>); - static_assert(std::is_same_v>); - using std::bitset<(std::size_t)Enum::MAX>::bitset; - constexpr bool operator[](Enum x) const { return operator[]((std::size_t)x); } - constexpr decltype(auto) operator[](Enum x) { - return std::bitset<(std::size_t)Enum::MAX>::operator[]((std::size_t)x); - } +requires (std::is_enum_v && std::is_same_v>>) +struct enum_bitset : std::bitset { + using enum_type = Enum; + using value_type = std::underlying_type_t; + + static constexpr auto COUNT = std::size_t{value_type(Enum::COUNT)}; + + using std::bitset::bitset; + constexpr bool operator[](Enum x) const { return std::bitset::operator[](std::size_t{value_type(x)}); } + constexpr decltype(auto) operator[](Enum x) { return std::bitset::operator[](std::size_t{value_type(x)}); } }; } // namespace floormat -- cgit v1.2.3