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

4631. Post-increment/decrement operators of reverse_iterator and simd-iterator should be defaulted

Section: 24.5.1.2 [reverse.iterator], 29.10.6 [simd.iterator] Status: New Submitter: Jiang An Opened: 2026-10-26 Last modified: 2026-10-26

Priority: Not Prioritized

View other active issues in [reverse.iterator].

View all other issues in [reverse.iterator].

View all issues with New status.

Discussion:

Due to P3668R4, postfix forms of operator++ and operator-- can be defaulted since C++29. And P3785R1 made most of such default-able operators defaulted.

However, there're currently still a few default-able operators that are not defaulted, namely those of reverse_iterator and simd-iterator.

Proposed resolution:

This wording is relative to N5054.

  1. Modify 24.5.1.2 [reverse.iterator] as indicated:

    […]
        constexpr reverse_iterator& operator++();
        constexpr reverse_iterator  operator++(int) = default;
        constexpr reverse_iterator& operator--();
        constexpr reverse_iterator  operator--(int) = default;
    […]
    
  2. Modify 24.5.1.7 [reverse.iter.nav] as indicated:

    […]

    constexpr reverse_iterator operator++(int);
    

    -5- Effects: As if by:

    reverse_iterator tmp = *this;
    --current;
    return tmp;
    

    […]

    constexpr reverse_iterator operator--(int);
    

    -8- Effects: As if by:

    reverse_iterator tmp = *this;
    ++current;
    return tmp;
    

    […]

  3. Modify 29.10.6 [simd.iterator] as indicated:

    […]
        constexpr simd-iterator& operator++();
        constexpr simd-iterator operator++(int) = default;
        constexpr simd-iterator& operator--();
        constexpr simd-iterator operator--(int) = default;
        constexpr reverse_iterator& operator++();
    […]
    

    […]

    constexpr simd-iterator operator++(int);
    

    -5- Effects: Equivalent to:

    simd-iterator tmp = *this;
    *this += 1;
    return tmp;
    

    […]

    constexpr simd-iterator operator--(int);
    

    -7- Effects: Equivalent to:

    simd-iterator tmp = *this;
    *this -= 1;
    return tmp;
    

    […]