stlab-enum-ops 1.1.0
Type-safe operators for enums
Loading...
Searching...
No Matches
Bitmask Operations

Bitwise operations for bitmask-enabled enums. More...

Functions

template<class T>
constexpr auto operator& (T lhs, T rhs) -> std::enable_if_t< stlab::has_enabled_bitmask< T >, T >
 Bitwise AND for bitmask-enabled enums; returns the same enum type.
template<class T>
constexpr auto operator~ (T a) -> std::enable_if_t< stlab::has_enabled_bitmask< T >, T >
 Bitwise NOT for bitmask-enabled enums; returns the same enum type.
template<class T>
constexpr auto operator| (T lhs, T rhs) -> std::enable_if_t< stlab::has_enabled_bitmask< T >, T >
 Bitwise OR for bitmask-enabled enums.
template<class T>
constexpr auto operator^ (T lhs, T rhs) -> std::enable_if_t< stlab::has_enabled_bitmask< T >, T >
 Bitwise XOR for bitmask-enabled enums.
template<class T>
constexpr auto operator<< (T lhs, std::size_t rhs) -> std::enable_if_t< stlab::has_enabled_bitmask< T >, T >
 Left shift for bitmask-enabled enums.
template<class T>
constexpr auto operator>> (T lhs, std::size_t rhs) -> std::enable_if_t< stlab::has_enabled_bitmask< T >, T >
 Right shift for bitmask-enabled enums.
template<class T>
constexpr auto operator^= (T &lhs, T rhs) -> std::enable_if_t< stlab::has_enabled_bitmask< T >, T & >
 XOR-assign for bitmask-enabled enums.
template<class T>
constexpr auto operator&= (T &lhs, T rhs) -> std::enable_if_t< stlab::has_enabled_bitmask< T >, T & >
 AND-assign for bitmask-enabled enums.
template<class T>
constexpr auto operator|= (T &lhs, T rhs) -> std::enable_if_t< stlab::has_enabled_bitmask< T >, T & >
 OR-assign for bitmask-enabled enums.
template<class T>
constexpr auto operator<<= (T &lhs, std::size_t rhs) -> std::enable_if_t< stlab::has_enabled_bitmask< T >, T & >
 Left shift-assign for bitmask-enabled enums.
template<class T>
constexpr auto operator>>= (T &lhs, std::size_t rhs) -> std::enable_if_t< stlab::has_enabled_bitmask< T >, T & >
 Right shift-assign for bitmask-enabled enums.
template<class T, class U>
constexpr auto operator- (T lhs, U rhs) -> std::enable_if_t< stlab::has_enabled_bitmask< T > &&stlab::is_compatible_scalar< U, T >, T >
 Subtracts a 0 or 1 scalar value from a bitmask-enabled enum. Allows expressions like e & (e - 1) to clear the least set bit.
template<class T>
constexpr auto operator- (std::nullptr_t lhs, T rhs) -> std::enable_if_t< stlab::has_enabled_bitmask< T >, T >
 Subtracts a bitmask-enabled enum from 0 0 - rhs is equivalent to -rhs.
template<class T, class U>
constexpr auto operator+ (T lhs, U rhs) -> std::enable_if_t< stlab::has_enabled_bitmask< T > &&stlab::is_compatible_scalar< U, T >, T >
 Adds a 0 or 1 scalar value to a bitmask-enabled enum. Allows expressions like e & (e + 1) to clear trailing set bits.
template<class U, class T>
constexpr auto operator+ (U lhs, T rhs) -> std::enable_if_t< stlab::has_enabled_bitmask< T > &&stlab::is_compatible_scalar< U, T >, T >
 Adds a bitmask-enabled enum to 0 or 1. Allows expressions like e & (1 + e) to clear trailing set bits.

Detailed Description

Bitwise operations for bitmask-enabled enums.

These operations are available when you enable bitmask operations by defining:

auto stlab_enable_bitmask_enum(YourEnum) -> std::true_type;