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.

### 1085. `BidirectionalIterator` concept should provide default implementation for post-decrement

Section: 23.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 23.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;
>       }
>     }