This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of TS status.
Section: 8.8 [fund.ts.v2::memory.resource.global] Status: TS Submitter: Tim Song Opened: 2015-07-28 Last modified: 2017-07-30
Priority: 2
View all issues with TS status.
Discussion:
Addresses: fund.ts.v2
[memory.resource.global]/p7-8 says that the effects of set_default_resource(r) are
If r is non-null, sets the value of the default memory resource pointer to r, otherwise sets the default memory resource pointer to new_delete_resource().
and the operation has the postcondition
get_default_resource() == r.
When r is null, however, the postcondition cannot be met, since the call sets the default memory resource pointer to new_delete_resource(), and so get_default_resource() would return the value of new_delete_resource(), which is obviously not null and so cannot compare equal to r.
Previous resolution from Tim Song [SUPERSEDED]:This wording is relative to N4480.
Edit [memory.resource.global]/p8 as follows:
-6- memory_resource* set_default_resource(memory_resource* r) noexcept;-7- Effects: If r is non-null, sets the value of the default memory resource pointer to r, otherwise sets the default memory resource pointer to new_delete_resource().
-8- Postconditions: get_default_resource() == r if r is non-null; otherwise, get_default_resource() == new_delete_resource(). […]
[2015-09-15 Geoffrey Romer comments and suggests alternative wording]
Let's just strike 8.8 [fund.ts.v2::memory.resource.global]/p8. The problem is that p8 is restating p7 incorrectly, but the solution is not to restate p7 correctly, it's to stop trying to restate p7 at all.
[2015-10, Kona Saturday afternoon]
Move to Tentatively ready
[2015-10-26]
Daniel adjusts wording to lib. fund. v2.
Proposed resolution:
This wording is relative to N4529.
Edit [memory.resource.global]/p8 as follows:
-6- memory_resource* set_default_resource(memory_resource* r) noexcept;-7- Effects: If r is non-null, sets the value of the default memory resource pointer to r, otherwise sets the default memory resource pointer to new_delete_resource().
-8- Postconditions: get_default_resource() == r.[…]