Given 24.5.1.1 p1 and p2, it is pretty clear to me that the two iterators are both non-end-of-stream type, and they are both created on different streams. The streams are different, so the iterators should not compare equal. I guess one could claim that 24.5.1.2 p6 conflicts with 24.5 p3 because 'end-of-stream' isn't clearly defined, but in this particular case that doesn't matter.
This program aborts with stdcxx but not with gcc:
#include <assert.h>
#include <iterator>
#include <sstream>
int main ()
{
std::istringstream a ("1");
std::istream_iterator<int> i (a);
std::istringstream b ("2");
std::istream_iterator<int> j (b);
assert (!(i == j));
}
Description
As Travis says in his reply to my post here:
http://www.nabble.com/stream-iterators-into-different-streams-compare-equal--tf4721505.html#a13498487:
Given 24.5.1.1 p1 and p2, it is pretty clear to me that the two iterators are both non-end-of-stream type, and they are both created on different streams. The streams are different, so the iterators should not compare equal. I guess one could claim that 24.5.1.2 p6 conflicts with 24.5 p3 because 'end-of-stream' isn't clearly defined, but in this particular case that doesn't matter.
This program aborts with stdcxx but not with gcc:
#include <assert.h>
#include <iterator>
#include <sstream>
int main ()
{
std::istringstream a ("1");
std::istream_iterator<int> i (a);
std::istringstream b ("2");
std::istream_iterator<int> j (b);
assert (!(i == j));
}