Detectar si convertir un int en una enumeración da como resultado un valor no enumerado
Digamos que tengo algo como esto:
enum CardColor { HEARTS, DIAMONDS, CLUBS, SPADES};
CardColor MyColor = static_cast<CardColor>(100);
¿Hay alguna forma (simple) de detectar, ya sea en tiempo de compilación o en tiempo de ejecución, que el valor deMyColor
no corresponde a ningún valor enumerado?
Y más generalmente, si los valores de enumeración no se siguen entre sí, por ejemplo:
enum CardColor { HEARTS = 0, DIAMONDS, CLUBS = 4, SPADES};