Я пишу EnumSet
класс для проекта.Я хотел бы иметь метод EnumSet::AllOf()
, если это возможно, как в Java.Очевидный способ сделать это - перебрать каждый член std::underlying_type
и попробовать привести его к классу enum, затем перейти от первого элемента, где это возможно, к последнему.
Вы не являетесьучитывая, что является самым низким или самым высоким элементом перечисления, поэтому вы должны искать во всем пространстве.
Возможно ли это вообще?Если да, то как?
РЕДАКТИРОВАТЬ ДЛЯ ЯРКОСТИ: я ищу что-то вроде
try {
std::dynamic_cast<std::underlying_type<E>::type>(e);
return true; // Cast succeeded, enum is valid
} catch (SOME_KIND_OF_EXCEPTION e) {
return false; // Cast failed, enum is invalid
}