]> git.ipfire.org Git - thirdparty/gcc.git/blame - 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
CommitLineData
e0ec69c9 1// { dg-do compile }
b85381b9
BK
2// 2001-04-30 Benjamin Kosnik <bkoz@redhat.com>
3
8d9254fc 4// Copyright (C) 2001-2020 Free Software Foundation, Inc.
b85381b9
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)
b85381b9
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/>.
b85381b9
BK
20
21// 24.5.4 template class ostreambuf_iterator
22
23#include <sstream>
24#include <iterator>
fe413112 25#include <testsuite_hooks.h>
b85381b9 26
b581eaf7
BK
27void test01()
28{
29 using namespace std;
30
b581eaf7 31 // Check for required typedefs
a024740d 32 typedef ostreambuf_iterator<char> test_iterator;
b581eaf7
BK
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}
9aeb3bef
JW
44
45#if __cplusplus >= 201103L
46void 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
68void 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