2 // 2001-04-30 Benjamin Kosnik <bkoz@redhat.com>
4 // Copyright (C) 2001-2020 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.4 template class ostreambuf_iterator
25 #include <testsuite_hooks.h>
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
;
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
;
45 #if __cplusplus >= 201103L
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
, "");
55 static_assert(is_same
<test_type::difference_type
, ptrdiff_t>::value
, "");
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
, "");
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
, "");
67 #ifdef _GLIBCXX_USE_WCHAR_T
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
, "");
77 static_assert(is_same
<test_type::difference_type
, ptrdiff_t>::value
, "");
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
, "");
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
, "");