[class.ctor], [class.dtor], [class.copy]
Change: Implicitly-declared special member functions are defined as deleted
when the implicit definition would have been ill-formed.
Rationale: Improves template argument deduction failure.
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.
[class.dtor] (destructors)
Change: User-declared destructors have an implicit exception specification.
Rationale: Clarification of destructor requirements.
Effect on original feature:
Valid C++ 2003 code may execute differently in this International Standard. In
particular, destructors that throw exceptions will call std::terminate()
(without calling std::unexpected()) if their exception specification is
noexcept or noexcept(true). For a throwing virtual destructor
of a derived class, std::terminate() can be avoided only if the base class
virtual destructor has an exception specification that is not noexcept
and not noexcept(true).