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