1 // { dg-do compile { target c++11 } } 2 f(T)3template <class T, class = typename T::I> void f(T) {} g(T)4template <class T, class = typename T::I> void g(T) {} h(T)5template <class T, class = typename T::I> void h(T) {} i(T)6template <class T, class = typename T::I> void i(T) {} j(T)7template <class T, class = typename T::I> void j(T) {} // { dg-error "this context" } 8 9 class A 10 { 11 typedef int I; // { dg-message "private" } 12 template <class T, class> friend void f(T); 13 friend void g<A,I>(A); 14 friend void h<A>(A); 15 friend void i<>(A); 16 }; 17 main()18int main() 19 { 20 A a; 21 f(a); 22 g(a); 23 h(a); 24 i(a); 25 j(a); // { dg-error "no match" } 26 } 27