Несколько причин предпочесть перечисления с классом (scoped) обычным перечислениям в C++:
- Безопасность типов. www.nextptr.com stackoverflow.com Скопированные перечисления не неявно преобразуются в целочисленные значения, что помогает предотвратить семантические ошибки. www.learncpp.com
- Избегание конфликтов имён. www.learncpp.com www.nextptr.com В отличие от обычных перечислений, у скопированных перечислители размещаются только в области видимости перечисления, что уменьшает загрязнение глобального пространства имён и вероятность конфликтов имён при использовании в глобальной области видимости. www.learncpp.com
- Возможность указать базовый тип перечисления. habr.com stackoverflow.com Для скопированных перечислений базовый тип по умолчанию определён в стандарте — int. habr.com
Таким образом, scoped перечисления решают большинство ограничений обычных перечислений: обеспечивают безопасность типов, чётко определяют базовый тип, решают проблемы с областью видимости и позволяют предварительно объявлять перечисления. stackoverflow.com