Section: 24.3.1 [iterator.requirements.general] Status: Resolved Submitter: Marshall Clow Opened: 2014-03-25 Last modified: 2021-06-23
Priority: 3
View all other issues in [iterator.requirements.general].
View all issues with Resolved status.
Discussion:
24.3.1 [iterator.requirements.general] p9 says:
Destruction of an iterator may invalidate pointers and references previously obtained from that iterator.
But the resolution of LWG issue 2360 specifically advocates returning *--temp;
where temp
is a
local variable.
If
a
andb
are both dereferenceable, thena == b
if and only if*a
and*b
are bound to the same object.
which disallows "stashing" iterators (i.e, iterators that refer to data inside themselves).
So, I suspect that the restriction in p9 should only apply to input iterators, and can probably be moved into 24.3.5.3 [input.iterators] instead of 24.3.1 [iterator.requirements.general].[2014-05-22, Daniel comments]
Given that forward iterators (and beyond) are refinements of input iterator, moving this constraint to input iterators won't help much because it would still hold for all refined forms.
[2021-06-23 Resolved by adoption of P0896R4 in San Diego. Status changed: New → Resolved.]
Proposed resolution: