#include <iostream>
class B
{
int b;
};
namespace A { class window; }
B f(A::window);
namespace A{
class window{
private:
int a;
// friend B ::f(window) ; //<<< Does not compile!
friend B (::f(window)); //<<< Parentheses here to avoid compilation error
};
}
B f(A::window rhs){
std::cout << rhs.a << std::endl;
return B();
}
int main(void)
{
A::window w;
B b = f(w);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQgp7CiAgICBpbnQgYjsKfTsKCm5hbWVzcGFjZSBBIHsgY2xhc3Mgd2luZG93OyB9CgpCIGYoQTo6d2luZG93KTsKCm5hbWVzcGFjZSBBewogIGNsYXNzIHdpbmRvd3sKICAgIHByaXZhdGU6CiAgICBpbnQgYTsKLy8gIGZyaWVuZCBCICA6OmYod2luZG93KSA7IC8vPDw8IERvZXMgbm90IGNvbXBpbGUhCiAgICBmcmllbmQgQiAoOjpmKHdpbmRvdykpOyAvLzw8PCBQYXJlbnRoZXNlcyBoZXJlIHRvIGF2b2lkIGNvbXBpbGF0aW9uIGVycm9yCiAgfTsKfQoKQiBmKEE6OndpbmRvdyByaHMpewogIHN0ZDo6Y291dCA8PCByaHMuYSA8PCBzdGQ6OmVuZGw7CiAgcmV0dXJuIEIoKTsKfQoKCmludCBtYWluKHZvaWQpCnsKCUE6OndpbmRvdyB3OwoJQiBiID0gZih3KTsKfQ==