Created on 2021-06-19.00:00:00 last changed 7 days ago
This wording is relative to N4885.
Modify [ostream.manip] as indicated:
template<class charT, class traits> basic_ostream<charT, traits>& flush_emit(basic_ostream<charT, traits>& os);
-12- Effects: Calls os.flush(). Then, if os.rdbuf() is a basic_syncbuf<charT, traits, Allocator>*, called buf for the purpose of exposition, calls buf->emit().
[ 2021-10-14 Approved at October 2021 virtual plenary. Status changed: Voting → WP. ]
[ 2021-06-23; Reflector poll ]
Set status to Tentatively Ready after six votes in favour during reflector poll.
basic_osyncstream::emit is specified to set badbit if it fails ([syncstream.osyncstream.members] p1), but the emit part of the flush_emit manipulator isn't, even though the flush part does set badbit if it fails.More generally, given an osyncstream s, s << flush_emit; should probably have the same behavior as s.flush(); s.emit(). The reference implementation linked in P0753R2 does set badbit on failure, so at least this part appears to be an oversight. As discussed in LWG 3570, basic_osyncstream::emit should probably be an unformatted output function, so the emit part of flush_emit should do so too.
|2021-10-14 09:56:08||admin||set||messages: + msg12133|
|2021-10-14 09:56:08||admin||set||status: voting -> wp|
|2021-09-29 12:57:28||admin||set||status: ready -> voting|
|2021-06-23 14:16:45||admin||set||messages: + msg11966|
|2021-06-23 14:16:45||admin||set||status: new -> ready|
|2021-06-19 15:11:17||admin||set||messages: + msg11942|