1 // { dg-do assemble  }
2 // Exhaustive test for destructors of simple types.
3 // PRMS Id: 2744, 3308
4 
5 template <class T> class A {
6   T q;
7 public:
~A()8   ~A() {
9     q.T::~T();
10     q.~T();
11     (&q)->T::~T();
12     (&q)->~T();
13   }
14 };
15 
16 typedef char * cp;
17 typedef int I;
18 
main()19 int main ()
20 {
21   A<int> a;
22   A<cp> b;
23   int i;
24   cp c;
25 
26   i.~I();
27   i.I::~I();
28   (&i)->~I();
29   (&i)->I::~I();
30   c.~cp();
31   c.cp::~cp();
32   (&c)->~cp();
33   (&c)->cp::~cp();
34 }
35