Каково полное имя функции друга, определенной внутри класса?
Недавно я увидел пример, аналогичный приведенному ниже. Каково полное имя val()
ниже?
#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;
}
Можно ли найти зависимый от аргумента поиск единственным способом val()
?
По общему признанию, это не связано с практической проблемой. Я просто хочу получить лучшее понимание.