]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/typedefs.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 24_iterators / ostreambuf_iterator / requirements / typedefs.cc
1 // { dg-do compile }
2 // 2001-04-30 Benjamin Kosnik <bkoz@redhat.com>
3
4 // Copyright (C) 2001-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.4 template class ostreambuf_iterator
22
23 #include <sstream>
24 #include <iterator>
25 #include <testsuite_hooks.h>
26
27 void test01()
28 {
29 using namespace std;
30
31 // Check for required typedefs
32 typedef ostreambuf_iterator<char> test_iterator;
33 typedef test_iterator::value_type value_type;
34 typedef test_iterator::difference_type difference_type;
35 typedef test_iterator::pointer pointer;
36 typedef test_iterator::reference reference;
37 typedef test_iterator::iterator_category iteratory_category;
38
39 typedef test_iterator::char_type char_type;
40 typedef test_iterator::traits_type traits_type;
41 typedef test_iterator::ostream_type ostream_type;
42 typedef test_iterator::streambuf_type streambuf_type;
43 }
44
45 #if __cplusplus >= 201103L
46 void test02()
47 {
48 using namespace std;
49
50 using test_type = ostreambuf_iterator<char>;
51 static_assert(is_same<test_type::value_type, void>::value, "");
52 #if __cplusplus <= 201703L
53 static_assert(is_same<test_type::difference_type, void>::value, "");
54 #else
55 static_assert(is_same<test_type::difference_type, ptrdiff_t>::value, "");
56 #endif
57 static_assert(is_same<test_type::pointer, void>::value, "");
58 static_assert(is_same<test_type::reference, void>::value, "");
59 static_assert(is_same<test_type::iterator_category, output_iterator_tag>::value, "");
60
61 static_assert(is_same<test_type::char_type, char>::value, "");
62 static_assert(is_same<test_type::traits_type, char_traits<char>>::value, "");
63 static_assert(is_same<test_type::ostream_type, ostream>::value, "");
64 static_assert(is_same<test_type::streambuf_type, streambuf>::value, "");
65 }
66
67 #ifdef _GLIBCXX_USE_WCHAR_T
68 void test03()
69 {
70 using namespace std;
71
72 using test_type = ostreambuf_iterator<wchar_t>;
73 static_assert(is_same<test_type::value_type, void>::value, "");
74 #if __cplusplus <= 201703L
75 static_assert(is_same<test_type::difference_type, void>::value, "");
76 #else
77 static_assert(is_same<test_type::difference_type, ptrdiff_t>::value, "");
78 #endif
79 static_assert(is_same<test_type::pointer, void>::value, "");
80 static_assert(is_same<test_type::reference, void>::value, "");
81 static_assert(is_same<test_type::iterator_category, output_iterator_tag>::value, "");
82
83 static_assert(is_same<test_type::char_type, wchar_t>::value, "");
84 static_assert(is_same<test_type::traits_type, char_traits<wchar_t>>::value, "");
85 static_assert(is_same<test_type::ostream_type, wostream>::value, "");
86 static_assert(is_same<test_type::streambuf_type, wstreambuf>::value, "");
87 }
88 #endif
89 #endif