summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--compat/enum-operators.hpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/compat/enum-operators.hpp b/compat/enum-operators.hpp
index cefebaf0..e7300239 100644
--- a/compat/enum-operators.hpp
+++ b/compat/enum-operators.hpp
@@ -5,17 +5,18 @@
#define OTR_FLAGS_OP2(type, op) \
inline type operator op (type a, type b) \
{ \
- using t__ = std::underlying_type_t<type>; \
- return static_cast<type>(t__((a)) op t__((b))); \
+ using t_ = std::underlying_type_t<type>; \
+ return type(t_((a)) op t_((b))); \
} // end
-#define OTR_FLAGS_SHIFT(type, op) \
- type operator op (type, unsigned) = delete
+#define OTR_FLAGS_DELETE_SHIFT(type, op) \
+ template<typename u> \
+ type operator op (type, u) = delete // end
#define OTR_FLAGS_OP1(type, op) \
inline type operator op (type x) \
{ \
- using t__ = std::underlying_type_t<type>; \
+ using t_ = std::underlying_type_t<type>; \
return type(op t_((x))); \
} // end