A pesquisa dependente de argumentos só procura namespaces ou classes também?

Eu tenho lido o livro de modelos Josuttis, e tenho tentado colocar minha cabeça em torno do ADL. Ele diz que "ADL procede procurando o nome em namespaces e classes" associado com "os tipos de argumentos de chamada". Eu estou apenas tentando ver como funciona procurar o nome em uma aula. Eu coloquei um exemplo do meu teste abaixo. Eu vejo como ele procura o nome em um namespace.

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)
}

Mas se eu mudar o bryan_ns para um namespace da seguinte forma:

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)
}