1 // { dg-do compile } 2 3 // Copyright (C) 2003 Free Software Foundation 4 // Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 5 6 // Member function of class template as friend 7 // Erroneous case: mismatch during declaration 8 9 template <class T> struct A { // { dg-message "defined here" } 10 template <class U> void f(U); // { dg-message "candidate" } 11 void g(); // { dg-message "candidate" } 12 void h(); // { dg-message "candidate" } 13 void i(int); // { dg-message "candidate" } 14 }; 15 16 class C { 17 int ii; 18 template <class U> 19 friend void A<U>::f(U); // { dg-error "no declaration matches" } 20 template <class U> template <class V> 21 friend void A<U>::g(); // { dg-error "no declaration matches" } 22 template <class U> 23 friend int A<U>::h(); // { dg-error "no declaration matches" } 24 template <class U> 25 friend void A<U>::i(char); // { dg-error "no declaration matches" } 26 }; 27