Это рассматриваемый код, который появляется в §13.3 "C++ Primer", 5ed:
void swap(Foo &lhs, Foo &rhs)
{
using std::swap;
swap(lhs.h, rhs.h); // uses the HasPtr version of swap
// swap other members of type Foo
}
В книге упоминается явление, когда специфичный для класса своп не скрывается объявлением using, и отсылается читатель к §18.2.3:
Я прочитал этот раздел и понял, что это может быть связано с поиском, зависящим от аргумента (ADL). Ниже приводится выдержка:
Но у меня все же есть некоторая неясность в понимании. Мой вопрос: идет ли ADL до обычного поиска области или после обычного поиска области? Мое текущее понимание состоит в том, что ADL предшествует обычному поиску области, потому что в противном случае должен использоваться std::swap. Мне нужно подтверждение, если вы думаете, что я прав, или, пожалуйста, укажите, какую ошибку я совершил, если вы думаете, что я не прав. Спасибо.