5.0 KiB
[range.adjacent.transform.sentinel]
25 Ranges library [ranges]
25.7 Range adaptors [range.adaptors]
25.7.28 Adjacent transform view [range.adjacent.transform]
25.7.28.4 Class template adjacent_transform_view::sentinel [range.adjacent.transform.sentinel]
namespace std::ranges {template<forward_range V, move_constructible F, size_t N>requires view && (N > 0) && is_object_v &®ular_invocable<F&, REPEAT(range_reference_t, N)...> &&can-reference<invoke_result_t<F&, REPEAT(range_reference_t, N)...>>templateclass adjacent_transform_view<V, F, N>::sentinel {inner-sentinel inner_; // exposition onlyconstexpr explicit sentinel(inner-sentinel inner); // exposition onlypublic:sentinel() = default; constexpr sentinel(sentinel i)requires Const && convertible_to<inner-sentinel, inner-sentinel>; templaterequires sentinel_for<inner-sentinel, inner-iterator>friend constexpr bool operator==(const iterator& x, const sentinel& y); templaterequires sized_sentinel_for<inner-sentinel, inner-iterator>friend constexpr range_difference_t<maybe-const<OtherConst, InnerView>>operator-(const iterator& x, const sentinel& y); templaterequires sized_sentinel_for<inner-sentinel, inner-iterator>friend constexpr range_difference_t<maybe-const<OtherConst, InnerView>>operator-(const sentinel& x, const iterator& y); };}
constexpr explicit sentinel(inner-sentinel<Const> inner);
Effects: Initializes inner_ with inner.
constexpr sentinel(sentinel<!Const> i) requires Const && [convertible_to](concept.convertible#concept:convertible_to "18.4.4 Concept convertible_to [concept.convertible]")<inner-sentinel<false>, inner-sentinel<Const>>;
Effects: Initializes inner_ with std::move(i.inner_).
template<bool OtherConst> requires [sentinel_for](iterator.concept.sentinel#concept:sentinel_for "24.3.4.7 Concept sentinel_for [iterator.concept.sentinel]")<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 requires sized_sentinel_for<inner-sentinel, inner-iterator> friend constexpr range_difference_t<maybe-const<OtherConst, InnerView>> operator-(const iterator& x, const sentinel& y);
template requires sized_sentinel_for<inner-sentinel, inner-iterator> friend constexpr range_difference_t<maybe-const<OtherConst, InnerView>> operator-(const sentinel& x, const iterator& y); `
Effects: Equivalent to: return x.inner_ - y.inner_;