Проверьте, содержит ли класс Enum определенный идентификаторC++

Программы на C++. Форум разработчиков
Anonymous
Проверьте, содержит ли класс Enum определенный идентификатор

Сообщение Anonymous »

Я немного искал здесь, так и был удивительным, что я не нашел ни одного подобного вопроса. Рад за любые подсказки на случай, если на него уже ответили. Некоторые из них указывают константу TotalNum, как < /p>

Код: Выделить всё

enum class Foo : int
{
a,
b,
c,

totalNum
}
< /code>
У других нет этого, как < /p>
enum class Bar : bool
{
oneOption,
otherOption
}
< /code>
Тогда у меня есть функция, в основном такая, что < /p>
template 
EnumClassType typeToEnum (typename std::underlying_type::type value)
{
// If you hit this assertion, the value is outside of the valid enum range
assert (isPositiveAndBelow (value, decltype (value) (EnumClassType::totalNum)));

return EnumClassType (value);
}
Хотя это работает и имеет смысл для перечисления с указанностью TotalNum , я бы хотел пропустить это утверждение на случай, если в переводе нет такого идентификатора. Есть ли способ сделать это? Кодовая база в настоящее время использует C ++ 14, но решения C ++ 17 также приветствуются из -за предстоящего изменения компилятора.

Подробнее здесь: https://stackoverflow.com/questions/684 ... -identfier

Вернуться в «C++»