Ist es sicher, eine Enum-Klassenvariable auf eine Referenz des zugrunde liegenden Typs umzuinterpretieren?

Ich habe gesehenreinterpret_cast wird verwendet, um Inkrementierung auf Enum-Klassen anzuwenden, und ich möchte wissen, ob diese Verwendung in Standard-C ++ akzeptabel ist.

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))
{
    ...
}

Ich weiß, dass das Casting auf eine Referenz einer Basisklasse im Fall von Trivialklassen sicher ist. Da Enum-Klassen jedoch nicht implizit in ihre zugrunde liegenden Typen konvertiert werden, bin ich mir nicht sicher, ob und wie der obige Code in allen Compilern funktionieren würde. Irgendwelche Hinweise?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage