В C строго типизированные перечисления обеспечивают большую безопасность типов, чем традиционные перечисления. Однако, в отличие от традиционных перечислений, строго типизированные перечисления не могут быть неявно преобразованы в целочисленные типы.
Чтобы преобразовать строго типизированное значение перечисления E в целочисленный тип, требуется явное приведение типов, например:
int i = static_cast(b::B2);
Однако, если базовый тип перечисления неизвестен, можно использовать следующую функцию шаблона:
template
constexpr typename std::underlying_type::type to_underlying(E e) noexcept {
return static_cast::type>(e);
}
Теперь преобразование можно выполнить без явного указания базового типа:
std::cout Важно отметить, что это преобразование работает только для значений строго типизированных перечислений. Если в to_underlying() указано традиционное значение перечисления, возникнет ошибка.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3