Merge from mainline (165734:167278).
[official-gcc/graphite-test-results.git] / gcc / testsuite / g++.dg / template / memfriend12.C
blob77f8214003d876c3746ecbaab2df5620d69f7082
1 // { dg-do compile }
3 // Copyright (C) 2004 Free Software Foundation
4 // Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
6 // Nested class of class template as friend
8 template<class T> struct A
10   struct B
11   {
12     void f();
13   };
16 template <class U> class C {
17   int i;
18   template<class T> friend struct A<T>::B;
21 template<class T> struct A<T*>
23   struct B
24   {
25     void f();
26   };
29 template<> struct A<char>
31   struct B
32   {
33     void f();
34   };
37 template<class T> void A<T>::B::f()
39   C<int> c;
40   c.i = 0;
43 template<class T> void A<T*>::B::f()
45   C<int> c;
46   c.i = 0;
49 void A<char>::B::f()
51   C<int> c;
52   c.i = 0;
55 int main()
57   A<int>::B b1;
58   b1.f();
59   A<int *>::B b2;
60   b2.f();
61   A<char>::B b3;
62   b3.f();