// { dg-do assemble } | |
template <class T> | |
class C; | |
template <class T> | |
struct S | |
{ | |
template <class U> | |
void f(U u) | |
{ | |
C<U> cu; | |
cu.i = 3; // { dg-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; // { dg-message "" } private | |
}; | |
int main() | |
{ | |
S<int> si; | |
si.f(3.0); | |
} |