[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)
