]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/typedefs.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 24_iterators / istreambuf_iterator / requirements / typedefs.cc
1 // { dg-do compile }
2 // 1999-06-28 bkoz
3
4 // Copyright (C) 1999-2024 Free Software Foundation, Inc.
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
9 // Free Software Foundation; either version 3, or (at your option)
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
18 // with this library; see the file COPYING3. If not see
19 // <http://www.gnu.org/licenses/>.
20
21 // 24.5.3 template class istreambuf_iterator
22
23 #include <sstream>
24 #include <iterator>
25
26 void test01()
27 {
28 using namespace std;
29
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;
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 }
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