diff options
Diffstat (limited to 'src/common')
| -rw-r--r-- | src/common/common_funcs.h | 16 | 
1 files changed, 16 insertions, 0 deletions
diff --git a/src/common/common_funcs.h b/src/common/common_funcs.h index 1e74d6930..4c1e29de6 100644 --- a/src/common/common_funcs.h +++ b/src/common/common_funcs.h @@ -61,6 +61,14 @@ __declspec(dllimport) void __stdcall DebugBreak(void);          using T = std::underlying_type_t<type>;                                                    \          return static_cast<type>(static_cast<T>(a) ^ static_cast<T>(b));                           \      }                                                                                              \ +    [[nodiscard]] constexpr type operator<<(type a, type b) noexcept {                             \ +        using T = std::underlying_type_t<type>;                                                    \ +        return static_cast<type>(static_cast<T>(a) << static_cast<T>(b));                          \ +    }                                                                                              \ +    [[nodiscard]] constexpr type operator>>(type a, type b) noexcept {                             \ +        using T = std::underlying_type_t<type>;                                                    \ +        return static_cast<type>(static_cast<T>(a) >> static_cast<T>(b));                          \ +    }                                                                                              \      constexpr type& operator|=(type& a, type b) noexcept {                                         \          a = a | b;                                                                                 \          return a;                                                                                  \ @@ -73,6 +81,14 @@ __declspec(dllimport) void __stdcall DebugBreak(void);          a = a ^ b;                                                                                 \          return a;                                                                                  \      }                                                                                              \ +    constexpr type& operator<<=(type& a, type b) noexcept {                                        \ +        a = a << b;                                                                                \ +        return a;                                                                                  \ +    }                                                                                              \ +    constexpr type& operator>>=(type& a, type b) noexcept {                                        \ +        a = a >> b;                                                                                \ +        return a;                                                                                  \ +    }                                                                                              \      [[nodiscard]] constexpr type operator~(type key) noexcept {                                    \          using T = std::underlying_type_t<type>;                                                    \          return static_cast<type>(~static_cast<T>(key));                                            \  | 
