1 // { dg-do assemble  }
2 
3 struct S1 {
4   ~S1(); // { dg-error "" } candidate
5 };
6 
~S1()7 S1::~S1() const // { dg-error "" } prototype does not match
8 {
9 }
10 
11 
12 struct S2 {
13   ~S2() volatile; // { dg-error "" } destructors may not be volatile
14 };
15 
16 
17 template <class T>
18 struct S3 {
19   ~S3(); // { dg-error "" } candidate
20 };
21 
22 template <class T>
~S3()23 S3<T>::~S3() volatile  // { dg-error "" } prototype does not match
24 {
25 }
26 
27 
28 template <class T>
29 struct S4 {
30   ~S4() const; // { dg-error "" } destructors may not be const
31 };
32