1// { dg-do assemble } 2 3template <class T> struct A { 4 static void f(); 5}; 6 7template <class T> class B 8{ 9 friend class A<T>; 10 static int i; // { dg-error "" } private 11}; 12 13template <class T> class C 14{ 15 template <class U> 16 friend class A; 17 18 static int i; 19}; 20 21template <class T> 22void A<T>::f() 23{ 24 B<T>::i = 3; 25 C<T>::i = 3; 26 C<double>::i = 3; 27 B<double>::i = 3; // { dg-error "" } member `i' is private 28} 29 30template void A<int>::f(); 31