// Build don't link: struct S1 { ~S1(); // ERROR - candidate }; S1::~S1() const { // ERROR - prototype does not match } struct S2 { ~S2() volatile; // ERROR - destructors may not be volatile }; template struct S3 { ~S3(); // ERROR - candidate }; template S3::~S3() volatile { // ERROR - prototype does not match } template struct S4 { ~S4() const; // ERROR - destructors may not be const };