### 3277. Pre-increment on prvalues is not a requirement of `weakly_incrementable`

**Section:** 25.3.4.13 [iterator.concept.random.access] **Status:** C++20
**Submitter:** Eric Niebler **Opened:** 2019-09-09 **Last modified:** 2021-02-25 10:48:01 UTC

**Priority: **0

**View all other** issues in [iterator.concept.random.access].

**View all issues with** C++20 status.

**Discussion:**

See 25.3.4.13 [iterator.concept.random.access]/2.6, which shows `++` being applied to a prvalue iterator.

A similar change has already been made to 26.6.4.2 [range.iota.view]/4.6.

Suggest priority P0 or P1 because it effects the definition of a concept.

*[2019-09-24 Issue Prioritization]*

Status to Tentatively Ready and priority to 0 after six positive votes on the reflector.

**Proposed resolution:**

This wording is relative to N4830.

Modify 25.3.4.13 [iterator.concept.random.access] as indicated:

-2- Let `a` and `b` be valid iterators of type `I` such that `b`
is reachable from `a` after `n` applications of `++a`, let `D` be
`iter_difference_t<I>`, and let `n` denote a value of type `D`.
`I` models `random_access_iterator` only if

(2.1) — `(a += n)` is equal to `b`.

[…]

(2.6) — If `(a + D(n - 1))` is valid, then `(a + n)` is equal to
~~++~~[](I c){ return ++c; }(a + D(n - 1)).

[…]