- Wyliczenie jest tylko wartością, a nie l-wartością. Nie ma adresu.
- Wyliczenie może być tylko stałą czasu kompilacji, a nie stałą czasu wykonywania.
- Wyliczenia nie dodają żadnego przyduszenia do pliku obiektu.
- Enums kompiluje się szybciej i zużywa mniej pamięci podczas kompilacji. Zwykle jest to pomijalne, ale jeśli robisz wystarczająco skomplikowane metaprogramowanie, może zacząć mieć znaczenie.
W ogóle, do rzeczy, które są stałe w czasie kompilacji, a nie z czasem przebiegu stałe, nie ma wadą przy użyciu enum, a to ma zalety dokonywania intencje absolutnie jasne i jest nieznacznie bardziej wydajne.
Edycja: Jeden inny przypadek użycia dla wyliczeń może uwiarygodniać kompilatorowi, czy funkcja powinna być oceniana w czasie wykonywania lub czasie kompilacji. Jeśli wynik funkcji zostanie przypisany do zmiennej stosu immutable
, funkcja zostanie oceniona w czasie wykonywania. Jeśli użyjesz enum
w tym samym zakresie, wynik zostanie oceniony podczas kompilacji.