What was the rationale behind making synchronization of input file streams implementation-specific. Doesn't it seem obvious that the stream will fill its buffer (partially or wholly) with content from the external device? It says in Standard C++ IOStreams and Locales:
For output files synchronization is defined as emptying the internal buffer by writing the buffer content to the file performed by a call to
overflow()
. For input files, the meaning of synchronization is not defined by the standard, but depends on the implementation of the IOStreams library.
Wouldn't it suffice to make the implementation symmetric and have the input file streams' buffers call underflow()
? What was the reason for this decision?