I have some generic code that works with flags specified using C++11 enum class
types. At one step, I'd like to know if any of the bits in the flag are set. Currently, I'm using the code:
if (flags != static_cast<E>(0)) // Works, but ugly.
I could also force users to specify a particular name for an all-zero field, which is more readable but imposes my naming conventions on anyone using it:
if (flags != E::none) // Works, if you manually define none = 0.
But neither of these reads as nicely as the traditional:
if (flags) // Doesn't work with class enums.
Is it possible to specify a custom function to evaluate a class enum in a boolean context?
See Question&Answers more detail:os