41template <BitEnum E>
constexpr auto operator&(E x, E y) {
return std::underlying_type_t<E>(x) & std::underlying_type_t<E>(y); }
42template <BitEnum E>
constexpr auto operator&(std::underlying_type_t<E> x, E y) {
return x & std::underlying_type_t<E>(y); }
43template <BitEnum E>
constexpr auto operator&( E x, std::underlying_type_t<E> y) {
return std::underlying_type_t<E>(x) & y ; }
44template <BitEnum E>
constexpr auto operator|( E x, E y) {
return std::underlying_type_t<E>(x) | std::underlying_type_t<E>(y); }
45template <BitEnum E>
constexpr auto operator|(std::underlying_type_t<E> x, E y) {
return x | std::underlying_type_t<E>(y); }
46template <BitEnum E>
constexpr auto operator|( E x, std::underlying_type_t<E> y) {
return std::underlying_type_t<E>(x) | y ; }
47template <BitEnum E>
constexpr auto operator^( E x, E y) {
return std::underlying_type_t<E>(x) ^ std::underlying_type_t<E>(y); }
48template <BitEnum E>
constexpr auto operator^(std::underlying_type_t<E> x, E y) {
return x ^ std::underlying_type_t<E>(y); }
49template <BitEnum E>
constexpr auto operator^( E x, std::underlying_type_t<E> y) {
return std::underlying_type_t<E>(x) ^ y ; }
50template <BitEnum E>
constexpr std::strong_ordering
operator<=>(std::underlying_type_t<E> x, E y) {
return x <=> std::underlying_type_t<E>(y); }
51template <BitEnum E>
constexpr std::strong_ordering
operator<=>(E x, std::underlying_type_t<E> y) {
return std::underlying_type_t<E>(x) <=> y; }
52template <BitEnum E>
constexpr bool operator==(std::underlying_type_t<E> x, E y) {
return x == std::underlying_type_t<E>(y); }
53template <BitEnum E>
constexpr bool operator!=(std::underlying_type_t<E> x, E y) {
return x != std::underlying_type_t<E>(y); }
54template <BitEnum E>
constexpr bool operator==(E x, std::underlying_type_t<E> y) {
return std::underlying_type_t<E>(x) == y; }
55template <BitEnum E>
constexpr bool operator!=(E x, std::underlying_type_t<E> y) {
return std::underlying_type_t<E>(x) != y; }
constexpr bool operator==(std::underlying_type_t< E > x, E y)
constexpr std::strong_ordering operator<=>(std::underlying_type_t< E > x, E y)
constexpr auto operator^(E x, E y)
constexpr auto operator|(E x, E y)
constexpr bool operator!=(std::underlying_type_t< E > x, E y)
constexpr bool is_bit_enum_v
constexpr auto operator&(E x, E y)