Bitesize Modern C++: enum class--Glennan Carnie
A simple and complete explanation of the
enum:
Bitesize Modern C++: enum class
by Glennan Carnie
From the article:
Enumerated types in C++ give a trivial simulation of symbolic types – that is, objects whose instances have unique, human-readable values. In C++ enumerations are essentially named integers that are either assigned values implicitly by the compiler or explicitly by the programmer (or a combination of both)...

A nice "in a nutshell" about why you should run, not walk, to take advantage of move semantics: