I heard a few people recommending to use enum classes in C++ because of their type safety.
But what does that really mean?
Because, as said in other answers, class enum are not implicitly convertible to int/bool, it also helps to avoid buggy code like:
enum MyEnum { Value1, Value2, }; ... if (var == Value1 || Value2) // Should be "var == Value2" no error/warning