22 template <
typename ENUM>
25 static_assert(std::is_enum<ENUM>::value,
"ENUM must be an enum type");
81 explicit operator bool() const noexcept
91 requires std::is_enum_v<E>
100 template <
typename E>
101 requires std::is_enum_v<E>
110 template <
typename E>
111 requires std::is_enum_v<E>
constexpr FlagEnum< E > operator~(E val)
Enables bitwise NOT for enum flags.
Definition flagnum.hpp:112
constexpr FlagEnum< E > operator|(E lhs, E rhs)
Enables bitwise OR for enum flags.
Definition flagnum.hpp:92
constexpr FlagEnum< E > operator&(E lhs, E rhs)
Enables bitwise AND for enum flags.
Definition flagnum.hpp:102
A utility wrapper for using scoped or unscoped enum types as bit flags.
Definition flagnum.hpp:24
typename std::underlying_type< ENUM >::type underlying_t
The underlying integral type used for bitwise operations.
Definition flagnum.hpp:28
FlagEnum()
Default constructor. Initializes with no flags set.
Definition flagnum.hpp:34
~FlagEnum()=default
Default destructor.
underlying_t mask
Bitmask storing the combined flag state.
Definition flagnum.hpp:31
FlagEnum(ENUM single_flag)
Constructs from a single enum flag.
Definition flagnum.hpp:37
FlagEnum(const FlagEnum &o)
Copy constructor.
Definition flagnum.hpp:40
constexpr bool operator==(ENUM maskValue) const noexcept
Equality comparison with an enum value.
Definition flagnum.hpp:72
constexpr FlagEnum & operator&=(ENUM maskValue)
Bitwise AND assignment with an enum value.
Definition flagnum.hpp:61
constexpr FlagEnum & operator|=(ENUM addValue)
Bitwise OR assignment with an enum value.
Definition flagnum.hpp:50