Безопасно ли повторно интерпретировать переменную класса 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-классы не являются событиями, неявно преобразуемыми в их базовые типы, я не уверен, будет ли гарантированно работать вышеуказанный код во всех компиляторах. Есть какие-нибудь подсказки?

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

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