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 // template<class charT, class traits = char_traits<charT> >
13 // class istreambuf_iterator
14 //     : public iterator<input_iterator_tag, charT,
15 //                       typename traits::off_type, charT*,
16 //                       charT>
17 // {
18 // public:
19 //     ...
20 //     proxy operator++(int);
21 
22 // class proxy
23 // {
24 // public:
25 //     charT operator*();
26 // };
27 
28 #include <iterator>
29 #include <sstream>
30 #include <cassert>
31 
main()32 int main()
33 {
34     {
35         std::istringstream inf("abc");
36         std::istreambuf_iterator<char> i(inf);
37         assert(*i++ == 'a');
38     }
39     {
40         std::wistringstream inf(L"abc");
41         std::istreambuf_iterator<wchar_t> i(inf);
42         assert(*i++ == L'a');
43     }
44 }
45