Recherche de nom qui dépend de l’argument (Koenig) sur les fonctions

Le compilateur peut utiliser la recherche de nom dépendante d’un argument pour rechercher la définition d’un appel de fonction non qualifié. La recherche de nom dépendante d'un argument est également appelée recherche Koenig. Le type de chaque argument dans un appel de fonction est défini dans une hiérarchie d’espaces de noms, de classes, de structures, d’unions ou de modèles. Lorsque vous spécifiez un appel de fonction postfix non qualifié, le compilateur recherche la définition de fonction dans la hiérarchie associée à chaque type d’argument.

Exemple

Dans l’exemple, le compilateur note que la fonction f() prend un argument x. L’argument x est de type A::X, qui est défini dans l’espace de noms A. Le compilateur recherche l'espace de noms A et trouve une définition pour la fonction f() qui prend un argument de type 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);
}