An istream_iterator reads (using operator>>) successive elements from the input stream. It reads after it is constructed, and every time the increment operator is used.
If an end of stream is reached the iterator returns false.
Since istream iterators are not assignable istream iterators can only be used for one pass algorithms.