6 Basic concepts [basic]

6.3 Scope [basic.scope]

6.3.10 Name hiding [basic.scope.hiding]

Имя может быть скрыто явным объявлением того же имени во вложенной декларативной области или производном классе ([class.member.lookup]).

class name Или enumeration name могут быть скрыты по имени переменной, члена данных, функции или счетчику , объявленного в том же объеме. Если имя класса или перечисления и переменная, член данных, функция или перечислитель объявлены в одной и той же области (в любом порядке) с одним и тем же именем, имя класса или перечисления скрыто везде, где переменная, член данных, функция или имя перечислителя видно.

В определении функции-члена объявление имени в области видимости блока скрывает объявление члена класса с тем же именем; см [basic.scope.class]. Объявление члена в a derived class скрывает объявление члена одноименного базового класса; см [class.member.lookup].

Во время поиска имени, уточненного именем пространства имен, объявления, которые в противном случае стали бы видимыми с помощью a, using-directiveмогут быть скрыты объявлениями с тем же именем в пространстве имен, содержащем using-directive; см [namespace.qual].

Если имя находится в области видимости и не скрыто, оно считается скрытым visible.