Title
does endl imply synchronization with the device?
Status
cd1
Section
[ostream.manip]
Submitter
PremAnand M. Rao

Created on 2001-08-27.00:00:00 last changed 171 months ago

Messages

Date: 2010-10-21.18:28:33

Rationale:

We already have normative text saying what endl does: it inserts a newline character and calls flush. This footnote is at best redundant, at worst (as this issue says) misleading, because it appears to make promises about what flush does.

Date: 2010-10-21.18:28:33

Proposed resolution:

Remove footnote 300 from section [ostream.manip].

Date: 2001-08-27.00:00:00

A footnote in [ostream.manip] states:

[Footnote: The effect of executing cout << endl is to insert a newline character in the output sequence controlled by cout, then synchronize it with any external file with which it might be associated. --- end foonote]

Does the term "file" here refer to the external device? This leads to some implementation ambiguity on systems with fully buffered files where a newline does not cause a flush to the device.

Choosing to sync with the device leads to significant performance penalties for each call to endl, while not sync-ing leads to errors under special circumstances.

I could not find any other statement that explicitly defined the behavior one way or the other.

History
Date User Action Args
2010-10-21 18:28:33adminsetmessages: + msg2264
2010-10-21 18:28:33adminsetmessages: + msg2263
2001-08-27 00:00:00admincreate