[range.istream.iterator] (original) (raw)
25 Ranges library [ranges]
25.6 Range factories [range.factories]
25.6.6 Istream view [range.istream]
25.6.6.3 Class basic_istream_view::iterator [range.istream.iterator]
namespace std::ranges { template<movable Val, class CharT, class Traits> requires default_initializable<Val> && <Val, CharT, Traits> class basic_istream_view<Val, CharT, Traits>::iterator { public: using iterator_concept = input_iterator_tag;using difference_type = ptrdiff_t;using value_type = Val;constexpr explicit iterator(basic_istream_view& parent) noexcept;iterator(const iterator&) = delete;iterator(iterator&&) = default;iterator& operator=(const iterator&) = delete;iterator& operator=(iterator&&) = default;iterator& operator++();void operator++(int); Val& operator*() const;friend bool operator==(const iterator& x, default_sentinel_t);private: basic_istream_view* parent_; };}
constexpr explicit _iterator_(basic_istream_view& parent) noexcept;
Effects: Initializes parent_ with addressof(parent).
Effects: Equivalent to:*_parent__->stream_ >> _parent__->value_;return *this;
Effects: Equivalent to ++*this.
Effects: Equivalent to: return _parent__->value_;
friend bool operator==(const _iterator_& x, default_sentinel_t);
Effects: Equivalent to: return !*x._parent__->stream_;