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