We "discover" two (perhaps) novel C++ programming idioms, the Enum Literal idiom the Private Inherited Enum idiom by starting with Joshua Bloch's typesafe enum pattern for Java, then exploring ways to translate that into C++. C++ does have builtin enums, but they are not sufficiently typesafe for many peoples' taste, including mine. enum Suit { CLUBS, ... }; enum Suit x = CLUBS; // OK enum Suit y