This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of CD1 status.
538. 241 again: Does unique_copy() require CopyConstructible and Assignable?Section: 26.7.9 [alg.unique] Status: CD1 Submitter: Howard Hinnant Opened: 2006-02-09 Last modified: 2016-01-28
Priority: Not Prioritized
View other active issues in [alg.unique].
View all other issues in [alg.unique].
View all issues with CD1 status.
Discussion:
I believe I botched the resolution of 241(i) "Does unique_copy() require CopyConstructible and Assignable?" which now has WP status.
This talks about unique_copy
requirements and currently reads:
-5- Requires: The ranges
[first, last)
and[result, result+(last-first))
shall not overlap. The expression*result = *first
shall be valid. If neitherInputIterator
norOutputIterator
meets the requirements of forward iterator then the value type ofInputIterator
must be CopyConstructible (20.1.3). Otherwise CopyConstructible is not required.
The problem (which Paolo discovered) is that when the iterators are at their most restrictive (InputIterator
, OutputIterator
), then we want InputIterator::value_type
to be both CopyConstructible
and CopyAssignable
(for the most efficient implementation). However this proposed resolution only makes it clear that it is CopyConstructible
, and that one can assign from *first
to *result
. This latter requirement does not necessarily imply that you can:
*first = *first;
Proposed resolution:
-5- Requires: The ranges
[first, last)
and[result, result+(last-first))
shall not overlap. The expression*result = *first
shall be valid. If neitherInputIterator
norOutputIterator
meets the requirements of forward iterator then the value typevalue_type
ofInputIterator
must be CopyConstructible (20.1.3) and Assignable. Otherwise CopyConstructible is not required.
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