Búsqueda de nombres dependientes de argumentos (Koenig) en las funciones

El compilador puede utilizar la búsqueda de nombres dependiente de argumentos para encontrar la definición de una llamada de función incompleta. La búsqueda de nombres dependiente de argumentos también se denomina búsqueda de Koenig. El tipo de cada argumento de una función se define dentro de una jerarquía de espacios de nombres, clases, estructuras, uniones o plantillas. Cuando se especifica una llamada de función postfija incompleta, el compilador busca la definición de función en la jerarquía asociada a cada tipo de argumento.

Ejemplo

En el ejemplo, el compilador observa que la función f() toma un argumento x. El argumento x es de tipo A::X, que se define en el espacio de nombres A. El compilador busca el espacio de nombres A y encuentra una definición para la función f() que acepta un argumento de 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);
}