Как я могу использовать класс 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.

Можно ли указать пользовательскую функцию для оценки перечисления класса в логическом контексте?

Ответы на вопрос(7)

Ваш ответ на вопрос