Le cas d'utilisation le plus important pour les AVQ est pour les cas de ce genre.
namespace A
{
struct S {};
S operator+(const S&, const S&);
}
namespace B
{
A::S test()
{
A::S a, b;
return a + b;
}
}
Il est également utile pour sélectionner la fonction swap
correcte dans le code générique de sorte qu'il devrait appliquer non seulement aux operator
fonctions. C'est déjà une partie assez complexe de la norme, en faisant des règles qui l'empêchaient de fonctionner dans certains cas ajouterait plus de complexité, quel serait le gain?
Je ne peux pas trouver de façon claire de le demander explicitement qui serait significativement moins prolixe que d'appeler directement une fonction dans un espace de noms différent et qui, dans tous les cas, rendrait les expressions plus complexes. Vous pensez quelque chose comme: return [[ use_adl ]] (a + b);
return A::operator+(a, b);
?
Je n'y ai jamais pensé. Donc même je veux le savoir. Bonne question! – Nawaz