namespace std::ranges {
template<input_range V, forward_range Pattern>
requires view<V> && view<Pattern> &&
indirectly_comparable<iterator_t<V>, iterator_t<Pattern>, ranges::equal_to> &&
(forward_range<V> || tiny-range<Pattern>)
template<bool Const>
struct split_view<V, Pattern>::outer-iterator<Const>::value_type
: view_interface<value_type> {
private:
outer-iterator i_ = outer-iterator();
public:
value_type() = default;
constexpr explicit value_type(outer-iterator i);
constexpr inner-iterator<Const> begin() const requires copyable<outer-iterator>;
constexpr inner-iterator<Const> begin() requires (!copyable<outer-iterator>);
constexpr default_sentinel_t end() const;
};
}
constexpr explicit value_type(outer-iterator i);
Effects: Initializes
i_ with
std::move(i). constexpr inner-iterator<Const> begin() const requires copyable<outer-iterator>;
Effects: Equivalent to: return inner-iterator<Const>{i_};
constexpr inner-iterator<Const> begin() requires (!copyable<outer-iterator>);
Effects: Equivalent to: return inner-iterator<Const>{std::move(i_)};
constexpr default_sentinel_t end() const;
Effects: Equivalent to: return default_sentinel;