30 #ifndef _STREAM_ITERATOR_H
31 #define _STREAM_ITERATOR_H 1
33 #pragma GCC system_header
37 namespace std _GLIBCXX_VISIBILITY(default)
39 _GLIBCXX_BEGIN_NAMESPACE_VERSION
47 template<
typename _Tp,
typename _CharT = char,
48 typename _Traits = char_traits<_CharT>,
typename _Dist = ptrdiff_t>
50 :
public iterator<input_iterator_tag, _Tp, _Dist, const _Tp*, const _Tp&>
53 typedef _CharT char_type;
54 typedef _Traits traits_type;
68 : _M_stream(0), _M_value(), _M_ok(false) {}
76 : _M_stream(__obj._M_stream), _M_value(__obj._M_value),
80 #if __cplusplus >= 201103L
88 __glibcxx_requires_cond(_M_ok,
89 _M_message(__gnu_debug::__msg_deref_istream)
100 __glibcxx_requires_cond(_M_ok,
101 _M_message(__gnu_debug::__msg_inc_istream)
102 ._M_iterator(*
this));
110 __glibcxx_requires_cond(_M_ok,
111 _M_message(__gnu_debug::__msg_inc_istream)
112 ._M_iterator(*
this));
124 return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream);
130 if (_M_stream && !(*_M_stream >> _M_value))
141 {
return __x._M_equal(__y); }
147 {
return !__x._M_equal(__y); }
161 template<
typename _Tp,
typename _CharT = char,
162 typename _Traits = char_traits<_CharT> >
164 :
public iterator<output_iterator_tag, void, void, void, void>
170 typedef _Traits traits_type;
176 const _CharT* _M_string;
179 #if __cplusplus > 201703L
181 : _M_stream(
nullptr), _M_string(
nullptr) { }
203 : _M_stream(__obj._M_stream), _M_string(__obj._M_string) { }
205 #if __cplusplus >= 201103L
214 __glibcxx_requires_cond(_M_stream != 0,
215 _M_message(__gnu_debug::__msg_output_ostream)
216 ._M_iterator(*
this));
217 *_M_stream << __value;
219 *_M_stream << _M_string;
238 _GLIBCXX_END_NAMESPACE_VERSION