|
7811 | 7811 | class zip_view<Views...>::@\exposid{iterator}@ {
|
7812 | 7812 | @\exposid{tuple-or-pair}@<iterator_t<@\exposid{maybe-const}@<Const, Views>>...> @\exposid{current_}@; // \expos
|
7813 | 7813 | constexpr explicit @\exposid{iterator}@(@\exposid{tuple-or-pair}@<iterator_t<@\exposid{maybe-const}@<Const, Views>>...>);
|
7814 |
| - // \expos |
| 7814 | + // \expos |
7815 | 7815 | public:
|
7816 |
| - using iterator_category = input_iterator_tag; // not always present |
| 7816 | + using iterator_category = input_iterator_tag; // not always present |
7817 | 7817 | using iterator_concept = @\seebelow@;
|
7818 | 7818 | using value_type = @\exposid{tuple-or-pair}@<range_value_t<@\exposid{maybe-const}@<Const, Views>>...>;
|
7819 | 7819 | using difference_type = common_type_t<range_difference_t<@\exposid{maybe-const}@<Const, Views>>...>;
|
|
7862 | 7862 | requires @\exposconcept{all-random-access}@<Const, Views...>;
|
7863 | 7863 | friend constexpr difference_type operator-(const @\exposid{iterator}@& x, const @\exposid{iterator}@& y)
|
7864 | 7864 | requires (@\libconcept{sized_sentinel_for}@<iterator_t<@\exposid{maybe-const}@<Const, Views>>,
|
7865 |
| - iterator_t<@\exposid{maybe-const}@<Const, Views>>> && ...); |
| 7865 | + iterator_t<@\exposid{maybe-const}@<Const, Views>>> && ...); |
7866 | 7866 |
|
7867 |
| - friend constexpr auto iter_move(const @\exposid{iterator}@& i) |
7868 |
| - noexcept(@\seebelow@); |
| 7867 | + friend constexpr auto iter_move(const @\exposid{iterator}@& i) noexcept(@\seebelow@); |
7869 | 7868 |
|
7870 |
| - friend constexpr void iter_swap(const @\exposid{iterator}@& l, const @\exposid{iterator}@& r) |
7871 |
| - noexcept(@\seebelow@) |
| 7869 | + friend constexpr void iter_swap(const @\exposid{iterator}@& l, const @\exposid{iterator}@& r) noexcept(@\seebelow@) |
7872 | 7870 | requires (@\libconcept{indirectly_swappable}@<iterator_t<@\exposid{maybe-const}@<Const, Views>>> && ...);
|
7873 | 7871 | };
|
7874 | 7872 | }
|
|
7914 | 7912 | \begin{itemdecl}
|
7915 | 7913 | constexpr @\exposid{iterator}@(@\exposid{iterator}@<!Const> i)
|
7916 | 7914 | requires Const &&
|
7917 |
| - (@\libconcept{convertible_to}@<iterator_t<Views>, iterator_t<@\exposid{maybe-const}@<Const, Views>>> && ...); |
| 7915 | + (@\libconcept{convertible_to}@<iterator_t<Views>, iterator_t<@\exposid{maybe-const}@<Const, Views>>> && ...); |
7918 | 7916 | \end{itemdecl}
|
7919 | 7917 |
|
7920 | 7918 | \begin{itemdescr}
|
|
8183 | 8181 | \end{itemdescr}
|
8184 | 8182 |
|
8185 | 8183 | \begin{itemdecl}
|
8186 |
| -friend constexpr auto iter_move(const @\exposid{iterator}@& i) |
8187 |
| - noexcept(@\seebelow@); |
| 8184 | +friend constexpr auto iter_move(const @\exposid{iterator}@& i) noexcept(@\seebelow@); |
8188 | 8185 | \end{itemdecl}
|
8189 | 8186 |
|
8190 | 8187 | \begin{itemdescr}
|
|
8197 | 8194 |
|
8198 | 8195 | \pnum
|
8199 | 8196 | \remarks
|
8200 |
| -The exception specification is equivalent to |
| 8197 | +The exception specification is equivalent to: |
8201 | 8198 | \begin{codeblock}
|
8202 | 8199 | (noexcept(ranges::iter_move(declval<const iterator_t<@\exposid{maybe-const}@<Const,
|
8203 | 8200 | Views>>&>())) && ...) &&
|
|
8215 | 8212 | \pnum
|
8216 | 8213 | \effects
|
8217 | 8214 | For every integer $0 \leq i < \tcode{sizeof...(Views)}$,
|
8218 |
| -performs |
| 8215 | +performs: |
8219 | 8216 | \begin{codeblock}
|
8220 |
| -ranges::iter_swap(std::get<@$i$@>(l.@\exposid{current_}@), std::get<@$i$@>(r.@\exposid{current_}@))} |
| 8217 | +ranges::iter_swap(std::get<@$i$@>(l.@\exposid{current_}@), std::get<@$i$@>(r.@\exposid{current_}@)) |
8221 | 8218 | \end{codeblock}
|
8222 | 8219 |
|
8223 | 8220 | \pnum
|
|
8246 | 8243 | @\exposid{sentinel}@() = default;
|
8247 | 8244 | constexpr @\exposid{sentinel}@(@\exposid{sentinel}@<!Const> i)
|
8248 | 8245 | requires Const &&
|
8249 |
| - (@\libconcept{convertible_to}@<sentinel_t<Views>, sentinel_t<@\exposid{maybe-const}@<Const, Views>>> && ...); |
| 8246 | + (@\libconcept{convertible_to}@<sentinel_t<Views>, sentinel_t<@\exposid{maybe-const}@<Const, Views>>> && ...); |
8250 | 8247 |
|
8251 | 8248 | template<bool OtherConst>
|
8252 | 8249 | requires (@\libconcept{sentinel_for}@<sentinel_t<@\exposid{maybe-const}@<Const, Views>>,
|
|
8281 | 8278 | \begin{itemdecl}
|
8282 | 8279 | constexpr @\exposid{sentinel}@(@\exposid{sentinel}@<!Const> i)
|
8283 | 8280 | requires Const &&
|
8284 |
| - (@\libconcept{convertible_to}@<sentinel_t<Views>, sentinel_t<@\exposid{maybe-const}@<Const, Views>>> && ...); |
| 8281 | + (@\libconcept{convertible_to}@<sentinel_t<Views>, sentinel_t<@\exposid{maybe-const}@<Const, Views>>> && ...); |
8285 | 8282 | \end{itemdecl}
|
8286 | 8283 |
|
8287 | 8284 | \begin{itemdescr}
|
|
8624 | 8621 | \pnum
|
8625 | 8622 | \remarks
|
8626 | 8623 | Let \tcode{Is} be the pack \tcode{0, 1, \ldots, \tcode{(sizeof...(Views)-1)}}.
|
8627 |
| -The exception specification is equivalent to |
| 8624 | +The exception specification is equivalent to: |
8628 | 8625 | \tcode{noexcept(invoke(*\exposid{parent_}->\exposid{fun_}, *std::get<Is>(\exposid{inner_}.\exposid{current_})...))}.
|
8629 | 8626 | \end{itemdescr}
|
8630 | 8627 |
|
|
8940 | 8937 | namespace std::ranges {
|
8941 | 8938 | template<@\libconcept{forward_range}@ V, size_t N>
|
8942 | 8939 | requires @\libconcept{view}@<V> && (N > 0)
|
8943 |
| - class adjacent_view : public view_interface<adjacent_view<V, N>>{ |
| 8940 | + class adjacent_view : public view_interface<adjacent_view<V, N>> { |
8944 | 8941 | V @\exposid{base_}@ = V(); // \expos
|
8945 | 8942 |
|
8946 | 8943 | // \ref{range.adjacent.iterator}, class template \tcode{adjacent_view::\exposid{iterator}}
|
|
8962 | 8959 | return @\exposid{iterator}@<true>(ranges::begin(@\exposid{base_}@), ranges::end(@\exposid{base_}@));
|
8963 | 8960 | }
|
8964 | 8961 |
|
8965 |
| - constexpr auto end() requires (!@\libconcept{simple-view}@<V>) { |
| 8962 | + constexpr auto end() requires (!@\exposconcept{simple-view}@<V>) { |
8966 | 8963 | if constexpr (@\libconcept{common_range}@<V>) {
|
8967 | 8964 | return @\exposid{iterator}@<false>(@\exposid{as-sentinel}@{}, ranges::begin(@\exposid{base_}@), ranges::end(@\exposid{base_}@));
|
8968 | 8965 | } else {
|
|
9051 | 9048 | requires @\libconcept{random_access_range}@<@\exposid{Base}@>;
|
9052 | 9049 |
|
9053 | 9050 | friend constexpr bool operator==(const @\exposid{iterator}@& x, const @\exposid{iterator}@& y);
|
9054 |
| - |
9055 | 9051 | friend constexpr bool operator<(const @\exposid{iterator}@& x, const @\exposid{iterator}@& y)
|
9056 | 9052 | requires @\libconcept{random_access_range}@<@\exposid{Base}@>;
|
9057 | 9053 | friend constexpr bool operator>(const @\exposid{iterator}@& x, const @\exposid{iterator}@& y)
|
|
9396 | 9392 |
|
9397 | 9393 | \pnum
|
9398 | 9394 | \remarks
|
9399 |
| -The exception specification is equivalent to |
| 9395 | +The exception specification is equivalent to: |
9400 | 9396 | \begin{codeblock}
|
9401 | 9397 | noexcept(ranges::iter_move(declval<const iterator_t<@\exposid{Base}@>&>())) &&
|
9402 | 9398 | is_nothrow_move_constructible_v<range_rvalue_reference_t<@\exposid{Base}@>>
|
|
9440 | 9436 | using @\exposid{Base}@ = @\exposid{maybe-const}@<Const, V>; // \expos
|
9441 | 9437 | sentinel_t<@\exposid{Base}@> @\exposid{end_}@ = sentinel_t<@\exposid{Base}@>(); // \expos
|
9442 | 9438 | constexpr explicit @\exposid{sentinel}@(sentinel_t<@\exposid{Base}@> end); // \expos
|
| 9439 | + |
9443 | 9440 | public:
|
9444 | 9441 | @\exposid{sentinel}@() = default;
|
9445 | 9442 | constexpr @\exposid{sentinel}@(@\exposid{sentinel}@<!Const> i)
|
|
9593 | 9590 |
|
9594 | 9591 | public:
|
9595 | 9592 | adjacent_transform_view() = default;
|
9596 |
| - |
9597 | 9593 | constexpr explicit adjacent_transform_view(V base, F fun);
|
9598 | 9594 |
|
9599 | 9595 | constexpr auto begin() {
|
|
9679 | 9675 | constexpr decltype(auto) operator*() const noexcept(@\seebelow@);
|
9680 | 9676 | constexpr @\exposid{iterator}@& operator++();
|
9681 | 9677 | constexpr @\exposid{iterator}@ operator++(int);
|
9682 |
| - |
9683 | 9678 | constexpr @\exposid{iterator}@& operator--() requires @\libconcept{bidirectional_range}@<@\exposid{Base}@>;
|
9684 | 9679 | constexpr @\exposid{iterator}@ operator--(int) requires @\libconcept{bidirectional_range}@<@\exposid{Base}@>;
|
9685 |
| - |
9686 | 9680 | constexpr @\exposid{iterator}@& operator+=(difference_type x) requires @\libconcept{random_access_range}@<@\exposid{Base}@>;
|
9687 | 9681 | constexpr @\exposid{iterator}@& operator-=(difference_type x) requires @\libconcept{random_access_range}@<@\exposid{Base}@>;
|
9688 | 9682 |
|
9689 | 9683 | constexpr decltype(auto) operator[](difference_type n) const
|
9690 | 9684 | requires @\libconcept{random_access_range}@<@\exposid{Base}@>;
|
9691 | 9685 |
|
9692 | 9686 | friend constexpr bool operator==(const @\exposid{iterator}@& x, const @\exposid{iterator}@& y);
|
9693 |
| - |
9694 | 9687 | friend constexpr bool operator<(const @\exposid{iterator}@& x, const @\exposid{iterator}@& y)
|
9695 | 9688 | requires @\libconcept{random_access_range}@<@\exposid{Base}@>;
|
9696 | 9689 | friend constexpr bool operator>(const @\exposid{iterator}@& x, const @\exposid{iterator}@& y)
|
|
9786 | 9779 | \pnum
|
9787 | 9780 | \remarks
|
9788 | 9781 | Let \tcode{Is} be the pack \tcode{0, 1, \ldots, (N-1)}.
|
9789 |
| -The exception specification is equivalent to |
| 9782 | +The exception specification is equivalent to: |
9790 | 9783 | \begin{codeblock}
|
9791 | 9784 | noexcept(invoke(*@\exposid{parent_}@->@\exposid{fun_}@, *std::get<Is>(@\exposid{inner_}@.@\exposid{current_}@)...))
|
9792 | 9785 | \end{codeblock}
|
|
9965 | 9958 | class adjacent_transform_view<V, F, N>::@\exposid{sentinel}@ {
|
9966 | 9959 | @\exposid{inner-sentinel}@<Const> @\exposid{inner_}@; // \expos
|
9967 | 9960 | constexpr explicit @\exposid{sentinel}@(@\exposid{inner-sentinel}@<Const> inner); // \expos
|
| 9961 | + |
9968 | 9962 | public:
|
9969 | 9963 | @\exposid{sentinel}@() = default;
|
9970 | 9964 | constexpr @\exposid{sentinel}@(@\exposid{sentinel}@<!Const> i)
|
|
0 commit comments