É seguro reinterpret_cast uma variável de classe enum para uma referência do tipo subjacente?

eu tenho vistoreinterpret_cast usado para aplicar incrementação a classes enum e gostaria de saber se esse uso é aceitável no C ++ padrão.

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

Eu sei que a conversão para uma referência de uma classe base é segura no caso de classes triviais. Mas como as classes enum não são eventos convertidos implicitamente em seus tipos subjacentes, não tenho certeza se e como o código acima teria a garantia de funcionar em todos os compiladores. Alguma pista?

questionAnswers(3)

yourAnswerToTheQuestion