Section: 19 [diagnostics] Status: NAD Submitter: BSI Opened: 2010-08-25 Last modified: 2016-01-28
Priority: Not Prioritized
View all issues with NAD status.
Discussion:
Addresses GB-75
None of the exception types defined in clause 19 are
allowed to throw an exception on copy or move
operations, but there is no clear specification that the
operations have an exception specification to prove it.
Note that the implicitly declared constructors, taking the
exception specification from their base class (ultimately
std::exception
) will implicitly generate a noexcept
exception specification if all of their data members
similarly declare noexcept
operations. As the
representation is unspecified, we cannot assume nonthrowing
operations unless we explicitly state this as a
constraint on the implementation.
[ Resolution proposed by ballot comment: ]
Add a global guarantee that all exception types defined in clause 19 that rely on implicitly declared operations have a non-throwing exception specification on those operations.
[ 2010 Batavia: ]
This is addressed by the current words in 18.8.1 [exception], p2
Each standard library class
T
that derives from classexception
shall have a publicly accessible copy constructor and a publicly accessible copy assignment operator that do not exit with an exception.
Proposed resolution: