[range.iota.sentinel] (original) (raw)

25 Ranges library [ranges]

25.6 Range factories [range.factories]

25.6.4 Iota view [range.iota]

25.6.4.4 Class iota_view​::​sentinel [range.iota.sentinel]

namespace std::ranges { template<weakly_incrementable W, semiregular Bound> requires weakly-equality-comparable-with<W, Bound> && copyable<W> struct iota_view<W, Bound>::sentinel { private: Bound bound_ = Bound(); public: sentinel() = default;constexpr explicit sentinel(Bound bound);friend constexpr bool operator==(const iterator& x, const sentinel& y);friend constexpr iter_difference_t<W> operator-(const iterator& x, const sentinel& y) requires sized_sentinel_for<Bound, W>;friend constexpr iter_difference_t<W> operator-(const sentinel& x, const iterator& y) requires sized_sentinel_for<Bound, W>;};}

constexpr explicit _sentinel_(Bound bound);

Effects: Initializes bound_ with bound.

friend constexpr bool operator==(const _iterator_& x, const _sentinel_& y);

Effects: Equivalent to: return x.value_ == y.bound_;

friend constexpr iter_difference_t<W> operator-(const _iterator_& x, const _sentinel_& y) requires [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized%5Fsentinel%5Ffor "24.3.4.8 Concept sized_­sentinel_­for [iterator.concept.sizedsentinel]")<Bound, W>;

Effects: Equivalent to: return x.value_ - y.bound_;

friend constexpr iter_difference_t<W> operator-(const _sentinel_& x, const _iterator_& y) requires [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized%5Fsentinel%5Ffor "24.3.4.8 Concept sized_­sentinel_­for [iterator.concept.sizedsentinel]")<Bound, W>;

Effects: Equivalent to: return -(y - x);