7#ifndef SkEnumOperators_DEFINED
8#define SkEnumOperators_DEFINED
16std::enable_if_t<sknonstd::is_bitmask_enum<E>::value,
bool>
constexpr Any(
E e) {
17 return static_cast<std::underlying_type_t<E>
>(e) != 0;
22std::enable_if_t<sknonstd::is_bitmask_enum<E>::value,
E>
constexpr operator|(
E l,
E r) {
23 using U = std::underlying_type_t<E>;
24 return static_cast<E>(
static_cast<U
>(l) |
static_cast<U
>(r));
28std::enable_if_t<sknonstd::is_bitmask_enum<E>::value,
E&>
constexpr operator|=(
E& l,
E r) {
33std::enable_if_t<sknonstd::is_bitmask_enum<E>::value,
E>
constexpr operator&(
E l,
E r) {
34 using U = std::underlying_type_t<E>;
35 return static_cast<E>(
static_cast<U
>(l) &
static_cast<U
>(r));
39std::enable_if_t<sknonstd::is_bitmask_enum<E>::value,
E&>
constexpr operator&=(
E& l,
E r) {
44std::enable_if_t<sknonstd::is_bitmask_enum<E>::value,
E>
constexpr operator^(
E l,
E r) {
45 using U = std::underlying_type_t<E>;
46 return static_cast<E>(
static_cast<U
>(l) ^
static_cast<U
>(r));
50std::enable_if_t<sknonstd::is_bitmask_enum<E>::value,
E&>
constexpr operator^=(
E& l,
E r) {
55std::enable_if_t<sknonstd::is_bitmask_enum<E>::value,
E>
constexpr operator~(
E e) {
56 return static_cast<E>(~static_cast<std::underlying_type_t<E>>(e));
std::enable_if_t< sknonstd::is_bitmask_enum< E >::value, E > constexpr operator&(E l, E r)
std::enable_if_t< sknonstd::is_bitmask_enum< E >::value, E & > constexpr operator&=(E &l, E r)
std::enable_if_t< sknonstd::is_bitmask_enum< E >::value, E & > constexpr operator^=(E &l, E r)
std::enable_if_t< sknonstd::is_bitmask_enum< E >::value, E > constexpr operator~(E e)
std::enable_if_t< sknonstd::is_bitmask_enum< E >::value, E > constexpr operator|(E l, E r)
std::enable_if_t< sknonstd::is_bitmask_enum< E >::value, E & > constexpr operator|=(E &l, E r)
std::enable_if_t< sknonstd::is_bitmask_enum< E >::value, E > constexpr operator^(E l, E r)
std::enable_if_t< sknonstd::is_bitmask_enum< E >::value, bool > constexpr Any(E e)