Update concepts branch to revision 131834
[official-gcc.git] / gcc / testsuite / g++.dg / template / memfriend17.C
blobfd26bc0171e17a71105156aa986f87db40c46e58
1 // { dg-do compile }
3 // Origin: Giovanni Bajo <giovannibajo@libero.it>
5 // PR c++/13495: Nested class as template friend.
7 template<typename T>
8 class A{
9 public:
10     class B
11     {
12         void func1(void);
13         void func2(void);
14     };
17 template<typename Q>
18 class F1
20     friend class A<Q>::B;
21     enum { foo = 0 };   // { dg-error "private" }
24 template<typename Q>
25 class F2
27     template<typename T>
28     friend class A<T>::B;
29     enum { foo = 0 };
32 template <typename T>
33 void A<T>::B::func1(void)
35     (void)F1<T>::foo;
36     (void)F2<T>::foo;
39 template <typename T>
40 void A<T>::B::func2(void)
42     (void)F1<T*>::foo;  // { dg-error "context" }
43     (void)F2<T*>::foo;
46 template class A<int>;  // { dg-error "instantiated" }