24 Ranges library [ranges]

24.7 Range adaptors [range.adaptors]

24.7.22 Adjacent transform view [range.adjacent.transform]

24.7.22.4 Class template adjacent_­transform_­view​::​sentinel [range.adjacent.transform.sentinel]

namespace std::ranges { template<forward_­range V, copy_­constructible F, size_t N> requires view<V> && (N > 0) && is_object_v<F> && regular_­invocable<F&, REPEAT(range_reference_t<V>, N)...> && can-reference<invoke_result_t<F&, REPEAT(range_reference_t<V>, N)...>> template<bool Const> class adjacent_transform_view<V, F, N>::sentinel { inner-sentinel<Const> inner_; // exposition only constexpr explicit sentinel(inner-sentinel<Const> inner); // exposition only public: sentinel() = default; constexpr sentinel(sentinel<!Const> i) requires Const && convertible_­to<inner-sentinel<false>, inner-sentinel<Const>>; template<bool OtherConst> requires sentinel_­for<inner-sentinel<Const>, inner-iterator<OtherConst>> friend constexpr bool operator==(const iterator<OtherConst>& x, const sentinel& y); template<bool OtherConst> requires sized_­sentinel_­for<inner-sentinel<Const>, inner-iterator<OtherConst>> friend constexpr range_difference_t<maybe-const<OtherConst, InnerView>> operator-(const iterator<OtherConst>& x, const sentinel& y); template<bool OtherConst> requires sized_­sentinel_­for<inner-sentinel<Const>, inner-iterator<OtherConst>> friend constexpr range_difference_t<maybe-const<OtherConst, InnerView>> operator-(const sentinel& x, const iterator<OtherConst>& y); }; }
constexpr explicit sentinel(inner-sentinel<Const> inner);
Effects: Initializes inner_­ with inner.
constexpr sentinel(sentinel<!Const> i) requires Const && convertible_­to<inner-sentinel<false>, inner-sentinel<Const>>;
Effects: Initializes inner_­ with std​::​move(i.inner_­).
template<bool OtherConst> requires sentinel_­for<inner-sentinel<Const>, inner-iterator<OtherConst>> friend constexpr bool operator==(const iterator<OtherConst>& x, const sentinel& y);
Effects: Equivalent to return x.inner_­ == y.inner_­;
template<bool OtherConst> requires sized_­sentinel_­for<inner-sentinel<Const>, inner-iterator<OtherConst>> friend constexpr range_difference_t<maybe-const<OtherConst, InnerView>> operator-(const iterator<OtherConst>& x, const sentinel& y); template<bool OtherConst> requires sized_­sentinel_­for<inner-sentinel<Const>, inner-iterator<OtherConst>> friend constexpr range_difference_t<maybe-const<OtherConst, InnerView>> operator-(const sentinel& x, const iterator<OtherConst>& y);
Effects: Equivalent to return x.inner_­ - y.inner_­;