1 // { dg-do compile { target c++11 } }
2 
f(T)3 template <class T, class = typename T::I> void f(T) {}
g(T)4 template <class T, class = typename T::I> void g(T) {}
h(T)5 template <class T, class = typename T::I> void h(T) {}
i(T)6 template <class T, class = typename T::I> void i(T) {}
j(T)7 template <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()18 int 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