std::ranges::views::reverse, std::ranges::reverse_view
Min standard notice:
Header: <ranges>
- 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
r: range to reverse
# 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
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3494 | C++20 | reverse_view was never a borrowed_range | it is a borrowed_range if its underlying view is |