Compartilhar via


Pesquisa de nome dependente do argumento (Koenig) em funções

O compilador pode usar a pesquisa por nome dependente de argumento para localizar a definição de uma chamada de função não qualificada. A pesquisa por nome dependente de argumento também é chamada de pesquisa de Koenig. O tipo de cada argumento em uma chamada de função é definido dentro de uma hierarquia de namespaces, classes, estruturas, uniões ou modelos. Quando você especifica uma chamada de função postfix não qualificada, o compilador pesquisa pela definição de função na hierarquia associada a cada tipo de argumento.

Exemplo

No exemplo, o compilador nota que a função f() pega um argumento x. O argumento x é do tipo A::X, que é definido no namespace A. O compilador pesquisa o namespace A e encontra uma definição para a função f(), que usa um argumento do tipo A::X.

// argument_dependent_name_koenig_lookup_on_functions.cpp
namespace A
{
   struct X
   {
   };
   void f(const X&)
   {
   }
}
int main()
{
// The compiler finds A::f() in namespace A, which is where
// the type of argument x is defined. The type of x is A::X.
   A::X x;
   f(x);
}