- Una enumeración es solo un valor, no un valor. No tiene dirección.
- Una enumeración solo puede ser una constante de tiempo de compilación, no una constante de tiempo de ejecución.
- Las enumeraciones no agregan ningún engrosamiento al archivo de objeto.
- Las compilaciones compilan más rápido y usan menos memoria en tiempo de compilación. Usualmente es insignificante, pero si estás haciendo una metaprogramación lo suficientemente complicada, puede comenzar a importar.
En general, para las cosas que son constantes en tiempo de compilación en tiempo de ejecución en lugar de constantes, no hay desventaja de usar una enumeración, y tiene las ventajas de hacer sus intenciones absolutamente claro y ser marginalmente más eficiente.
Editar: Otro caso de uso para enumeraciones puede ser una desambiguación para el compilador si una función debe evaluarse en tiempo de ejecución o en tiempo de compilación. Si el resultado de una función se asigna a una variable de pila immutable
, la función se evaluará en tiempo de ejecución. Si utiliza un enum
en el mismo ámbito, el resultado se evaluará en tiempo de compilación.