BidirectionalIterator
concept should provide default implementation for post-decrementSection: 24.3.5.6 [bidirectional.iterators] Status: NAD Concepts Submitter: Howard Hinnant Opened: 2009-03-22 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [bidirectional.iterators].
View all issues with NAD Concepts status.
Discussion:
Addresses UK 258 [CD1]
A default implementation should be supplied for the post-decrement 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
postdecrement_result
invalid, see 1084.
Proposed resolution:
Change 24.3.5.6 [bidirectional.iterators]:
concept BidirectionalIterator<typename X> : ForwardIterator<X> { MoveConstructible postdecrement_result; requires HasDereference<postdecrement_result> && Convertible<HasDereference<postdecrement_result>::result_type, const value_type&> && Convertible<postdecrement_result, const X&>; X& operator--(X&); postdecrement_result operator--(X& r, int);{ X tmp = r; --r; return tmp; } }