Этот пример неверен, потому что объявление enum должно включать либо тип нижележащего элемента, либо список элементов. Это также означает, что его нельзя комбинировать с объявлением переменной. исправленный вариант:
enum ens: int; // ens is a complete type at this point
enum ens en1, en2, en3; // en1 en2 en3 are global variables of enum ens type
// alternative "traditional" enum definition with empty list of items:
enum ens{} en1, en2, en3;
int n = en2;
делает n
равным 0, потому что en2
является глобальной переменной и неявно инициализируется с 0.