This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Tentatively Ready status.

3616. LWG 3498 seems to miss the non-member swap for basic_syncbuf

Section: 29.11.2.6 [syncstream.syncbuf.special] Status: Tentatively Ready Submitter: S. B. Tam Opened: 2021-10-07 Last modified: 2021-10-17

Priority: Not Prioritized

View all issues with Tentatively Ready 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: 29.11.2.6 [syncstream.syncbuf.special] says it's noexcept, while 29.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.

Proposed resolution:

This wording is relative to N4892.

  1. Modify 29.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).