If a class or enumeration name and a variable, data member, function,
or enumerator are declared in the same scope (in any order) with the
same name, the class or enumeration name is hidden wherever the variable, data member,
function, or enumerator name is visible
.