]> git.ipfire.org Git - thirdparty/gcc.git/blame - 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
CommitLineData
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
26void 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
45void 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
69void 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