std::ranges::views::reverse, std::ranges::reverse_view

Header: <ranges>

  1. A range adaptor that represents a view of underlying view with reversed order.

# Declarations

template< ranges::view V >
requires ranges::bidirectional_range<V>
class reverse_view
: public ranges::view_interface<reverse_view<V>>

(since C++20)

namespace views {
inline constexpr /* unspecified */ reverse = /* unspecified */;
}

(since C++20)

Call signature
template< ranges::viewable_range R >
requires /* see below */
constexpr ranges::view auto reverse( R&& r );

(since C++20)

# Parameters

# Example

#include <iostream>
#include <ranges>
 
int main()
{
    static constexpr auto il = {3, 1, 4, 1, 5, 9};
 
    std::ranges::reverse_view rv{il};
    for (int i : rv)
        std::cout << i << ' ';
    std::cout << '\n';
 
    for (int i : il | std::views::reverse)
        std::cout << i << ' ';
    std::cout << '\n';
 
    // operator[] is inherited from std::view_interface
    for (auto i{0U}; i != rv.size(); ++i)
        std::cout << rv[i] << ' ';
    std::cout << '\n';
}

# Defect reports

DRApplied toBehavior as publishedCorrect behavior
LWG 3494C++20reverse_view was never a borrowed_rangeit is a borrowed_range if its underlying view is

# See also