Detectando se converter um int para uma enum resulta em um valor não enumerado
Digamos que eu tenho algo parecido com isto:
enum CardColor { HEARTS, DIAMONDS, CLUBS, SPADES};
CardColor MyColor = static_cast<CardColor>(100);
Existe uma maneira (simples) de detectar, em tempo de compilação ou em tempo de execução, que o valor deMyColor
não corresponde a nenhum valor enumerado?
E de maneira mais geral, se os valores de enumeração não estiverem se seguindo, por exemplo:
enum CardColor { HEARTS = 0, DIAMONDS, CLUBS = 4, SPADES};