tmp/tmplpbgsdp3/{from.md → to.md}
RENAMED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
### Coroutine traits <a id="coroutine.traits">[[coroutine.traits]]</a>
|
| 2 |
+
|
| 3 |
+
This subclause defines requirements on classes representing *coroutine
|
| 4 |
+
traits*, and defines the class template `coroutine_traits` that meets
|
| 5 |
+
those requirements.
|
| 6 |
+
|
| 7 |
+
#### Class template `coroutine_traits` <a id="coroutine.traits.primary">[[coroutine.traits.primary]]</a>
|
| 8 |
+
|
| 9 |
+
The header `<coroutine>` defines the primary template `coroutine_traits`
|
| 10 |
+
such that if `ArgTypes` is a parameter pack of types and if the
|
| 11 |
+
*qualified-id* `R::promise_type` is valid and denotes a type
|
| 12 |
+
[[temp.deduct]], then `coroutine_traits<R,ArgTypes...>` has the
|
| 13 |
+
following publicly accessible member:
|
| 14 |
+
|
| 15 |
+
``` cpp
|
| 16 |
+
using promise_type = typename R::promise_type;
|
| 17 |
+
```
|
| 18 |
+
|
| 19 |
+
Otherwise, `coroutine_traits<R,ArgTypes...>` has no members.
|
| 20 |
+
|
| 21 |
+
Program-defined specializations of this template shall define a publicly
|
| 22 |
+
accessible nested type named `promise_type`.
|
| 23 |
+
|