在类中定义的友元函数的完全限定名称是什么?
我最近看到一个类似于下面的例子。下面的完全限定名称是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()
可以找到的方法吗?
诚然,这并非源于实际问题。我只是想获得更好的理解。