OSDN Git Service

PR c++/9335
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / template / memfriend17.C
1 // { dg-do compile }
2
3 // Origin: Giovanni Bajo <giovannibajo@libero.it>
4
5 // PR c++/13495: Nested class as template friend.
6
7 template<typename T>
8 class A{
9 public:
10     class B
11     {
12         void func1(void);
13         void func2(void);
14     };
15 };
16
17 template<typename Q>
18 class F1
19 {
20     friend class A<Q>::B;
21     enum { foo = 0 };   // { dg-error "private" }
22 };
23
24 template<typename Q>
25 class F2
26 {
27     template<typename T>
28     friend class A<T>::B;
29     enum { foo = 0 };
30 };
31
32 template <typename T>
33 void A<T>::B::func1(void)
34 {
35     (void)F1<T>::foo;
36     (void)F2<T>::foo;
37 }
38
39 template <typename T>
40 void A<T>::B::func2(void)
41 {
42     (void)F1<T*>::foo;  // { dg-error "context" }
43     (void)F2<T*>::foo;
44 }
45
46 template class A<int>;  // { dg-message "instantiated" }