template<class A> struct S {
template<class B> friend S<B> f(B);
};
template<class B> S<B> f(B) {return S<B>{};}
int main() {
f(5);
}
dGVtcGxhdGU8Y2xhc3MgQT4gc3RydWN0IFMgewoJdGVtcGxhdGU8Y2xhc3MgQj4gZnJpZW5kIFM8Qj4gZihCKTsKfTsKCnRlbXBsYXRlPGNsYXNzIEI+IFM8Qj4gZihCKSB7cmV0dXJuIFM8Qj57fTt9CgppbnQgbWFpbigpIHsKCWYoNSk7Cn0=