This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++17 status.
Section: 17.6.3 [new.delete] Status: C++17 Submitter: Richard Smith Opened: 2014-08-29 Last modified: 2017-07-30
Priority: 0
View all other issues in [new.delete].
View all issues with C++17 status.
Discussion:
17.6.3.2 [new.delete.single]/12 says:
Requires: ptr shall be a null pointer or its value shall be a value returned by an earlier call to the (possibly replaced) operator new(std::size_t) or operator new(std::size_t,const std::nothrow_t&) which has not been invalidated by an intervening call to operator delete(void*).
This should say:
[…] by an intervening call to operator delete(void*) or operator delete(void*, std::size_t).
Likewise at the end of 17.6.3.3 [new.delete.array]/11, operator delete[](void*, std::size_t).
[Urbana 2014-11-07: Move to Ready]
Proposed resolution:
Change 17.6.3.2 [new.delete.single]p12 as indicated:
-12- Requires: ptr shall be a null pointer or its value shall be a value returned by an earlier call to the (possibly replaced) operator new(std::size_t) or operator new(std::size_t,const std::nothrow_t&) which has not been invalidated by an intervening call to operator delete(void*) or operator delete(void*, std::size_t).
Change 17.6.3.3 [new.delete.array]p11 as indicated:
-11- Requires: ptr shall be a null pointer or its value shall be the value returned by an earlier call to operator new[](std::size_t) or operator new[](std::size_t,const std::nothrow_t&) which has not been invalidated by an intervening call to operator delete[](void*) or operator delete[](void*, std::size_t).