summaryrefslogtreecommitdiffhomepage
path: root/compat/enum-bitset.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'compat/enum-bitset.hpp')
-rw-r--r--compat/enum-bitset.hpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/compat/enum-bitset.hpp b/compat/enum-bitset.hpp
new file mode 100644
index 00000000..bf705138
--- /dev/null
+++ b/compat/enum-bitset.hpp
@@ -0,0 +1,17 @@
+#pragma once
+#include <bitset>
+
+namespace Magnum::Examples {
+
+template<typename Enum>
+struct enum_bitset : std::bitset<(std::size_t)Enum::MAX> {
+ static_assert(std::is_same_v<std::size_t, std::common_type_t<std::size_t, std::underlying_type_t<Enum>>>);
+ static_assert(std::is_same_v<Enum, std::decay_t<Enum>>);
+ 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);
+ }
+};
+
+} // namespace Magnum::Examples