1 //===----------------------------------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 // <iterator>
11 
12 // class istream_iterator
13 
14 // template <class T, class charT, class traits, class Distance>
15 //   bool operator==(const istream_iterator<T,charT,traits,Distance> &x,
16 //                   const istream_iterator<T,charT,traits,Distance> &y);
17 //
18 // template <class T, class charT, class traits, class Distance>
19 //   bool operator!=(const istream_iterator<T,charT,traits,Distance> &x,
20 //                   const istream_iterator<T,charT,traits,Distance> &y);
21 
22 #include <iterator>
23 #include <sstream>
24 #include <cassert>
25 
26 int main()
27 {
28     std::istringstream inf1(" 1 23");
29     std::istringstream inf2(" 1 23");
30     std::istream_iterator<int> i1(inf1);
31     std::istream_iterator<int> i2(inf1);
32     std::istream_iterator<int> i3(inf2);
33     std::istream_iterator<int> i4;
34     std::istream_iterator<int> i5;
35     assert(i1 == i1);
36     assert(i1 == i2);
37     assert(i1 != i3);
38     assert(i1 != i4);
39     assert(i1 != i5);
40 
41     assert(i2 == i2);
42     assert(i2 != i3);
43     assert(i2 != i4);
44     assert(i2 != i5);
45 
46     assert(i3 == i3);
47     assert(i3 != i4);
48     assert(i3 != i5);
49 
50     assert(i4 == i4);
51     assert(i4 == i5);
52 }
53