|
2213 | 2213 | private: |
2214 | 2214 | // \ref{range.iota.iterator}, class \tcode{iota_view::\exposid{iterator}} |
2215 | 2215 | struct @\exposidnc{iterator}@; // \expos |
| 2216 | + |
2216 | 2217 | // \ref{range.iota.sentinel}, class \tcode{iota_view::\exposid{sentinel}} |
2217 | 2218 | struct @\exposidnc{sentinel}@; // \expos |
| 2219 | + |
2218 | 2220 | W @\exposid{value_}@ = W(); // \expos |
2219 | 2221 | Bound @\exposid{bound_}@ = Bound(); // \expos |
2220 | 2222 |
|
|
3525 | 3527 |
|
3526 | 3528 | // \ref{range.filter.iterator}, class \tcode{filter_view::\exposid{iterator}} |
3527 | 3529 | class @\exposid{iterator}@; // \expos |
| 3530 | + |
3528 | 3531 | // \ref{range.filter.sentinel}, class \tcode{filter_view::\exposid{sentinel}} |
3529 | 3532 | class @\exposid{sentinel}@; // \expos |
3530 | 3533 |
|
|
3948 | 3951 | private: |
3949 | 3952 | // \ref{range.transform.iterator}, class template \tcode{transform_view::\exposid{iterator}} |
3950 | 3953 | template<bool> struct @\exposid{iterator}@; // \expos |
| 3954 | + |
3951 | 3955 | // \ref{range.transform.sentinel}, class template \tcode{transform_view::\exposid{sentinel}} |
3952 | 3956 | template<bool> struct @\exposid{sentinel}@; // \expos |
3953 | 3957 |
|
|
4681 | 4685 | private: |
4682 | 4686 | V @\exposid{base_}@ = V(); // \expos |
4683 | 4687 | range_difference_t<V> @\exposid{count_}@ = 0; // \expos |
| 4688 | + |
4684 | 4689 | // \ref{range.take.sentinel}, class template \tcode{take_view::\exposid{sentinel}} |
4685 | 4690 | template<bool> struct @\exposid{sentinel}@; // \expos |
| 4691 | + |
4686 | 4692 | public: |
4687 | 4693 | take_view() requires @\libconcept{default_initializable}@<V> = default; |
4688 | 4694 | constexpr take_view(V base, range_difference_t<V> count); |
|
6396 | 6402 | private: |
6397 | 6403 | V @\exposid{base_}@ = V(); // \expos |
6398 | 6404 | Pattern @\exposid{pattern_}@ = Pattern(); // \expos |
| 6405 | + |
6399 | 6406 | // \ref{range.split.iterator}, class \tcode{split_view::\exposid{iterator}} |
6400 | 6407 | struct @\exposid{iterator}@; // \expos |
| 6408 | + |
6401 | 6409 | // \ref{range.split.sentinel}, class \tcode{split_view::\exposid{sentinel}} |
6402 | 6410 | struct @\exposid{sentinel}@; // \expos |
6403 | 6411 |
|
|
7084 | 7092 | private: |
7085 | 7093 | // \ref{range.elements.iterator}, class template \tcode{elements_view::\exposid{iterator}} |
7086 | 7094 | template<bool> struct @\exposid{iterator}@; // \expos |
| 7095 | + |
7087 | 7096 | // \ref{range.elements.sentinel}, class template \tcode{elements_view::\exposid{sentinel}} |
7088 | 7097 | template<bool> struct @\exposid{sentinel}@; // \expos |
| 7098 | + |
7089 | 7099 | V @\exposid{base_}@ = V(); // \expos |
7090 | 7100 | }; |
7091 | 7101 | } |
|
7689 | 7699 | template<@\libconcept{input_range}@... Views> |
7690 | 7700 | requires (@\libconcept{view}@<Views> && ...) && (sizeof...(Views) > 0) |
7691 | 7701 | class zip_view : public view_interface<zip_view<Views...>> { |
7692 | | - tuple<Views...> @\exposid{views_}@; // \expos |
| 7702 | + tuple<Views...> @\exposid{views_}@; // \expos |
7693 | 7703 |
|
7694 | 7704 | // \ref{range.zip.iterator}, class template \tcode{zip_view::\exposid{iterator}} |
7695 | | - template<bool> class @\exposid{iterator}@; // \expos |
| 7705 | + template<bool> class @\exposidnc{iterator}@; // \expos |
| 7706 | + |
7696 | 7707 | // \ref{range.zip.sentinel}, class template \tcode{zip_view::\exposid{sentinel}} |
7697 | | - template<bool> class @\exposid{sentinel}@; // \expos |
| 7708 | + template<bool> class @\exposidnc{sentinel}@; // \expos |
7698 | 7709 |
|
7699 | 7710 | public: |
7700 | 7711 | zip_view() = default; |
|
7790 | 7801 | \begin{codeblock} |
7791 | 7802 | namespace std::ranges { |
7792 | 7803 | template<bool Const, class... Views> |
7793 | | - concept @\defexposconcept{all-random-access}@ = // \expos |
| 7804 | + concept @\defexposconceptnc{all-random-access}@ = // \expos |
7794 | 7805 | (@\libconcept{random_access_range}@<@\exposid{maybe-const}@<Const, Views>> && ...); |
7795 | 7806 | template<bool Const, class... Views> |
7796 | | - concept @\defexposconcept{all-bidirectional}@ = // \expos |
| 7807 | + concept @\defexposconceptnc{all-bidirectional}@ = // \expos |
7797 | 7808 | (@\libconcept{bidirectional_range}@<@\exposid{maybe-const}@<Const, Views>> && ...); |
7798 | 7809 | template<bool Const, class... Views> |
7799 | | - concept @\defexposconcept{all-forward}@ = // \expos |
| 7810 | + concept @\defexposconceptnc{all-forward}@ = // \expos |
7800 | 7811 | (@\libconcept{forward_range}@<@\exposid{maybe-const}@<Const, Views>> && ...); |
7801 | 7812 |
|
7802 | 7813 | template<@\libconcept{input_range}@... Views> |
7803 | 7814 | requires (@\libconcept{view}@<Views> && ...) && (sizeof...(Views) > 0) |
7804 | 7815 | template<bool Const> |
7805 | 7816 | class zip_view<Views...>::@\exposid{iterator}@ { |
7806 | | - @\exposid{tuple-or-pair}@<iterator_t<@\exposid{maybe-const}@<Const, Views>>...> @\exposid{current_}@; // \expos |
7807 | | - constexpr explicit @\exposid{iterator}@(@\exposid{tuple-or-pair}@<iterator_t<@\exposid{maybe-const}@<Const, Views>>...>); |
| 7817 | + @\exposid{tuple-or-pair}@<iterator_t<@\exposidnc{maybe-const}@<Const, Views>>...> @\exposid{current_}@;@\itcorr[-1]@ // \expos |
| 7818 | + constexpr explicit @\exposidnc{iterator}@(@\exposid{tuple-or-pair}@<iterator_t<@\exposidnc{maybe-const}@<Const, Views>>...>); |
7808 | 7819 | // \expos |
7809 | 7820 | public: |
7810 | 7821 | using iterator_category = input_iterator_tag; // not always present |
|
8230 | 8241 | requires (@\libconcept{view}@<Views> && ...) && (sizeof...(Views) > 0) |
8231 | 8242 | template<bool Const> |
8232 | 8243 | class zip_view<Views...>::@\exposid{sentinel}@ { |
8233 | | - @\exposid{tuple-or-pair}@<sentinel_t<@\exposid{maybe-const}@<Const, Views>>...> @\exposid{end_}@; // \expos |
8234 | | - constexpr explicit @\exposid{sentinel}@(@\exposid{tuple-or-pair}@<sentinel_t<@\exposid{maybe-const}@<Const, Views>>...> end); |
| 8244 | + @\exposid{tuple-or-pair}@<sentinel_t<@\exposidnc{maybe-const}@<Const, Views>>...> @\exposid{end_}@;@\itcorr[-1]@ // \expos |
| 8245 | + constexpr explicit @\exposidnc{sentinel}@(@\exposid{tuple-or-pair}@<sentinel_t<@\exposidnc{maybe-const}@<Const, Views>>...> end); |
8235 | 8246 | // \expos |
8236 | 8247 | public: |
8237 | 8248 | @\exposid{sentinel}@() = default; |
|
8396 | 8407 | @\libconcept{regular_invocable}@<F&, range_reference_t<Views>...> && |
8397 | 8408 | @\exposconcept{can-reference}@<invoke_result_t<F&, range_reference_t<Views>...>> |
8398 | 8409 | class zip_transform_view : public view_interface<zip_transform_view<F, Views...>> { |
8399 | | - @\exposid{copyable-box}@<F> @\exposid{fun_}@; // \expos |
8400 | | - zip_view<Views...> @\exposid{zip_}@; // \expos |
| 8410 | + @\exposidnc{copyable-box}@<F> @\exposid{fun_}@; // \expos |
| 8411 | + zip_view<Views...> @\exposid{zip_}@; // \expos |
8401 | 8412 |
|
8402 | | - using @\exposid{InnerView}@ = zip_view<Views...>; // \expos |
| 8413 | + using @\exposidnc{InnerView}@ = zip_view<Views...>; // \expos |
8403 | 8414 | template<bool Const> |
8404 | | - using @\exposid{ziperator}@ = iterator_t<@\exposid{maybe-const}@<Const, @\exposid{InnerView}@>>; // \expos |
| 8415 | + using @\exposidnc{ziperator}@ = iterator_t<@\exposidnc{maybe-const}@<Const, @\exposidnc{InnerView}@>>; // \expos |
8405 | 8416 | template<bool Const> |
8406 | | - using @\exposid{zentinel}@ = sentinel_t<@\exposid{maybe-const}@<Const, @\exposid{InnerView}@>>; // \expos |
| 8417 | + using @\exposidnc{zentinel}@ = sentinel_t<@\exposidnc{maybe-const}@<Const, @\exposidnc{InnerView}@>>; // \expos |
8407 | 8418 |
|
8408 | 8419 | // \ref{range.zip.transform.iterator}, class template \tcode{zip_transform_view::\exposid{iterator}} |
8409 | | - template<bool> class @\exposid{iterator}@; // \expos |
| 8420 | + template<bool> class @\exposidnc{iterator}@; // \expos |
| 8421 | + |
8410 | 8422 | // \ref{range.zip.transform.sentinel}, class template \tcode{zip_transform_view::\exposid{sentinel}} |
8411 | | - template<bool> class @\exposid{sentinel}@; // \expos |
| 8423 | + template<bool> class @\exposidnc{sentinel}@; // \expos |
8412 | 8424 |
|
8413 | 8425 | public: |
8414 | 8426 | zip_transform_view() = default; |
|
8477 | 8489 | @\exposconcept{can-reference}@<invoke_result_t<F&, range_reference_t<Views>...>> |
8478 | 8490 | template<bool Const> |
8479 | 8491 | class zip_transform_view<F, Views...>::@\exposid{iterator}@ { |
8480 | | - using @\exposid{Parent}@ = @\exposid{maybe-const}@<Const, zip_transform_view>; // \expos |
8481 | | - using @\exposid{Base}@ = @\exposid{maybe-const}@<Const, @\exposid{InnerView}@>; // \expos |
8482 | | - @\exposid{Parent}@* @\exposid{parent_}@ = nullptr; // \expos |
8483 | | - @\exposid{ziperator}@<Const> @\exposid{inner_}@; // \expos |
| 8492 | + using @\exposidnc{Parent}@ = @\exposidnc{maybe-const}@<Const, zip_transform_view>; // \expos |
| 8493 | + using @\exposidnc{Base}@ = @\exposidnc{maybe-const}@<Const, @\exposidnc{InnerView}@>; // \expos |
| 8494 | + @\exposidnc{Parent}@* @\exposid{parent_}@ = nullptr; // \expos |
| 8495 | + @\exposid{ziperator}@<Const> @\exposid{inner_}@;@\itcorr[-1]@ // \expos |
8484 | 8496 |
|
8485 | | - constexpr @\exposid{iterator}@(@\exposid{Parent}@& parent, @\exposid{ziperator}@<Const> inner); // \expos |
| 8497 | + constexpr @\exposid{iterator}@(@\exposid{Parent}@& parent, @\exposid{ziperator}@<Const> inner); // \expos |
8486 | 8498 |
|
8487 | 8499 | public: |
8488 | | - using iterator_category = @\seebelow@; // not always present |
| 8500 | + using iterator_category = @\seebelownc@; // not always present |
8489 | 8501 | using iterator_concept = typename @\exposid{ziperator}@<Const>::iterator_concept; |
8490 | 8502 | using value_type = |
8491 | 8503 | remove_cvref_t<invoke_result_t<@\exposid{maybe-const}@<Const, F>&, |
|
8805 | 8817 | @\exposconcept{can-reference}@<invoke_result_t<F&, range_reference_t<Views>...>> |
8806 | 8818 | template<bool Const> |
8807 | 8819 | class zip_transform_view<F, Views...>::@\exposid{sentinel}@ { |
8808 | | - @\exposid{zentinel}@<Const> @\exposid{inner_}@; // \expos |
8809 | | - constexpr explicit @\exposid{sentinel}@(@\exposid{zentinel}@<Const> inner); // \expos |
| 8820 | + @\exposidnc{zentinel}@<Const> @\exposid{inner_}@; // \expos |
| 8821 | + constexpr explicit @\exposidnc{sentinel}@(@\exposidnc{zentinel}@<Const> inner); // \expos |
| 8822 | + |
8810 | 8823 | public: |
8811 | 8824 | @\exposid{sentinel}@() = default; |
8812 | 8825 | constexpr @\exposid{sentinel}@(@\exposid{sentinel}@<!Const> i) |
|
8933 | 8946 | V @\exposid{base_}@ = V(); // \expos |
8934 | 8947 |
|
8935 | 8948 | // \ref{range.adjacent.iterator}, class template \tcode{adjacent_view::\exposid{iterator}} |
8936 | | - template<bool> class @\exposid{iterator}@; // \expos |
| 8949 | + template<bool> class @\exposidnc{iterator}@; // \expos |
| 8950 | + |
8937 | 8951 | // \ref{range.adjacent.sentinel}, class template \tcode{adjacent_view::\exposid{sentinel}} |
8938 | | - template<bool> class @\exposid{sentinel}@; // \expos |
| 8952 | + template<bool> class @\exposidnc{sentinel}@; // \expos |
8939 | 8953 |
|
8940 | | - struct @\exposid{as-sentinel}@{}; // \expos |
| 8954 | + struct @\exposidnc{as-sentinel}@{}; // \expos |
8941 | 8955 |
|
8942 | 8956 | public: |
8943 | 8957 | adjacent_view() requires @\libconcept{default_initializable}@<V> = default; |
|
9009 | 9023 | requires @\libconcept{view}@<V> && (N > 0) |
9010 | 9024 | template<bool Const> |
9011 | 9025 | class adjacent_view<V, N>::@\exposid{iterator}@ { |
9012 | | - using @\exposid{Base}@ = @\exposid{maybe-const}@<Const, V>; // \expos |
9013 | | - array<iterator_t<@\exposid{Base}@>, N> @\exposid{current_}@ = array<iterator_t<@\exposid{Base}@>, N>(); // \expos |
9014 | | - constexpr @\exposid{iterator}@(iterator_t<@\exposid{Base}@> first, sentinel_t<@\exposid{Base}@> last); // \expos |
9015 | | - constexpr @\exposid{iterator}@(@\exposid{as-sentinel}@, iterator_t<@\exposid{Base}@> first, iterator_t<@\exposid{Base}@> last); |
| 9026 | + using @\exposidnc{Base}@ = @\exposidnc{maybe-const}@<Const, V>; // \expos |
| 9027 | + array<iterator_t<@\exposidnc{Base}@>, N> @\exposid{current_}@ = array<iterator_t<@\exposidnc{Base}@>, N>(); // \expos |
| 9028 | + constexpr @\exposidnc{iterator}@(iterator_t<@\exposidnc{Base}@> first, sentinel_t<@\exposidnc{Base}@> last); // \expos |
| 9029 | + constexpr @\exposidnc{iterator}@(@\exposidnc{as-sentinel}@, iterator_t<@\exposidnc{Base}@> first, iterator_t<@\exposidnc{Base}@> last); |
9016 | 9030 | // \expos |
9017 | 9031 | public: |
9018 | 9032 | using iterator_category = input_iterator_tag; |
|
9566 | 9580 | @\libconcept{regular_invocable}@<F&, @\exposid{REPEAT}@(range_reference_t<V>, N)...> && |
9567 | 9581 | @\exposconcept{can-reference}@<invoke_result_t<F&, @\exposid{REPEAT}@(range_reference_t<V>, N)...>> |
9568 | 9582 | class adjacent_transform_view : public view_interface<adjacent_transform_view<V, F, N>> { |
9569 | | - @\exposid{copyable-box}@<F> @\exposid{fun_}@; // \expos |
| 9583 | + @\exposidnc{copyable-box}@<F> @\exposid{fun_}@; // \expos |
9570 | 9584 | adjacent_view<V, N> @\exposid{inner_}@; // \expos |
9571 | 9585 |
|
9572 | | - using @\exposid{InnerView}@ = adjacent_view<V, N>; // \expos |
| 9586 | + using @\exposidnc{InnerView}@ = adjacent_view<V, N>; // \expos |
9573 | 9587 | template<bool Const> |
9574 | | - using @\exposid{inner-iterator}@ = iterator_t<@\exposid{maybe-const}@<Const, @\exposid{InnerView}@>>; // \expos |
| 9588 | + using @\exposid{inner-iterator}@ = iterator_t<@\exposid{maybe-const}@<Const, @\exposid{InnerView}@>>; // \expos |
9575 | 9589 | template<bool Const> |
9576 | | - using @\exposid{inner-sentinel}@ = sentinel_t<@\exposid{maybe-const}@<Const, @\exposid{InnerView}@>>; // \expos |
| 9590 | + using @\exposid{inner-sentinel}@ = sentinel_t<@\exposid{maybe-const}@<Const, @\exposid{InnerView}@>>; // \expos |
9577 | 9591 |
|
9578 | 9592 | // \ref{range.adjacent.transform.iterator}, class template \tcode{adjacent_transform_view::\exposid{iterator}} |
9579 | | - template<bool> class @\exposid{iterator}@; // \expos |
| 9593 | + template<bool> class @\exposidnc{iterator}@; // \expos |
| 9594 | + |
9580 | 9595 | // \ref{range.adjacent.transform.sentinel}, class template \tcode{adjacent_transform_view::\exposid{sentinel}} |
9581 | | - template<bool> class @\exposid{sentinel}@; // \expos |
| 9596 | + template<bool> class @\exposidnc{sentinel}@; // \expos |
9582 | 9597 |
|
9583 | 9598 | public: |
9584 | 9599 | adjacent_transform_view() = default; |
|
9645 | 9660 | @\exposconcept{can-reference}@<invoke_result_t<F&, @\exposid{REPEAT}@(range_reference_t<V>, N)...>> |
9646 | 9661 | template<bool Const> |
9647 | 9662 | class adjacent_transform_view<F, V...>::@\exposid{iterator}@ { |
9648 | | - using @\exposid{Parent}@ = @\exposid{maybe-const}@<Const, adjacent_transform_view>; // \expos |
9649 | | - using @\exposid{Base}@ = @\exposid{maybe-const}@<Const, V>; // \expos |
9650 | | - @\exposid{Parent}@* @\exposid{parent_}@ = nullptr; // \expos |
9651 | | - @\exposid{inner-iterator}@<Const> @\exposid{inner_}@; // \expos |
| 9663 | + using @\exposidnc{Parent}@ = @\exposidnc{maybe-const}@<Const, adjacent_transform_view>; // \expos |
| 9664 | + using @\exposidnc{Base}@ = @\exposidnc{maybe-const}@<Const, V>; // \expos |
| 9665 | + @\exposidnc{Parent}@* @\exposid{parent_}@ = nullptr; // \expos |
| 9666 | + @\exposidnc{inner-iterator}@<Const> @\exposid{inner_}@; // \expos |
9652 | 9667 |
|
9653 | | - constexpr @\exposid{iterator}@(@\exposid{Parent}@& parent, @\exposid{inner-iterator}@<Const> inner); // \expos |
| 9668 | + constexpr @\exposidnc{iterator}@(@\exposidnc{Parent}@& parent, @\exposidnc{inner-iterator}@<Const> inner); // \expos |
9654 | 9669 |
|
9655 | 9670 | public: |
9656 | 9671 | using iterator_category = @\seebelow@; |
|
9948 | 9963 | @\exposconcept{can-reference}@<invoke_result_t<F&, @\exposid{REPEAT}@(range_reference_t<V>, N)...>> |
9949 | 9964 | template<bool Const> |
9950 | 9965 | class adjacent_transform_view<V, F, N>::@\exposid{sentinel}@ { |
9951 | | - @\exposid{inner-sentinel}@<Const> @\exposid{inner_}@; // \expos |
9952 | | - constexpr explicit @\exposid{sentinel}@(@\exposid{inner-sentinel}@<Const> inner); // \expos |
| 9966 | + @\exposidnc{inner-sentinel}@<Const> @\exposid{inner_}@; // \expos |
| 9967 | + constexpr explicit @\exposidnc{sentinel}@(@\exposidnc{inner-sentinel}@<Const> inner); // \expos |
9953 | 9968 |
|
9954 | 9969 | public: |
9955 | 9970 | @\exposid{sentinel}@() = default; |
|
0 commit comments