Поиск, зависящий от аргументов, также ищет только пространства имен или классы?

Я читал книгу шаблонов Josuttis, и я пытался сосредоточиться на ADL. Он говорит, что «ADL продолжает поиск имени в пространствах имен и классах», связанных с «quot; типы аргументов вызова & quot ;. Я просто пытаюсь понять, как это работает, ища имя в классе. Я положил пример моего теста ниже. Я вижу, как выглядит имя в пространстве имен.

class bryan_ns {
  public:
  class bryan {
    public:
      enum E { e1 };
      static void bryan_test() { std::cout << __PRETTY_FUNCTION__ << std::endl; }
  };

  void f(bryan::E) { std::cout << __PRETTY_FUNCTION__ << std::endl; }
};

void f(int)
{
  std::cout << "::f(int) called\n";
}


int main()
{
  f(bryan_ns::bryan::e1); // calls ::f(int)
}

Но если я изменю bryan_ns на пространство имен примерно так:

namespace bryan_ns {
  public:
  class bryan {
    public:
      enum E { e1 };
      static void bryan_test() { std::cout << __PRETTY_FUNCTION__ << std::endl; }
  };

  void f(bryan::E) { std::cout << __PRETTY_FUNCTION__ << std::endl; }
};

void f(int)
{
  std::cout << "::f(int) called\n";
}


int main()
{
  f(bryan_ns::bryan::e1); // calls bryan_ns::f(bryan::E)
}

Ответы на вопрос(2)

Ваш ответ на вопрос