53 lines
1.6 KiB
Markdown
53 lines
1.6 KiB
Markdown
[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)
|