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 8template<class T> struct A 9{ 10 void f(T); 11}; 12 13class C { 14 int i; 15 template<class T> friend void A<T>::f(T); 16}; 17 18template<class T> struct A<T*> 19{ 20 void f(T*); 21}; 22 23template<> struct A<char> 24{ 25 void f(char); 26}; 27 28template<class T> void A<T>::f(T) 29{ 30 C c; 31 c.i = 0; 32} 33 34template<class T> void A<T*>::f(T*) 35{ 36 C c; 37 c.i = 0; 38} 39 40void A<char>::f(char) 41{ 42 C c; 43 c.i = 0; 44} 45 46int main() 47{ 48 A<int> a1; 49 a1.f(0); 50 A<int *> a2; 51 int *p = 0; 52 a2.f(p); 53 A<char> a3; 54 a3.f('a'); 55} 56