[diff.cpp03.class] # Annex C (informative) Compatibility [[diff]](./#diff) ## C.6 C++ and ISO C++ 2003 [[diff.cpp03]](diff.cpp03#class) ### C.6.5 [[class]](class "11 Classes"): classes [diff.cpp03.class] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L2345) **Affected subclauses:** [[class.default.ctor]](class.default.ctor), [[class.dtor]](class.dtor), [[class.copy.ctor]](class.copy.ctor), and [[class.copy.assign]](class.copy.assign) **Change:** Implicitly-declared special member functions are defined as deleted when the implicit definition would have been ill-formed[.](#1.sentence-1) **Rationale:** Improves template argument deduction failure[.](#1.sentence-2) **Effect on original feature:** A valid C++ 2003 program that uses one of these special member functions in a context where the definition is not required (e.g., in an expression that is not potentially evaluated) becomes ill-formed[.](#1.sentence-3) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L2356) **Affected subclause:** [[class.dtor]](class.dtor) **Change:** User-declared destructors have an implicit exception specification[.](#2.sentence-1) **Rationale:** Clarification of destructor requirements[.](#2.sentence-2) **Effect on original feature:** Valid C++ 2003 code may execute differently in this revision of C++[.](#2.sentence-3) In particular, destructors that throw exceptions will call std​::​terminate (without calling std​::​unexpected) if their exception specification is non-throwing[.](#2.sentence-4)