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

Converting to Integer

Color c = Color::Green;
int x = static_cast<int>(c);

Why Use Scoped Enums

[!NOTE] Prefer enum class in modern C++ unless you specifically need legacy unscoped behavior.