This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of NAD Concepts status.
ForwardIterator should provide default implementation for post-incrementSection: 24.3.5.5 [forward.iterators] Status: NAD Concepts Submitter: Howard Hinnant Opened: 2009-03-22 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [forward.iterators].
View all issues with NAD Concepts status.
Discussion:
Addresses UK 250 [CD1]
A default implementation should be supplied for the post-increment operator to simplify implementation of iterators by users.
Copy the Effects clause into the concept description as the default
implementation. Assumes a default value for postincrement_result.
[ Summit: ]
Howard will open an issue.
[ 2009-06-07 Daniel adds: ]
This issue cannot currently be resolved as suggested, because that would render auto-detection of the return type
postincrement_resultinvalid, see [concept.map.assoc]/4+5. The best fix would be to add a default type to that associated type, but unfortunately any default type will prevent auto-deduction of types of associated functions as quoted above. A corresponding core issue is in preparation.
Proposed resolution:
[ This wording assumes the acceptance of UK 251 / 1009(i). Both wordings change the same paragraphs. ]
Change 24.3.5.5 [forward.iterators]:
concept ForwardIterator<typename X> : InputIterator<X>, Regular<X> {
MoveConstructible postincrement_result;
requires HasDereference<postincrement_result>
&& Convertible<HasDereference<postincrement_result>::result_type, const value_type&>;
postincrement_result operator++(X& r, int); {
X tmp = r;
++r;
return tmp;
}
axiom MultiPass(X a, X b) {
if (a == b) *a == *b;
if (a == b) ++a == ++b;
}
}