Template Struct Flags

Struct Documentation

template<typename Enum>
struct Flags

Treat an enumeration, scoped and unscoped, like a set of flags.

For scoped enumerations, there are optional bitwise operators available that can be enabled by declaring a function within the namespace of the enumeration (here Enum):

Enum mir_enable_enum_bit_operators(Enum);

Public Types

using value_type = typename std::underlying_type<Enum>::type

Public Functions

inline explicit constexpr Flags(value_type flag_value = 0) noexcept
inline constexpr Flags(Enum flag_value) noexcept
inline constexpr Flags<Enum> operator|(Flags<Enum> other) const noexcept
inline constexpr Flags<Enum> operator&(Flags<Enum> other) const noexcept
inline constexpr Flags<Enum> operator^(Flags<Enum> other) const noexcept
inline Flags<Enum> &operator|=(Flags<Enum> other) noexcept
inline Flags<Enum> operator&=(Flags<Enum> other) noexcept
inline Flags<Enum> operator^=(Flags<Enum> other) noexcept
inline constexpr bool operator==(Flags<Enum> other) const noexcept
inline constexpr bool operator!=(Flags<Enum> other) const noexcept
inline constexpr value_type value() const noexcept