forward_list
preconditionsSection: 23.3.7 [forward.list] Status: C++11 Submitter: Martin Sebor Opened: 2008-08-23 Last modified: 2023-02-07
Priority: Not Prioritized
View all other issues in [forward.list].
View all issues with C++11 status.
Discussion:
forward_list
member functions that take
a forward_list::iterator
(denoted position
in the
function signatures) argument have the following precondition:
Requires:
position
is dereferenceable or equal tobefore_begin()
.
I believe what's actually intended is this:
Requires:
position
is in the range [before_begin()
,end()
).
That is, when it's dereferenceable, position
must point
into *this
, not just any forward_list
object.
[ San Francisco: ]
Robert suggested alternate proposed wording which had large support.
[ Post Summit: ]
Walter: "position is before_begin() or a dereferenceable": add "is" after the "or"
With that minor update, Recommend Tentatively Ready.
Proposed resolution:
Change the Requires clauses [forwardlist], p21, p24, p26, p29, and, [forwardlist.ops], p39, p43, p47 as follows:
Requires:
position
isbefore_begin()
or is a dereferenceable iterator in the range[begin(), end())
or equal to. ...before_begin()