concat_view::iterator's conversion constructorSection: 25.7.18.3 [range.concat.iterator] Status: WP Submitter: Hewill Kang Opened: 2024-04-26 Last modified: 2024-07-08
Priority: Not Prioritized
View other active issues in [range.concat.iterator].
View all other issues in [range.concat.iterator].
View all issues with WP status.
Discussion:
This conversion constructor obtains the alternative iterator of the argument
through std::get, which will throw when the variant is valueless.
We seem to be missing a Preconditions element here.
[2024-05-08; Reflector poll]
Set status to Tentatively Ready after seven votes in favour during reflector poll.
[St. Louis 2024-06-29; Status changed: Voting → WP.]
Proposed resolution:
This wording is relative to N4981.
Modify 25.7.18.3 [range.concat.iterator] as indicated:
constexpr iterator(iterator<!Const> it) requires Const && (convertible_to<iterator_t<Views>, iterator_t<const Views>> && ...);-?- Preconditions:
-8- Effects: Initializesit.it_.valueless_by_exception()isfalse.parent_withit.parent_, and letibeit.it_.index(), initializesit_withbase-iter(in_place_index<i>, std::get<i>(std::move(it.it_))).