111
|
1 // Copyright (C) 2001 Free Software Foundation
|
|
2 // Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
|
|
3 // { dg-do compile }
|
|
4
|
|
5 struct A
|
|
6 {
|
|
7 template <class T> class B {};
|
|
8 };
|
|
9
|
|
10 template <template <class> class TT> struct X
|
|
11 {
|
|
12 TT<int> y;
|
|
13 };
|
|
14
|
|
15 template <class T> struct X<T::template B> // { dg-message "previous" }
|
|
16 {
|
|
17 T z;
|
|
18 };
|
|
19
|
|
20 template <class T> struct X<T::template B> // { dg-error "redefinition" }
|
|
21 {
|
|
22 T z;
|
|
23 };
|
|
24
|
|
25 template <class T> struct C
|
|
26 {
|
|
27 X<T::template B> x;
|
|
28 };
|
|
29
|
|
30 int main()
|
|
31 {
|
|
32 C<A> c;
|
|
33 }
|