4.8 KiB
[range.zip.transform.sentinel]
25 Ranges library [ranges]
25.7 Range adaptors [range.adaptors]
25.7.26 Zip transform view [range.zip.transform]
25.7.26.4 Class template zip_transform_view::sentinel [range.zip.transform.sentinel]
namespace std::ranges {template<move_constructible F, input_range... Views>requires (view && ...) && (sizeof...(Views) > 0) && is_object_v &®ular_invocable<F&, range_reference_t...> &&can-reference<invoke_result_t<F&, range_reference_t...>>templateclass zip_transform_view<F, Views...>::sentinel {zentinel inner_; // exposition onlyconstexpr explicit sentinel(zentinel inner); // exposition onlypublic:sentinel() = default; constexpr sentinel(sentinel i)requires Const && convertible_to<zentinel, zentinel>; templaterequires sentinel_for<zentinel, ziperator>friend constexpr bool operator==(const iterator& x, const sentinel& y); templaterequires sized_sentinel_for<zentinel, ziperator>friend constexpr range_difference_t<maybe-const<OtherConst, InnerView>>operator-(const iterator& x, const sentinel& y); templaterequires sized_sentinel_for<zentinel, ziperator>friend constexpr range_difference_t<maybe-const<OtherConst, InnerView>>operator-(const sentinel& x, const iterator& y); };}
constexpr explicit sentinel(zentinel<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]")<zentinel<false>, zentinel<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]")<zentinel<Const>, ziperator<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](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_sentinel_for [iterator.concept.sizedsentinel]")<zentinel<Const>, ziperator<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](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_sentinel_for [iterator.concept.sizedsentinel]")<zentinel<Const>, ziperator<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_;