У меня есть общий код, который работает с флагами, указанными с использованием типов С++ 11 enum class
. На одном шаге я хотел бы знать, установлен ли какой-либо из бит в флагове. В настоящее время я использую код:
if (flags != static_cast<E>(0)) // Works, but ugly.
Я также мог заставить пользователей указать конкретное имя для поля all-zero, которое более читаемо, но налагает мои соглашения об именах на всех, кто его использует:
if (flags != E::none) // Works, if you manually define none = 0.
Но ни одна из них не читается так хорошо, как традиционная:
if (flags) // Doesn't work with class enums.
Можно ли указать пользовательскую функцию для оценки перечисления класса в булевом контексте?