Sì, è perfettamente corretto definire un enum all'interno di una funzione. Il tuo codice rappresenta la dichiarazione enum anonima perfettamente legale.
Gli edifici e le classi possono essere dichiarati all'interno di una funzione (e possono anche essere anonimi). L'unica limitazione con tipi dichiarati all'interno di una funzione (anziché nello spazio dei nomi o nell'ambito della classe) è che non possono essere utilizzati come parametri del modello.
more information on
Enumeration
C++ 11 in poi
Bene la limitazione per quanto riguarda i parametri di modello è stato cambiato da C++ 11, per ulteriori informazioni sui parametri di modello si possono trovare sul collegamento Template Parameters
è legale . assicurati che – nikniknik2016