public:
/// Construct end of input stream iterator.
_GLIBCXX_CONSTEXPR istream_iterator()
+ _GLIBCXX_NOEXCEPT_IF(is_nothrow_default_constructible<_Tp>::value)
: _M_stream(0), _M_value(), _M_ok(false) {}
/// Construct start of input stream iterator.
{ _M_read(); }
istream_iterator(const istream_iterator& __obj)
+ _GLIBCXX_NOEXCEPT_IF(is_nothrow_copy_constructible<_Tp>::value)
: _M_stream(__obj._M_stream), _M_value(__obj._M_value),
_M_ok(__obj._M_ok)
{ }
_GLIBCXX_NODISCARD
const _Tp&
- operator*() const
+ operator*() const _GLIBCXX_NOEXCEPT
{
__glibcxx_requires_cond(_M_ok,
_M_message(__gnu_debug::__msg_deref_istream)
_GLIBCXX_NODISCARD
const _Tp*
- operator->() const { return std::__addressof((operator*())); }
+ operator->() const _GLIBCXX_NOEXCEPT
+ { return std::__addressof((operator*())); }
istream_iterator&
operator++()
private:
bool
- _M_equal(const istream_iterator& __x) const
+ _M_equal(const istream_iterator& __x) const _GLIBCXX_NOEXCEPT
{
// Ideally this would just return _M_stream == __x._M_stream,
// but code compiled with old versions never sets _M_stream to null.
_GLIBCXX_NODISCARD
friend bool
operator==(const istream_iterator& __x, const istream_iterator& __y)
+ _GLIBCXX_NOEXCEPT
{ return __x._M_equal(__y); }
#if __cpp_impl_three_way_comparison < 201907L
_GLIBCXX_NODISCARD
friend bool
operator!=(const istream_iterator& __x, const istream_iterator& __y)
+ _GLIBCXX_NOEXCEPT
{ return !__x._M_equal(__y); }
#endif
#if __cplusplus > 201703L && __cpp_lib_concepts
[[nodiscard]]
friend bool
- operator==(const istream_iterator& __i, default_sentinel_t)
+ operator==(const istream_iterator& __i, default_sentinel_t) noexcept
{ return !__i._M_stream; }
#endif
};
public:
/// Construct from an ostream.
- ostream_iterator(ostream_type& __s)
+ ostream_iterator(ostream_type& __s) _GLIBCXX_NOEXCEPT
: _M_stream(std::__addressof(__s)), _M_string(0) {}
/**
* @param __s Underlying ostream to write to.
* @param __c CharT delimiter string to insert.
*/
- ostream_iterator(ostream_type& __s, const _CharT* __c)
+ ostream_iterator(ostream_type& __s, const _CharT* __c) _GLIBCXX_NOEXCEPT
: _M_stream(std::__addressof(__s)), _M_string(__c) { }
/// Copy constructor.
- ostream_iterator(const ostream_iterator& __obj)
+ ostream_iterator(const ostream_iterator& __obj) _GLIBCXX_NOEXCEPT
: _M_stream(__obj._M_stream), _M_string(__obj._M_string) { }
#if __cplusplus >= 201103L
_GLIBCXX_NODISCARD
ostream_iterator&
- operator*()
+ operator*() _GLIBCXX_NOEXCEPT
{ return *this; }
ostream_iterator&
- operator++()
+ operator++() _GLIBCXX_NOEXCEPT
{ return *this; }
ostream_iterator&
- operator++(int)
+ operator++(int) _GLIBCXX_NOEXCEPT
{ return *this; }
};