This is the mail archive of the
mailing list for the libstdc++ project.
Re: Should this work?
- From: "Jack Reeves" <jackw_reeves at hotmail dot com>
- To: panic at semiosix dot com
- Cc: libstdc++ at gcc dot gnu dot org
- Date: Tue, 13 Aug 2002 08:42:00 +0000
- Subject: Re: Should this work?
- Reply-to: jack_reeves at bleading-edge dot com
The behaviour is undefined without the temporary: the str() function returns
a string 'object' (not a reference to a string). Therefore, the two calls to
str() produce different objects, the two iterators refer to different
sequences, and the subtraction yields an undefined result.
std::cout << os.str().end() - os.str().begin() << std::endl;
It looks like os.str().end() and os.str().begin() are iterators over
different sequences, so you get some strange results. It's easy to fix
by using a temporary
string temp = os.str();
but I was wondering if it exhibits the correct behaviour without the
Whatever the behavior - it is 'correct' - but it is also probably not
what you want.
MSN Photos is the easiest way to share and print your photos: