This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++20 status.
3385.common_iterator
is not sufficiently constrained for non-copyable iterators
Section: 24.5.5.1 [common.iterator] Status: C++20 Submitter: Corentin Jabot Opened: 2020-01-31 Last modified: 2021-02-25
Priority: 0
View other active issues in [common.iterator].
View all other issues in [common.iterator].
View all issues with C++20 status.
Discussion:
We don't actually specify anywhere that non-copyable iterators do not have a common_iterator
(and it would make little sense for them to as algorithms dealing with C++17 iterators are not expecting non-copyable things) As it stands common_iterator
can be created from move only iterator but are then non-copyable themselves. P1862 already constrains common_view
in a similar fashion
[2020-02 Prioritized as IMMEDIATE Monday morning in Prague]
Proposed resolution:
This wording is relative to N4849.
Modify 24.2 [iterator.synopsis], header <iterator>
synopsis, as indicated:
namespace std { […] // 24.5.5 [iterators.common], common iterators template<input_or_output_iterator I, sentinel_for<I> S> requires (!same_as<I, S> && copyable<I>) class common_iterator; […] }
Modify 24.5.5.1 [common.iterator], class template common_iterator
synopsis, as indicated:
namespace std { template<input_or_output_iterator I, sentinel_for<I> S> requires (!same_as<I, S> && copyable<I>) class common_iterator { public: […] }; […] }
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4