|
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