Scoped Enums (enum class)
Scoped enums were introduced in C++11 to provide type-safe enumerations with controlled scope. They avoid implicit conversions to integers and prevent name collisions.
Unscoped vs Scoped
enum ColorOld { Red, Green, Blue }; // unscoped
enum class Color { Red, Green, Blue }; // scoped
enum class Status : int { Ok = 0, Error = 1 };
Key Differences
enum classmembers are scoped:Color::Red- No implicit conversion to
int - Underlying type can be specified explicitly
Converting to Integer
Color c = Color::Green;
int x = static_cast<int>(c);
Why Use Scoped Enums
- Improved type safety
- Cleaner APIs
- Fewer accidental bugs from implicit conversions
[!NOTE] Prefer
enum classin modern C++ unless you specifically need legacy unscoped behavior.