Section: 22.214.171.124 [syncstream.syncbuf.overview], 126.96.36.199 [syncstream.syncbuf.assign] Status: WP Submitter: Jonathan Wakely Opened: 2020-11-10 Last modified: 2021-10-14 09:56:08 UTC
View all other issues in [syncstream.syncbuf.overview].
View all issues with WP status.
The synopsis in 188.8.131.52 [syncstream.syncbuf.overview] shows the move assignment operator and swap member as potentially throwing. The detailed descriptions in 184.108.40.206 [syncstream.syncbuf.assign] are noexcept.Daniel: This mismatch is already present in the originally accepted paper P0053R7, so this is nothing that could be resolved editorially.
[2020-11-21; Reflector prioritization]
Set priority to 3 during reflector discussions.
[2021-05-22 Tim adds PR]
The move assignment is specified to call emit() which can throw, and there's nothing in the wording providing for catching/ignoring the exception, so it can't be noexcept. The swap needs to call basic_streambuf::swap, which isn't noexcept, so it shouldn't be noexcept either.
[2021-06-23; Reflector poll]
Set status to Tentatively Ready after eight votes in favour during reflector poll.
[2021-10-14 Approved at October 2021 virtual plenary. Status changed: Voting → WP.]
This wording is relative to N4885.
Modify 220.127.116.11 [syncstream.syncbuf.assign] as indicated:
basic_syncbuf& operator=(basic_syncbuf&& rhs)
-1- Effects: […]-2- Postconditions: […] -3- Returns: […] -4- Remarks: […]void swap(basic_syncbuf& other)
-5- Preconditions: […]-6- Effects: […]