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

3496. What does "uniquely associated" mean for basic_syncbuf::emit()?

Section: 29.11.2.4 [syncstream.syncbuf.members] Status: New Submitter: Jonathan Wakely Opened: 2020-11-10 Last modified: 2020-11-21

Priority: 3

View other active issues in [syncstream.syncbuf.members].

View all other issues in [syncstream.syncbuf.members].

View all issues with New status.

Discussion:

29.11.2.4 [syncstream.syncbuf.members] p5 says "May call member functions of wrapped while holding a lock uniquely associated with wrapped."

It's unclear what "uniquely associated" means. Is it required to be a one-to-one mapping, so that every streambuf* that is wrapped is associated with a different lock?

I believe the intention is only that for a given streambuf* every syncbuf that wraps it uses the same lock. The intention was that it's a valid implementation for the same lock to be used for more than one streambuf* (e.g. using a table of N locks which are indexed by a hash of the streambuf* value). The current wording can be interpreted to forbid that implementation.

[2020-11-21; Reflector prioritization]

Set priority to 3 during reflector discussions.

Proposed resolution: