Czy można bezpiecznie reinterpretować zmienną klasy enum do odwołania do typu bazowego?

widziałemreinterpret_cast używany do zastosowania przyrostu do klas wyliczeniowych i chciałbym wiedzieć, czy to użycie jest dopuszczalne w standardowym 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))
{
    ...
}

Wiem, że rzutowanie na referencję klasy bazowej jest bezpieczne w przypadku klas trywialnych. Ale ponieważ klasy wyliczeniowe nie są zdarzeniami niejawnie konwertowanymi na ich typy bazowe, nie jestem pewien, czy i jak powyższy kod byłby gwarantowany we wszystkich kompilatorach. Jakieś wskazówki?

questionAnswers(3)

yourAnswerToTheQuestion