1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
template <class T> class C; template <class T> struct S { template <class U> void f(U u) { C<U> cu; cu.i = 3; // ERROR - S<double>::f<U> is a friend, but this is // S<int>::f<double>. } }; template <class T> class C { template <class U> friend void S<T>::f(U); int i; // ERROR - private }; int main() { S<int> si; si.f(3.0); }