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.
reverse_iterator and simd-iterator should be defaultedSection: 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.
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;
[…]
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;
[…]
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;
[…]