2.8 KiB
[range.istream.iterator]
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 &&stream-extractable<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_; // exposition only};}
constexpr explicit iterator(basic_istream_view& parent) noexcept;
Effects: Initializes parent_ with addressof(parent).
iterator& operator++();
Effects: Equivalent to:**parent_*->stream_ >> parent_->value_;return *this;
void operator++(int);
Effects: Equivalent to ++*this.
Val& operator*() const;
Effects: Equivalent to: return parent_->value_;
friend bool operator==(const iterator& x, default_sentinel_t);
Effects: Equivalent to: return !*x.parent_->stream_;