#include <iostream>
struct a {
enum LOCAL_A { A1, A2 };
};
enum class b { B1, B2 };
int foo(int input) { return input; }
int main(void) {
std::cout << foo(a::A1) << std::endl;
std::cout << foo(static_cast<int>(b::B2)) << std::endl;
}
Esto a::LOCAL_A
es lo que la enumeración fuertemente tipada está tratando de lograr, pero hay una pequeña diferencia: las enumeraciones normales se pueden convertir en un tipo entero, mientras que las enumeraciones fuertemente tipadas no pueden hacerlo sin una conversión.
Entonces, ¿hay alguna manera de convertir un valor de enumeración fuertemente tipado en un tipo entero sin conversión? Si es así, ¿cómo?