If a class name (
[class.name]) or enumeration name (
[dcl.enum]) and
a variable, data member, function, or enumerator
are declared in the same declarative region (in any order) with the
same name (excluding declarations made visible
via
using-directives (
[basic.lookup.unqual])),
the class or enumeration name is hidden wherever the variable, data member,
function, or enumerator name is visible
.