O tipo enum é composto de um ou mais constantes que são declaradas como seus membros. 
                Se os membros não forem iniciados, os valores iniciados 0 a N elementos é utilizado como padrão 
                e associado a cada elemento. 
            
            
                Se um membro for iniciado com um determinado valor, os membros seguintes sem terão seus 
                valores baseados nesse membro, sendo incrementando em 1 quando não possuam seus valores pre-definidos. 
            
            
                Abaixo, a sintaxes A e B mostram a definição de um enumerador e seu uso na declaração de uma 
                variável respectivamente. Na sintaxe A, os [valores] atribuídos são opcionais.
            
            Sintaxe A
            
enum nome_enum
{
  MEMBRO1 = [valor1], //0 padrão
  MEMBRO2 = [valor2], //1 padrão
  MEMBRON = [valorN]  //N padrão
};
            Sintaxe B
            enum nome_enum nome_variavel;
enum nome_enum nome_variavel= valor;
            
                Por serem constantes os membros de um enumerador, por boa práticas, seus nomes são declarados
                em caixa alta. Para nomes compostos, utilizar Snake Case.
            
            Exemplo 1
            
#include <iostream>
using namespace std;
enum valor_opcao
{
  ZERO,  UM,  DOIS,  TRES
};
int main ()
{
  enum valor_opcao opcao;
  return 0;
}
            
                Em C++, diferente enumeradores não podem ser ter seus membros declarados com nomes de membros 
                já utilizados em outros enumeradores.
            
            Exemplo 2
            
#include <iostream>
using namespace std;
enum enumerador1 { ELEMENTO1, ELEMENTO2, }
enum enumerador2 { ELEMENTO1,  ELEMENTO2  }
int main(void)
{
}
            Saída
            
main.cpp:6:20: error: ‘ELEMENTO1’ conflicts with a previous declaration
    6 | enum enumerador2 { ELEMENTO1,  ELEMENTO2  }
      |                    ^~~~~~~~~
main.cpp:4:20: note: previous declaration ‘enumerador1 ELEMENTO1’
            
                
Acessando membros
            
            
                O acesso aos membros de um enum ou enumerador, diferente de unions e struct, é feito pelo 
                próprio nome do membro:
            
            Sintaxe
            NOME_MEMBRO_ENUM;
            Exemplo 3
            
#include <iostream>
using namespace std;
enum valor_opcao
{
  ZERO,  UM,  DOIS,  TRES
};
int main ()
{
  enum valor_opcao opcao = TRES;
  cout << opcao;
  return 0;
}
            Saída
            
3