#include <iostream>
namespace N {
class C;
int f(const C&);
class C {
public:
friend int f(const C& c)
{
std::cout << __PRETTY_FUNCTION__ << '\n';
return 1;
}
friend int g(const C& c)
{
std::cout << __PRETTY_FUNCTION__ << '\n';
return 2;
}
};
class D {
public:
void f()
{
g(C{}); //ADL finds this
N::f(C{}); //not found dispite full qualification
}
};
}
int main()
{
N::D d;
d.f();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKbmFtZXNwYWNlIE4gewogICAgCiAgICBjbGFzcyBDOwogICAgaW50IGYoY29uc3QgQyYpOwogICAgCiAgICBjbGFzcyBDIHsKICAgIHB1YmxpYzoKICAgICAgICBmcmllbmQgaW50IGYoY29uc3QgQyYgYykKICAgICAgICB7CiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBfX1BSRVRUWV9GVU5DVElPTl9fIDw8ICdcbic7CiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmcmllbmQgaW50IGcoY29uc3QgQyYgYykKICAgICAgICB7CiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBfX1BSRVRUWV9GVU5DVElPTl9fIDw8ICdcbic7CiAgICAgICAgICAgIHJldHVybiAyOwogICAgICAgIH0KICAgIH07CiAgICAKICAgIGNsYXNzIEQgewogICAgcHVibGljOgogICAgICAgIHZvaWQgZigpCiAgICAgICAgewogICAgICAgICAgICBnKEN7fSk7ICAgICAvL0FETCBmaW5kcyB0aGlzCiAgICAgICAgICAgIE46OmYoQ3t9KTsgIC8vbm90IGZvdW5kIGRpc3BpdGUgZnVsbCBxdWFsaWZpY2F0aW9uCiAgICAgICAgfQogICAgfTsKfQoKaW50IG1haW4oKQp7CiAgICBOOjpEIGQ7CiAgICBkLmYoKTsKfQ==