This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of WP status.
Section: 31.11.2.6 [syncstream.syncbuf.special] Status: WP Submitter: S. B. Tam Opened: 2021-10-07 Last modified: 2022-02-11
Priority: Not Prioritized
View all issues with WP status.
Discussion:
LWG 3498 fixes the inconsistent noexcept-specifiers for member functions of basic_syncbuf, but the proposed resolution in LWG 3498 seems to miss the non-member swap, which also has inconsistent noexcept-specifier: 31.11.2.6 [syncstream.syncbuf.special] says it's noexcept, while 31.11.1 [syncstream.syn] says it's not.
Since the non-member swap and the member swap have equivalent effect, and LWG 3498 removes noexcept from the latter, I think it's pretty clear that the former should not be noexcept.[2021-10-14; Reflector poll]
Set status to Tentatively Ready after seven votes in favour during reflector poll.
[2022-02-10 Approved at February 2022 virtual plenary. Status changed: Tentatively Ready → WP.]
[2022-02-10; Jens comments]
The desired fix was applied editorially while applying
P2450 C++ Standard Library Issues to be moved in Virtual Plenary, Oct. 2021Proposed resolution:
This wording is relative to N4892.
Modify 31.11.2.6 [syncstream.syncbuf.special] as indicated:
template<class charT, class traits, class Allocator> void swap(basic_syncbuf<charT, traits, Allocator>& a, basic_syncbuf<charT, traits, Allocator>& b)noexcept;-1- Effects: Equivalent to a.swap(b).