Quel est le nom complet d'une fonction ami définie à l'intérieur d'une classe?
J'ai récemment vu un exemple analogue au suivant. Quel est le nom complet qualifié de val()
ci-dessous?
#include <iostream>
namespace foo {
class A {
int x;
public:
A(int x = 0) : x(x) { }
friend int val(const A &a) { return a.x; }
};
}
int main() {
foo::A a(42);
// val() found using ADL:
std::cout << val(a) << std::endl;
// foo::val(a); // error: 'val' is not a member of 'foo'
// foo::A::val(a); // error: 'val' is not a member of 'foo::A'
return 0;
}
La recherche dépendante des arguments est-elle le seul moyen de trouver val()
?
Certes, cela ne découle pas d'un problème pratique. Je cherche simplement à mieux comprendre.