tmp/tmp24_w7mo9/{from.md → to.md}
RENAMED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#### Concept <a id="alg.req.ind.move">[[alg.req.ind.move]]</a>
|
| 2 |
+
|
| 3 |
+
The `indirectly_movable` concept specifies the relationship between a
|
| 4 |
+
`indirectly_readable` type and a `indirectly_writable` type between
|
| 5 |
+
which values may be moved.
|
| 6 |
+
|
| 7 |
+
``` cpp
|
| 8 |
+
template<class In, class Out>
|
| 9 |
+
concept indirectly_movable =
|
| 10 |
+
indirectly_readable<In> &&
|
| 11 |
+
indirectly_writable<Out, iter_rvalue_reference_t<In>>;
|
| 12 |
+
```
|
| 13 |
+
|
| 14 |
+
The `indirectly_movable_storable` concept augments `indirectly_movable`
|
| 15 |
+
with additional requirements enabling the transfer to be performed
|
| 16 |
+
through an intermediate object of the `indirectly_readable` type’s value
|
| 17 |
+
type.
|
| 18 |
+
|
| 19 |
+
``` cpp
|
| 20 |
+
template<class In, class Out>
|
| 21 |
+
concept indirectly_movable_storable =
|
| 22 |
+
indirectly_movable<In, Out> &&
|
| 23 |
+
indirectly_writable<Out, iter_value_t<In>> &&
|
| 24 |
+
movable<iter_value_t<In>> &&
|
| 25 |
+
constructible_from<iter_value_t<In>, iter_rvalue_reference_t<In>> &&
|
| 26 |
+
assignable_from<iter_value_t<In>&, iter_rvalue_reference_t<In>>;
|
| 27 |
+
```
|
| 28 |
+
|
| 29 |
+
Let `i` be a dereferenceable value of type `In`. `In` and `Out` model
|
| 30 |
+
`indirectly_movable_storable<In, Out>` only if after the initialization
|
| 31 |
+
of the object `obj` in
|
| 32 |
+
|
| 33 |
+
``` cpp
|
| 34 |
+
iter_value_t<In> obj(ranges::iter_move(i));
|
| 35 |
+
```
|
| 36 |
+
|
| 37 |
+
`obj` is equal to the value previously denoted by `*i`. If
|
| 38 |
+
`iter_rvalue_reference_t<In>` is an rvalue reference type, the resulting
|
| 39 |
+
state of the value denoted by `*i` is valid but unspecified
|
| 40 |
+
[[lib.types.movedfrom]].
|
| 41 |
+
|