http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46906
--- Comment #9 from Marc Glisse <marc.glisse at normalesup dot org> 2011-09-05 14:01:08 UTC --- (In reply to comment #8) > Why do you think that either implementation form could be > considered as non-conforming? When I read that operator* returns sgetc(), I understand that as assert(*i==buf.sgetc()). If there really is a provision that lets *i return what buf.sgetc() used to return (I am not convinced the (void)*a,*a thing is it), it would be nice to remind it in the definition of operator*. And I guess I don't really like this kind of unspecified behavior... (it is very different from copy elision for instance) But it wouldn't be the first time that it is my understanding of the standard that is at fault ;-)