Моя путаница происходит из раздела "С++ Primer 5th edition" 13.3, стр. 518.
Очень осторожные читатели могут задаться вопросом, почему декларация
using
внутриswap
не скрывает объявления дляHasPtr
версииswap
.
Я попытался прочитать его ссылку, но до сих пор не понял почему. Может ли кто-нибудь объяснить это немного, пожалуйста? Благодарю. Вот пример кода вопроса.
Предположим, что класс Foo
имеет член с именем h
, который имеет тип HasPtr
.
void swap(HasPtr &lhs, HasPtr &rhs)
{...}
void swap(Foo &lhs, Foo &rhs)
{
using std::swap;
swap(lhs.h, rhs.h);
}
Почему swap
для HasPtr
не скрыт, который, кажется, объявлен во внешней области, а using std::swap
находится во внутренней области? Спасибо.