From Jason Turner

[range.reverse.view]

Diff to HTML by rtfpessoa

tmp/tmpcprb7yz6/{from.md → to.md} RENAMED
@@ -5,12 +5,13 @@ namespace std::ranges {
5
  template<view V>
6
  requires bidirectional_range<V>
7
  class reverse_view : public view_interface<reverse_view<V>> {
8
  private:
9
  V base_ = V(); // exposition only
 
10
  public:
11
- reverse_view() = default;
12
 
13
  constexpr explicit reverse_view(V r);
14
 
15
  constexpr V base() const & requires copy_constructible<V> { return base_; }
16
  constexpr V base() && { return std::move(base_); }
@@ -23,10 +24,11 @@ namespace std::ranges {
23
  constexpr auto end() const requires common_range<const V>;
24
 
25
  constexpr auto size() requires sized_range<V> {
26
  return ranges::size(base_);
27
  }
 
28
  constexpr auto size() const requires sized_range<const V> {
29
  return ranges::size(base_);
30
  }
31
  };
32
 
@@ -59,15 +61,15 @@ the `reverse_view` for use on subsequent calls.
59
  constexpr reverse_iterator<iterator_t<V>> begin() requires common_range<V>;
60
  constexpr auto begin() const requires common_range<const V>;
61
  ```
62
 
63
  *Effects:* Equivalent to:
64
- `return make_reverse_iterator(ranges::end(base_));`
65
 
66
  ``` cpp
67
  constexpr reverse_iterator<iterator_t<V>> end();
68
  constexpr auto end() const requires common_range<const V>;
69
  ```
70
 
71
  *Effects:* Equivalent to:
72
- `return make_reverse_iterator(ranges::begin(base_));`
73
 
 
5
  template<view V>
6
  requires bidirectional_range<V>
7
  class reverse_view : public view_interface<reverse_view<V>> {
8
  private:
9
  V base_ = V(); // exposition only
10
+
11
  public:
12
+ reverse_view() requires default_initializable<V> = default;
13
 
14
  constexpr explicit reverse_view(V r);
15
 
16
  constexpr V base() const & requires copy_constructible<V> { return base_; }
17
  constexpr V base() && { return std::move(base_); }
 
24
  constexpr auto end() const requires common_range<const V>;
25
 
26
  constexpr auto size() requires sized_range<V> {
27
  return ranges::size(base_);
28
  }
29
+
30
  constexpr auto size() const requires sized_range<const V> {
31
  return ranges::size(base_);
32
  }
33
  };
34
 
 
61
  constexpr reverse_iterator<iterator_t<V>> begin() requires common_range<V>;
62
  constexpr auto begin() const requires common_range<const V>;
63
  ```
64
 
65
  *Effects:* Equivalent to:
66
+ `return make_reverse_iterator(ranges::end(`*`base_`*`));`
67
 
68
  ``` cpp
69
  constexpr reverse_iterator<iterator_t<V>> end();
70
  constexpr auto end() const requires common_range<const V>;
71
  ```
72
 
73
  *Effects:* Equivalent to:
74
+ `return make_reverse_iterator(ranges::begin(`*`base_`*`));`
75