aboutsummaryrefslogtreecommitdiff
path: root/include/cru/common/Bitmask.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/common/Bitmask.h')
-rw-r--r--include/cru/common/Bitmask.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/include/cru/common/Bitmask.h b/include/cru/common/Bitmask.h
index bd6a8309..b1e8495e 100644
--- a/include/cru/common/Bitmask.h
+++ b/include/cru/common/Bitmask.h
@@ -1,6 +1,8 @@
#pragma once
#include "Base.h"
+#include <functional>
+
namespace cru {
template <typename Tag, typename TUnderlying = unsigned>
struct Bitmask final {
@@ -35,8 +37,19 @@ struct Bitmask final {
bool operator!=(Bitmask rhs) const { return this->value != rhs.value; }
explicit operator TUnderlying() const { return value; }
- operator bool() const { return value != 0; }
+ explicit operator bool() const { return value != 0; }
TUnderlying value;
};
} // namespace cru
+
+namespace std {
+template <typename Tag, typename TUnderlying>
+struct hash<cru::Bitmask<Tag, TUnderlying>> {
+ using Bitmask = cru::Bitmask<Tag, TUnderlying>;
+
+ std::size_t operator()(Bitmask bitmask) const {
+ return std::hash<TUnderlying>{}(bitmask.value);
+ }
+};
+} // namespace std