diff options
Diffstat (limited to 'compat/enum-operators.hpp')
-rw-r--r-- | compat/enum-operators.hpp | 11 |
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 |