This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: [PATCH 3/4] libstdc++: avoid character accumulation in istreambuf_iterator
On Thu, 16 Nov 2017 10:39:02 +0100
Paolo Carlini <paolo.carlini@oracle.com> wrote:
> Hi,
>
> On 16/11/2017 06:31, Petr Ovtchenkov wrote:
> > Is we really worry about frozen sizeof of instantiated template?
> Yes we do. See https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html
> under "Prohibited Changes", point 8.
>
> Of course removing the buffering has performance implications too -
> that's why it's there in the first place!
"buffering" here is a secondary buffering (after streambuf).
No relation to performance, but place for incoherence with
state of attached streambuf.
Of cause, I can spend time to measure the difference.
The main point of this patch series is avoidance of lost link between
streambuf and istream_iterator when istream_iterator see eof.
Implementations that forget about attached streambuf after
istream_iterator see eof (or lost synchronization with attached
streambuf) violate principles of C++ objects life cycle.
From practical point of view, such implementation block usage of
istream_iterator for sockets, ttys, etc. --- only non-modified
files remains in scope of application.
> - which I remember we
> investigated a bit again in the past when somebody reported that a few
> implementations had it other did not. But I can't say to have followed
> all the (recently uncovered) conformance implications, it could well be
> that we cannot be 100% conforming to the letter of the current standard
> while taking advantage of a buffering mechanism. Jonathan will provide
> feedback.
>
> Paolo.
--
- ptr