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?