Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 41 additions & 41 deletions source/ranges.tex
Original file line number Diff line number Diff line change
Expand Up @@ -3119,7 +3119,8 @@
requires @\exposconcept{weakly-equality-comparable-with}@<W, Bound> && @\libconcept{copyable}@<W>
struct iota_view<W, Bound>::@\exposid{iterator}@ {
private:
W @\exposid{value_}@ = W(); // \expos
W @\exposid{value_}@ = W(); // \expos
constexpr explicit @\exposid{iterator}@(W value); // \expos

public:
using iterator_concept = @\seebelow@;
Expand All @@ -3129,7 +3130,6 @@
using difference_type = @\placeholdernc{IOTA-DIFF-T}@(W);

@\exposid{iterator}@() requires @\libconcept{default_initializable}@<W> = default;
constexpr explicit @\exposid{iterator}@(W value);

constexpr W operator*() const noexcept(is_nothrow_copy_constructible_v<W>);

Expand Down Expand Up @@ -3500,11 +3500,11 @@
requires @\exposconcept{weakly-equality-comparable-with}@<W, Bound> && @\libconcept{copyable}@<W>
struct iota_view<W, Bound>::@\exposid{sentinel}@ {
private:
Bound @\exposid{bound_}@ = Bound(); // \expos
Bound @\exposid{bound_}@ = Bound(); // \expos
constexpr explicit @\exposid{sentinel}@(Bound bound); // \expos

public:
@\exposid{sentinel}@() = default;
constexpr explicit @\exposid{sentinel}@(Bound bound);

friend constexpr bool operator==(const @\exposid{iterator}@& x, const @\exposid{sentinel}@& y);

Expand Down Expand Up @@ -4100,8 +4100,6 @@
using difference_type = ptrdiff_t;
using value_type = Val;

constexpr explicit @\exposid{iterator}@(basic_istream_view& parent) noexcept;

@\exposid{iterator}@(const @\exposid{iterator}@&) = delete;
@\exposid{iterator}@(@\exposid{iterator}@&&) = default;

Expand All @@ -4116,7 +4114,8 @@
friend bool operator==(const @\exposid{iterator}@& x, default_sentinel_t);

private:
basic_istream_view* @\exposid{parent_}@; // \expos
constexpr explicit @\exposid{iterator}@(basic_istream_view& parent) noexcept; // \expos
basic_istream_view* @\exposid{parent_}@; // \expos
};
}
\end{codeblock}
Expand Down Expand Up @@ -4880,8 +4879,9 @@
requires @\libconcept{view}@<V> && is_object_v<Pred>
class filter_view<V, Pred>::@\exposid{iterator}@ {
private:
iterator_t<V> @\exposid{current_}@ = iterator_t<V>(); // \expos
filter_view* @\exposid{parent_}@ = nullptr; // \expos
iterator_t<V> @\exposid{current_}@ = iterator_t<V>(); // \expos
filter_view* @\exposid{parent_}@ = nullptr; // \expos
constexpr @\exposid{iterator}@(filter_view& parent, iterator_t<V> current); // \expos

public:
using iterator_concept = @\seebelownc@;
Expand All @@ -4890,7 +4890,6 @@
using difference_type = range_difference_t<V>;

@\exposid{iterator}@() requires @\libconcept{default_initializable}@<iterator_t<V>> = default;
constexpr @\exposid{iterator}@(filter_view& parent, iterator_t<V> current);

constexpr const iterator_t<V>& base() const & noexcept;
constexpr iterator_t<V> base() &&;
Expand Down Expand Up @@ -5135,11 +5134,11 @@
requires @\libconcept{view}@<V> && is_object_v<Pred>
class filter_view<V, Pred>::@\exposid{sentinel}@ {
private:
sentinel_t<V> @\exposid{end_}@ = sentinel_t<V>(); // \expos
sentinel_t<V> @\exposid{end_}@ = sentinel_t<V>(); // \expos
constexpr explicit @\exposid{sentinel}@(filter_view& parent); // \expos

public:
@\exposid{sentinel}@() = default;
constexpr explicit @\exposid{sentinel}@(filter_view& parent);

constexpr sentinel_t<V> base() const;

Expand Down Expand Up @@ -5380,10 +5379,11 @@
template<bool Const>
class transform_view<V, F>::@\exposid{iterator}@ {
private:
using @\exposidnc{Parent}@ = @\exposidnc{maybe-const}@<Const, transform_view>; // \expos
using @\exposidnc{Base}@ = @\exposidnc{maybe-const}@<Const, V>; // \expos
iterator_t<@\exposidnc{Base}@> @\exposid{current_}@ = iterator_t<@\exposidnc{Base}@>(); // \expos
@\exposidnc{Parent}@* @\exposid{parent_}@ = nullptr; // \expos
using @\exposidnc{Parent}@ = @\exposidnc{maybe-const}@<Const, transform_view>; // \expos
using @\exposidnc{Base}@ = @\exposidnc{maybe-const}@<Const, V>; // \expos
iterator_t<@\exposidnc{Base}@> @\exposid{current_}@ = iterator_t<@\exposidnc{Base}@>(); // \expos
@\exposidnc{Parent}@* @\exposid{parent_}@ = nullptr; // \expos
constexpr @\exposid{iterator}@(@\exposid{Parent}@& parent, iterator_t<@\exposidnc{Base}@> current); // \expos

public:
using iterator_concept = @\seebelownc@;
Expand All @@ -5393,7 +5393,6 @@
using difference_type = range_difference_t<@\exposid{Base}@>;

@\exposid{iterator}@() requires @\libconcept{default_initializable}@<iterator_t<@\exposid{Base}@>> = default;
constexpr @\exposid{iterator}@(@\exposid{Parent}@& parent, iterator_t<@\exposid{Base}@> current);
constexpr @\exposid{iterator}@(@\exposid{iterator}@<!Const> i)
requires Const && @\libconcept{convertible_to}@<iterator_t<V>, iterator_t<@\exposid{Base}@>>;

Expand Down Expand Up @@ -5767,10 +5766,10 @@
using @\exposid{Parent}@ = @\exposid{maybe-const}@<Const, transform_view>; // \expos
using @\exposid{Base}@ = @\exposid{maybe-const}@<Const, V>; // \expos
sentinel_t<@\exposid{Base}@> @\exposid{end_}@ = sentinel_t<@\exposid{Base}@>(); // \expos
constexpr explicit @\exposid{sentinel}@(sentinel_t<@\exposid{Base}@> end); // \expos

public:
@\exposid{sentinel}@() = default;
constexpr explicit @\exposid{sentinel}@(sentinel_t<@\exposid{Base}@> end);
constexpr @\exposid{sentinel}@(@\exposid{sentinel}@<!Const> i)
requires Const && @\libconcept{convertible_to}@<sentinel_t<V>, sentinel_t<@\exposid{Base}@>>;

Expand Down Expand Up @@ -6109,10 +6108,10 @@
template<bool OtherConst>
using @\exposid{CI}@ = counted_iterator<iterator_t<@\exposid{maybe-const}@<OtherConst, V>>>; // \expos
sentinel_t<@\exposid{Base}@> @\exposid{end_}@ = sentinel_t<@\exposid{Base}@>(); // \expos
constexpr explicit @\exposid{sentinel}@(sentinel_t<@\exposid{Base}@> end); // \expos

public:
@\exposid{sentinel}@() = default;
constexpr explicit @\exposid{sentinel}@(sentinel_t<@\exposid{Base}@> end);
constexpr @\exposid{sentinel}@(@\exposid{sentinel}@<!Const> s)
requires Const && @\libconcept{convertible_to}@<sentinel_t<V>, sentinel_t<@\exposid{Base}@>>;

Expand Down Expand Up @@ -6292,14 +6291,14 @@
@\libconcept{indirect_unary_predicate}@<const Pred, iterator_t<V>>
template<bool Const>
class take_while_view<V, Pred>::@\exposidnc{sentinel}@ {
using @\exposidnc{Base}@ = @\exposidnc{maybe-const}@<Const, V>; // \expos
using @\exposidnc{Base}@ = @\exposidnc{maybe-const}@<Const, V>; // \expos

sentinel_t<@\exposidnc{Base}@> @\exposid{end_}@ = sentinel_t<@\exposidnc{Base}@>(); // \expos
const Pred* @\exposid{pred_}@ = nullptr; // \expos
sentinel_t<@\exposidnc{Base}@> @\exposid{end_}@ = sentinel_t<@\exposidnc{Base}@>(); // \expos
const Pred* @\exposid{pred_}@ = nullptr; // \expos
constexpr explicit @\exposid{sentinel}@(sentinel_t<@\exposid{Base}@> end, const Pred* pred); // \expos

public:
@\exposid{sentinel}@() = default;
constexpr explicit @\exposid{sentinel}@(sentinel_t<@\exposid{Base}@> end, const Pred* pred);
constexpr @\exposid{sentinel}@(@\exposid{sentinel}@<!Const> s)
requires Const && @\libconcept{convertible_to}@<sentinel_t<V>, sentinel_t<@\exposid{Base}@>>;

Expand Down Expand Up @@ -7152,11 +7151,11 @@
using @\exposid{Parent}@ = @\exposid{maybe-const}@<Const, join_view>; // \expos
using @\exposid{Base}@ = @\exposid{maybe-const}@<Const, V>; // \expos
sentinel_t<@\exposid{Base}@> @\exposid{end_}@ = sentinel_t<@\exposid{Base}@>(); // \expos
constexpr explicit @\exposid{sentinel}@(@\exposid{Parent}@& parent); // \expos

public:
@\exposid{sentinel}@() = default;

constexpr explicit @\exposid{sentinel}@(@\exposid{Parent}@& parent);
constexpr @\exposid{sentinel}@(@\exposid{sentinel}@<!Const> s)
requires Const && @\libconcept{convertible_to}@<sentinel_t<V>, sentinel_t<@\exposid{Base}@>>;

Expand Down Expand Up @@ -7998,6 +7997,10 @@
// if \tcode{V} models \libconcept{forward_range}

bool @\exposid{trailing_empty_}@ = false; // \expos
constexpr explicit @\exposid{outer-iterator}@(@\exposid{Parent}@& parent) // \expos
requires (!@\libconcept{forward_range}@<@\exposid{Base}@>);
constexpr @\exposid{outer-iterator}@(@\exposid{Parent}@& parent, iterator_t<@\exposid{Base}@> current) // \expos
requires @\libconcept{forward_range}@<@\exposid{Base}@>;

public:
using iterator_concept =
Expand All @@ -8011,10 +8014,6 @@
using difference_type = range_difference_t<@\exposid{Base}@>;

@\exposid{outer-iterator}@() = default;
constexpr explicit @\exposid{outer-iterator}@(@\exposid{Parent}@& parent)
requires (!@\libconcept{forward_range}@<@\exposid{Base}@>);
constexpr @\exposid{outer-iterator}@(@\exposid{Parent}@& parent, iterator_t<@\exposid{Base}@> current)
requires @\libconcept{forward_range}@<@\exposid{Base}@>;
constexpr @\exposid{outer-iterator}@(@\exposid{outer-iterator}@<!Const> i)
requires Const && @\libconcept{convertible_to}@<iterator_t<V>, iterator_t<@\exposid{Base}@>>;

Expand Down Expand Up @@ -8232,9 +8231,10 @@
template<bool Const>
struct lazy_split_view<V, Pattern>::@\exposid{inner-iterator}@ {
private:
using @\exposidnc{Base}@ = @\exposidnc{maybe-const}@<Const, V>; // \expos
@\exposidnc{outer-iterator}@<Const> @\exposid{i_}@ = @\exposidnc{outer-iterator}@<Const>(); // \expos
bool @\exposid{incremented_}@ = false; // \expos
using @\exposidnc{Base}@ = @\exposidnc{maybe-const}@<Const, V>; // \expos
@\exposidnc{outer-iterator}@<Const> @\exposid{i_}@ = @\exposidnc{outer-iterator}@<Const>(); // \expos
bool @\exposid{incremented_}@ = false; // \expos
constexpr explicit @\exposid{inner-iterator}@(@\exposidnc{outer-iterator}@<Const> i); // \expos

public:
using iterator_concept = @\exposid{outer-iterator}@<Const>::iterator_concept;
Expand All @@ -8245,7 +8245,6 @@
using difference_type = range_difference_t<@\exposid{Base}@>;

@\exposid{inner-iterator}@() = default;
constexpr explicit @\exposid{inner-iterator}@(@\exposid{outer-iterator}@<Const> i);

constexpr const iterator_t<@\exposid{Base}@>& base() const & noexcept;
constexpr iterator_t<@\exposid{Base}@> base() && requires @\libconcept{forward_range}@<V>;
Expand Down Expand Up @@ -8556,10 +8555,12 @@
@\libconcept{indirectly_comparable}@<iterator_t<V>, iterator_t<Pattern>, ranges::equal_to>
class split_view<V, Pattern>::@\exposid{iterator}@ {
private:
split_view* @\exposid{parent_}@ = nullptr; // \expos
iterator_t<V> @\exposid{cur_}@ = iterator_t<V>(); // \expos
subrange<iterator_t<V>> @\exposid{next_}@ = subrange<iterator_t<V>>(); // \expos
bool @\exposid{trailing_empty_}@ = false; // \expos
split_view* @\exposid{parent_}@ = nullptr; // \expos
iterator_t<V> @\exposid{cur_}@ = iterator_t<V>(); // \expos
subrange<iterator_t<V>> @\exposid{next_}@ = subrange<iterator_t<V>>(); // \expos
bool @\exposid{trailing_empty_}@ = false; // \expos
constexpr @\exposid{iterator}@(split_view& parent, iterator_t<V> current, // \expos
subrange<iterator_t<V>> next);

public:
using iterator_concept = forward_iterator_tag;
Expand All @@ -8568,7 +8569,6 @@
using difference_type = range_difference_t<V>;

@\exposid{iterator}@() = default;
constexpr @\exposid{iterator}@(split_view& parent, iterator_t<V> current, subrange<iterator_t<V>> next);

constexpr iterator_t<V> base() const;
constexpr value_type operator*() const;
Expand Down Expand Up @@ -8683,10 +8683,10 @@
struct split_view<V, Pattern>::@\exposid{sentinel}@ {
private:
sentinel_t<V> @\exposid{end_}@ = sentinel_t<V>(); // \expos
constexpr explicit @\exposid{sentinel}@(split_view& parent); // \expos

public:
@\exposid{sentinel}@() = default;
constexpr explicit @\exposid{sentinel}@(split_view& parent);

friend constexpr bool operator==(const @\exposid{iterator}@& x, const @\exposid{sentinel}@& y);
};
Expand Down Expand Up @@ -10322,6 +10322,7 @@
iterator_t<@\exposid{Base}@> @\exposid{current_}@ = iterator_t<@\exposid{Base}@>(); // \expos

static constexpr decltype(auto) @\exposid{get-element}@(const iterator_t<@\exposid{Base}@>& i); // \expos
constexpr explicit @\exposid{iterator}@(iterator_t<@\exposid{Base}@> current); // \expos

public:
using iterator_concept = @\seebelow@;
Expand All @@ -10330,7 +10331,6 @@
using difference_type = range_difference_t<@\exposid{Base}@>;

@\exposid{iterator}@() requires @\libconcept{default_initializable}@<iterator_t<@\exposid{Base}@>> = default;
constexpr explicit @\exposid{iterator}@(iterator_t<@\exposid{Base}@> current);
constexpr @\exposid{iterator}@(@\exposid{iterator}@<!Const> i)
requires Const && @\libconcept{convertible_to}@<iterator_t<V>, iterator_t<@\exposid{Base}@>>;

Expand Down Expand Up @@ -10717,12 +10717,12 @@
template<bool Const>
class elements_view<V, N>::@\exposid{sentinel}@ {
private:
using @\exposid{Base}@ = @\exposid{maybe-const}@<Const, V>; // \expos
using @\exposid{Base}@ = @\exposidnc{maybe-const}@<Const, V>; // \expos
sentinel_t<@\exposid{Base}@> @\exposid{end_}@ = sentinel_t<@\exposid{Base}@>(); // \expos
constexpr explicit @\exposid{sentinel}@(sentinel_t<@\exposid{Base}@> end); // \expos

public:
@\exposid{sentinel}@() = default;
constexpr explicit @\exposid{sentinel}@(sentinel_t<@\exposid{Base}@> end);
constexpr @\exposid{sentinel}@(@\exposid{sentinel}@<!Const> other)
requires Const && @\libconcept{convertible_to}@<sentinel_t<V>, sentinel_t<@\exposid{Base}@>>;

Expand Down
Loading