#include <iostream>
struct B{};
B*foo(B*ptr);
struct A{friend B*foo(B*ptr){std::cout<<"impossible";return ptr;}};
int main(){
B*ptr;
foo(ptr);
//A::foo(ptr);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEJ7fTsKQipmb28oQipwdHIpOwpzdHJ1Y3QgQXtmcmllbmQgQipmb28oQipwdHIpe3N0ZDo6Y291dDw8ImltcG9zc2libGUiO3JldHVybiBwdHI7fX07CgppbnQgbWFpbigpewogIEIqcHRyOwogIGZvbyhwdHIpOwogIC8vQTo6Zm9vKHB0cik7CiAgcmV0dXJuIDA7Cn0=