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,
|
| 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 |
-
|
| 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 |
|