1 // { dg-do assemble }
2
3 struct S1 { // { dg-message "defined here" }
4 ~S1(); // { dg-message "candidate" }
5 };
6
~S1()7 S1::~S1() const // { dg-error "no declaration matches" }
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 { // { dg-message "defined here" }
19 ~S3(); // { dg-message "candidate" }
20 };
21
22 template <class T>
~S3()23 S3<T>::~S3() volatile // { dg-error "no declaration matches" }
24 {
25 }
26
27
28 template <class T>
29 struct S4 {
30 ~S4() const; // { dg-error "" } destructors may not be const
31 };
32