This is an archive of the discontinued LLVM Phabricator instance.

Implement LWG#2063: "Contradictory requirements for string move assignment"
AbandonedPublic

Authored by mclow.lists on Jul 6 2015, 8:46 AM.

Details

Reviewers
EricWF
Summary

Update the noexcept-ness of move-construction and move-assignment for basic_string. Use the new "is_always_equal" type trait for noexcept stuff when we're building with C++17. Preserve the conforming extension that we had before for C++14 and before.

Note that in C++17, if POCMA is true, then move-assigning an allocator cannot throw an exception.

Diff Detail

Event Timeline

mclow.lists updated this revision to Diff 29091.Jul 6 2015, 8:46 AM
mclow.lists retitled this revision from to Implement LWG#2063: "Contradictory requirements for string move assignment".
mclow.lists updated this object.
mclow.lists added a reviewer: EricWF.
mclow.lists added a subscriber: cfe-commits.
EricWF edited edge metadata.Aug 18 2015, 10:59 PM

@mclow.lists: Do other containers need this update as well? If so it might be worth while writing noexcept traits that handle the #ifdef hell in one spot instead of repeating it throughout.

mclow.lists abandoned this revision.Feb 6 2016, 8:26 AM

This has been done via another means.