Tested on x86_64-pc-linux-gnu, does this look OK for trunk and branches? libstdc++-v3/ChangeLog:
* include/std/ranges (iota_view::operator+): Adjust definition as per LWG 3580. (iota_view::operator-): Likewise. --- libstdc++-v3/include/std/ranges | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges index 18bd087985c..5e18c98eb2f 100644 --- a/libstdc++-v3/include/std/ranges +++ b/libstdc++-v3/include/std/ranges @@ -497,7 +497,10 @@ namespace ranges friend constexpr _Iterator operator+(_Iterator __i, difference_type __n) requires __detail::__advanceable<_Winc> - { return __i += __n; } + { + __i += __n; + return __i; + } friend constexpr _Iterator operator+(difference_type __n, _Iterator __i) @@ -507,7 +510,10 @@ namespace ranges friend constexpr _Iterator operator-(_Iterator __i, difference_type __n) requires __detail::__advanceable<_Winc> - { return __i -= __n; } + { + __i -= __n; + return __i; + } friend constexpr difference_type operator-(const _Iterator& __x, const _Iterator& __y) -- 2.33.1.711.g9d530dc002