3738. Missing preconditions for take_view constructor

Section: 25.7.10.2 [range.take.view] Status: C++23 Submitter: Hewill Kang Opened: 2022-07-15 Last modified: 2023-11-22

Priority: Not Prioritized

View all other issues in [range.take.view].

View all issues with C++23 status.

Discussion:

When V does not model sized_range, take_view::begin returns counted_iterator(ranges::begin(base_), count_). Since the counted_iterator constructor (24.5.7.2 [counted.iter.const]) already has a precondition that n >= 0, we should add this to take_view as well, which is consistent with drop_view.

[2022-08-23; Reflector poll]

Set status to Tentatively Ready after eight votes in favour during reflector poll.

[2022-11-12 Approved at November 2022 meeting in Kona. Status changed: Voting → WP.]

Proposed resolution:

This wording is relative to N4910.

  1. Modify 25.7.10.2 [range.take.view] as indicated:

    constexpr take_view(V base, range_difference_t<V> count);
    

    -?- Preconditions: count >= 0 is true.

    -1- Effects: Initializes base_ with std::move(base) and count_ with count.