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