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