1 // { dg-do assemble  }
2 // GROUPS passed templates
3 template <class ET>
4 class ChainElem {
5 public:
6 
7   ET data;
8 };
9 
10 template <class ET>
11 class Chain {
12 public:
13 
14   ChainElem<ET> *first;
15 
~Chain()16   virtual ~Chain() {}
17 
18 };
19 
20 struct B {
21 };
22 
23 struct X : B {
24   ~X ();
25 };
26 
27 struct TBNFexpression {
28 };
29 
30 struct TCaseLabelPair {
31 };
32 
33 struct TVariant {
34   Chain<TCaseLabelPair> CaseLabelList;
35 };
36 
37 struct TCaseConstruct {
38   Chain<TBNFexpression> TagFieldPrefixes;
39   Chain<TVariant> Variants;
40 };
41 
42 struct Production {
43   X TypeName;
44 };
45 
46 struct SimpleSyntax {
47   Chain<Production> Productions;
48 };
49