<syncstream>
: is_nothrow_move_assignable_v<osyncstream>
is squirrelly 🐿️
#3355
Labels
fixed
Something works now, yay!
LWG issue needed
A wording defect that should be submitted to LWG as a new issue
WG21-N4928 [syncstream.osyncstream.overview] depicts
basic_osyncstream& operator=(basic_osyncstream&&) noexcept;
. However, it also depicts an exposition-only data membersyncbuf_type sb;
and [syncstream.syncbuf.assign] depictsbasic_syncbuf& operator=(basic_syncbuf&& rhs);
which is notnoexcept
(it callsemit()
).Our current implementation:
STL/stl/inc/syncstream
Line 348 in fbed7ea
STL/stl/inc/syncstream
Lines 371 to 372 in fbed7ea
STL/stl/inc/syncstream
Lines 109 to 110 in fbed7ea
It seems to me that there's an LWG issue here, and that
operator=(basic_osyncstream&&)
should not be markednoexcept
in the Standard (and in our implementation).Programmer-archaeology: LWG-3498 "Inconsistent
noexcept
-specifiers forbasic_syncbuf
" (already merged into the WP) removednoexcept
fromoperator=(basic_syncbuf&&)
because it callsemit()
. It seems to me thatoperator=(basic_osyncstream&&)
was simply missed at that time.Noticed while reviewing #3314.
The text was updated successfully, but these errors were encountered: