From Jason Turner

[range.as.rvalue]

Diff to HTML by rtfpessoa

tmp/tmpbp4x0jcx/{from.md → to.md} RENAMED
@@ -10,11 +10,11 @@ to replace copying with moving.
10
  The name `views::as_rvalue` denotes a range adaptor object
11
  [[range.adaptor.object]]. Let `E` be an expression and let `T` be
12
  `decltype((E))`. The expression `views::as_rvalue(E)` is
13
  expression-equivalent to:
14
 
15
- - `views::all(E)` if
16
  `same_as<range_rvalue_reference_t<T>, range_reference_t<T>>` is
17
  `true`.
18
  - Otherwise, `as_rvalue_view(E)`.
19
 
20
  [*Example 1*:
@@ -64,10 +64,15 @@ namespace std::ranges {
64
  }
65
  }
66
 
67
  constexpr auto size() requires sized_range<V> { return ranges::size(base_); }
68
  constexpr auto size() const requires sized_range<const V> { return ranges::size(base_); }
 
 
 
 
 
69
  };
70
 
71
  template<class R>
72
  as_rvalue_view(R&&) -> as_rvalue_view<views::all_t<R>>;
73
  }
 
10
  The name `views::as_rvalue` denotes a range adaptor object
11
  [[range.adaptor.object]]. Let `E` be an expression and let `T` be
12
  `decltype((E))`. The expression `views::as_rvalue(E)` is
13
  expression-equivalent to:
14
 
15
+ - `views::all(E)` if `T` models `input_range` and
16
  `same_as<range_rvalue_reference_t<T>, range_reference_t<T>>` is
17
  `true`.
18
  - Otherwise, `as_rvalue_view(E)`.
19
 
20
  [*Example 1*:
 
64
  }
65
  }
66
 
67
  constexpr auto size() requires sized_range<V> { return ranges::size(base_); }
68
  constexpr auto size() const requires sized_range<const V> { return ranges::size(base_); }
69
+
70
+ constexpr auto reserve_hint() requires approximately_sized_range<V>
71
+ { return ranges::reserve_hint(base_); }
72
+ constexpr auto reserve_hint() const requires approximately_sized_range<const V>
73
+ { return ranges::reserve_hint(base_); }
74
  };
75
 
76
  template<class R>
77
  as_rvalue_view(R&&) -> as_rvalue_view<views::all_t<R>>;
78
  }