]>
Commit | Line | Data |
---|---|---|
e0ec69c9 BK |
1 | // { dg-do compile } |
2 | // 1999-06-28 bkoz | |
3 | ||
8d9254fc | 4 | // Copyright (C) 1999-2020 Free Software Foundation, Inc. |
e0ec69c9 BK |
5 | // |
6 | // This file is part of the GNU ISO C++ Library. This library is free | |
7 | // software; you can redistribute it and/or modify it under the | |
8 | // terms of the GNU General Public License as published by the | |
748086b7 | 9 | // Free Software Foundation; either version 3, or (at your option) |
e0ec69c9 BK |
10 | // any later version. |
11 | ||
12 | // This library is distributed in the hope that it will be useful, | |
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | // GNU General Public License for more details. | |
16 | ||
17 | // You should have received a copy of the GNU General Public License along | |
748086b7 JJ |
18 | // with this library; see the file COPYING3. If not see |
19 | // <http://www.gnu.org/licenses/>. | |
e0ec69c9 BK |
20 | |
21 | // 24.5.3 template class istreambuf_iterator | |
22 | ||
23 | #include <sstream> | |
24 | #include <iterator> | |
e0ec69c9 BK |
25 | |
26 | void test01() | |
27 | { | |
28 | using namespace std; | |
29 | ||
e0ec69c9 | 30 | // Check for required typedefs |
a024740d | 31 | typedef istreambuf_iterator<char> test_iterator; |
e0ec69c9 BK |
32 | typedef test_iterator::value_type value_type; |
33 | typedef test_iterator::difference_type difference_type; | |
34 | typedef test_iterator::pointer pointer; | |
35 | typedef test_iterator::reference reference; | |
36 | typedef test_iterator::iterator_category iteratory_category; | |
37 | ||
38 | typedef test_iterator::char_type char_type; | |
39 | typedef test_iterator::traits_type traits_type; | |
40 | typedef test_iterator::istream_type istream_type; | |
41 | typedef test_iterator::streambuf_type streambuf_type; | |
42 | } | |
9aeb3bef JW |
43 | |
44 | #if __cplusplus >= 201103L | |
45 | void test02() | |
46 | { | |
47 | using namespace std; | |
48 | ||
49 | using test_type = istreambuf_iterator<char>; | |
50 | ||
51 | static_assert(is_same<test_type::value_type, char>::value, ""); | |
52 | static_assert(is_same<test_type::difference_type, | |
53 | char_traits<char>::off_type>::value, ""); | |
54 | #if __cplusplus <= 201703L | |
55 | static_assert(is_same<test_type::pointer, char*>::value, ""); | |
56 | #else | |
57 | static_assert(is_same<test_type::pointer, void>::value, ""); | |
58 | #endif | |
59 | static_assert(is_same<test_type::reference, char>::value, ""); | |
60 | static_assert(is_same<test_type::iterator_category, input_iterator_tag>::value, ""); | |
61 | ||
62 | static_assert(is_same<test_type::char_type, char>::value, ""); | |
63 | static_assert(is_same<test_type::traits_type, char_traits<char>>::value, ""); | |
64 | static_assert(is_same<test_type::istream_type, istream>::value, ""); | |
65 | static_assert(is_same<test_type::streambuf_type, streambuf>::value, ""); | |
66 | } | |
67 | ||
68 | #ifdef _GLIBCXX_USE_WCHAR_T | |
69 | void test03() | |
70 | { | |
71 | using namespace std; | |
72 | ||
73 | using test_type = istreambuf_iterator<wchar_t>; | |
74 | ||
75 | static_assert(is_same<test_type::value_type, wchar_t>::value, ""); | |
76 | static_assert(is_same<test_type::difference_type, | |
77 | char_traits<wchar_t>::off_type>::value, ""); | |
78 | #if __cplusplus <= 201703L | |
79 | static_assert(is_same<test_type::pointer, wchar_t*>::value, ""); | |
80 | #else | |
81 | static_assert(is_same<test_type::pointer, void>::value, ""); | |
82 | #endif | |
83 | static_assert(is_same<test_type::reference, wchar_t>::value, ""); | |
84 | static_assert(is_same<test_type::iterator_category, input_iterator_tag>::value, ""); | |
85 | ||
86 | static_assert(is_same<test_type::char_type, wchar_t>::value, ""); | |
87 | static_assert(is_same<test_type::traits_type, char_traits<wchar_t>>::value, ""); | |
88 | static_assert(is_same<test_type::istream_type, wistream>::value, ""); | |
89 | static_assert(is_same<test_type::streambuf_type, wstreambuf>::value, ""); | |
90 | } | |
91 | #endif | |
92 | #endif |