When the underlying range models common_range, then reverse_view::begin() is O(1) without caching. So we should disable the cache in this case too.
libstdc++-v3/ChangeLog: * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false whenever the underlying range models common_range. --- libstdc++-v3/include/std/ranges | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges index 2f773130979..19d3da950e7 100644 --- a/libstdc++-v3/include/std/ranges +++ b/libstdc++-v3/include/std/ranges @@ -3177,7 +3177,8 @@ namespace views private: _Vp _M_base = _Vp(); - static constexpr bool _S_needs_cached_begin = !random_access_range<_Vp>; + static constexpr bool _S_needs_cached_begin + = !common_range<_Vp> && !random_access_range<_Vp>; [[no_unique_address]] __detail::__maybe_empty_t<_S_needs_cached_begin, __detail::_CachedPosition<_Vp>> _M_cached_begin; -- 2.25.1.377.g2d2118b814