This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++20 status.

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

Section: 23.3.4.13 [iterator.concept.random.access] Status: C++20 Submitter: Eric Niebler Opened: 2019-09-09 Last modified: 2021-02-25

Priority: 0

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

View all issues with C++20 status.

Discussion:

See 23.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 24.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.

1. Modify 23.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

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

   > 2. […]

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

   > 4. […]