Re: Defect Report: istreambuf_iterator should have an operator->()
On Mar 26, 1:40 am, nore...@this.is.invalid (Niels Dekker - no return
address) wrote:
Okay, okay, I'm converted! Greg Herlihy has clearly demonstrated that a
user defined input iterator should have an operator->(), even if its
value type is a built-in type. And as Howard Hinnant remarked that the
input iterator istreambuf_iterator doesn't have one, this must be a
defect!
Based on Greg's example, the following code demonstrates the issue:
#include <iostream>
#include <fstream>
#include <streambuf>
typedef char C;
int main ()
{
std::ifstream s("filename", std::ios::in);
std::istreambuf_iterator<char> i(s);
(*i).~C(); // This is well-formed...
Well formed, perhaps, but it looks like undefined behavior at
execution. (Maybe not in the case of char; char's rather
special in this regard. But definitily in the case of other
types.)
i->~C(); // ... so this should be supported!
}
I'm not convinced, at least not for istreambuf_iterator (which
is a bit special).
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient?e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S?mard, 78210 St.-Cyr-l'?cole, France, +33 (0)1 30 23 00 34
---
[ comp.std.c++ is moderated. To submit articles, try just posting with ]
[ your news-reader. If that fails, use mailto:std-c++@ncar.ucar.edu ]
[ --- Please see the FAQ before posting. --- ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html ]