4 // Copyright (C) 1999-2024 Free Software Foundation, Inc.
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
9 // Free Software Foundation; either version 3, or (at your option)
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.
17 // You should have received a copy of the GNU General Public License along
18 // with this library; see the file COPYING3. If not see
19 // <http://www.gnu.org/licenses/>.
21 // 24.5.3 template class istreambuf_iterator
30 // Check for required typedefs
31 typedef istreambuf_iterator
<char> test_iterator
;
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
;
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
;
44 #if __cplusplus >= 201103L
49 using test_type
= istreambuf_iterator
<char>;
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
, "");
57 static_assert(is_same
<test_type::pointer
, void>::value
, "");
59 static_assert(is_same
<test_type::reference
, char>::value
, "");
60 static_assert(is_same
<test_type::iterator_category
, input_iterator_tag
>::value
, "");
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
, "");
68 #ifdef _GLIBCXX_USE_WCHAR_T
73 using test_type
= istreambuf_iterator
<wchar_t>;
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
, "");
81 static_assert(is_same
<test_type::pointer
, void>::value
, "");
83 static_assert(is_same
<test_type::reference
, wchar_t>::value
, "");
84 static_assert(is_same
<test_type::iterator_category
, input_iterator_tag
>::value
, "");
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
, "");