This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21
Core Issues List revision 112e.
See http://www.open-std.org/jtc1/sc22/wg21/ for the official
All deallocation functions should be required not to throw
Section: 126.96.36.199.3 [basic.stc.dynamic.deallocation]
Submitter: Herb Sutter
Date: 31 Mar 2000
[Voted into the WP at the September, 2008 meeting (resolution
in paper N2757).]
[Picked up by evolution group at October 2002 meeting.]
The default global operators delete are specified to not
throw, but there is no requirement that replacement global, or
class-specific, operators delete must not throw. That ought
to be required.
- 188.8.131.52.3 [basic.stc.dynamic.deallocation] paragraph 2, at the end of the
first sentence, should also require that no exceptions be thrown.
- 11.4.11 [class.free], including its examples, should require
nonthrowing class-specific operator delete.
- 184.108.40.206 [replacement.functions] paragraph 2 should append
throw() to the signature of each of the four operators
We already require that all versions of an allocator's deallocate()
must not throw, so that part is okay.
- Replacement deallocation functions are already required not to
throw an exception (cf 220.127.116.11 [res.on.functions] paragraph 2,
as applied to 18.104.22.168 [new.delete.single] paragraph 12 and
22.214.171.124 [new.delete.array] paragraph 11).
- Section 126.96.36.199 [replacement.functions] is describing the
signatures of the functions to be replaced; exception specfications
are not part of the signature.
- There does not appear to be any pressing need to require that
class member deallocation functions not throw.
Note (March, 2008):
The Evolution Working Group has accepted the intent of this issue
and referred it to CWG for action for C++0x (see paper
J16/07-0033 = WG21 N2173).
Proposed resolution (March, 2008):
Change 188.8.131.52.3 [basic.stc.dynamic.deallocation] paragraph 3 as follows:
The value of the first argument supplied to a deallocation function...