Безопасно ли повторно интерпретировать переменную класса enum для ссылки на базовый тип?
я виделreinterpret_cast
используется для применения приращения к перечисляемым классам, и я хотел бы знать, приемлемо ли это использование в стандарте C ++.
enum class Foo : int8_t
{
Bar1,
Bar2,
Bar3,
Bar4,
First = Bar1,
Last = Bar4
};
for (Foo foo = Foo::First; foo <= Foo::Last; ++reinterpret_cast<int8_t &>(foo))
{
...
}
Я знаю, что приведение к ссылке на базовый класс безопасно в случае тривиальных классов. Но поскольку enum-классы не являются событиями, неявно преобразуемыми в их базовые типы, я не уверен, будет ли гарантированно работать вышеуказанный код во всех компиляторах. Есть какие-нибудь подсказки?