OSDN Git Service

2010-02-21 Manuel López-Ibáñez <manu@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / template / memfriend3.C
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
8 template<class T> struct A
9 {
10   void f(T);
11 };
12
13 class C {
14   int i;
15   template<class T> friend void A<T>::f(T);
16 };
17
18 template<class T> struct A<T*>
19 {
20   void f(T*);
21 };
22
23 template<> struct A<char>
24 {
25   void f(char);
26 };
27
28 template<class T> void A<T>::f(T)
29 {
30   C c;
31   c.i = 0;
32 }
33
34 template<class T> void A<T*>::f(T*)
35 {
36   C c;
37   c.i = 0;
38 }
39
40 void A<char>::f(char)
41 {
42   C c;
43   c.i = 0;
44 }
45
46 int 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 }