From Jason Turner

[range.transform.view]

Diff to HTML by rtfpessoa

tmp/tmpp4nz325b/{from.md → to.md} RENAMED
@@ -1,26 +1,27 @@
1
  #### Class template `transform_view` <a id="range.transform.view">[[range.transform.view]]</a>
2
 
3
  ``` cpp
4
  namespace std::ranges {
5
- template<input_range V, copy_constructible F>
6
  requires view<V> && is_object_v<F> &&
7
  regular_invocable<F&, range_reference_t<V>> &&
8
  can-reference<invoke_result_t<F&, range_reference_t<V>>>
9
  class transform_view : public view_interface<transform_view<V, F>> {
10
  private:
11
  // [range.transform.iterator], class template transform_view::iterator
12
  template<bool> struct iterator; // exposition only
 
13
  // [range.transform.sentinel], class template transform_view::sentinel
14
  template<bool> struct sentinel; // exposition only
15
 
16
  V base_ = V(); // exposition only
17
- semiregular-box<F> fun_; // exposition only
18
 
19
  public:
20
- transform_view() = default;
21
- constexpr transform_view(V base, F fun);
22
 
23
  constexpr V base() const & requires copy_constructible<V> { return base_; }
24
  constexpr V base() && { return std::move(base_); }
25
 
26
  constexpr iterator<false> begin();
@@ -46,11 +47,11 @@ namespace std::ranges {
46
  transform_view(R&&, F) -> transform_view<views::all_t<R>, F>;
47
  }
48
  ```
49
 
50
  ``` cpp
51
- constexpr transform_view(V base, F fun);
52
  ```
53
 
54
  *Effects:* Initializes *base\_* with `std::move(base)` and *fun\_* with
55
  `std::move(fun)`.
56
 
 
1
  #### Class template `transform_view` <a id="range.transform.view">[[range.transform.view]]</a>
2
 
3
  ``` cpp
4
  namespace std::ranges {
5
+ template<input_range V, move_constructible F>
6
  requires view<V> && is_object_v<F> &&
7
  regular_invocable<F&, range_reference_t<V>> &&
8
  can-reference<invoke_result_t<F&, range_reference_t<V>>>
9
  class transform_view : public view_interface<transform_view<V, F>> {
10
  private:
11
  // [range.transform.iterator], class template transform_view::iterator
12
  template<bool> struct iterator; // exposition only
13
+
14
  // [range.transform.sentinel], class template transform_view::sentinel
15
  template<bool> struct sentinel; // exposition only
16
 
17
  V base_ = V(); // exposition only
18
+ movable-box<F> fun_; // exposition only
19
 
20
  public:
21
+ transform_view() requires default_initializable<V> && default_initializable<F> = default;
22
+ constexpr explicit transform_view(V base, F fun);
23
 
24
  constexpr V base() const & requires copy_constructible<V> { return base_; }
25
  constexpr V base() && { return std::move(base_); }
26
 
27
  constexpr iterator<false> begin();
 
47
  transform_view(R&&, F) -> transform_view<views::all_t<R>, F>;
48
  }
49
  ```
50
 
51
  ``` cpp
52
+ constexpr explicit transform_view(V base, F fun);
53
  ```
54
 
55
  *Effects:* Initializes *base\_* with `std::move(base)` and *fun\_* with
56
  `std::move(fun)`.
57