É 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?