|
745 | 745 | // \ref{exec.task.scheduler}
|
746 | 746 | class @\libglobal{task_scheduler}@;
|
747 | 747 |
|
748 |
| - // \ref{exec.task} |
749 | 748 | template<class E>
|
750 |
| - struct @\libglobal{with_error}@; |
| 749 | + struct @\libglobal{with_error}@ { |
| 750 | + using type = remove_cvref_t<E>; |
| 751 | + type error; |
| 752 | + }; |
| 753 | + template<class E> |
| 754 | + with_error(E) -> with_error<E>; |
| 755 | + |
751 | 756 | template<@\libconcept{scheduler}@ Sch>
|
752 |
| - struct @\libglobal{change_coroutine_scheduler}@; |
| 757 | + struct change_coroutine_scheduler { |
| 758 | + using type = remove_cvref_t<Sch>; |
| 759 | + type scheduler; |
| 760 | + }; |
| 761 | + template<@\libconcept{scheduler}@ Sch> |
| 762 | + change_coroutine_scheduler(Sch) -> change_coroutine_scheduler<Sch>; |
| 763 | + |
| 764 | + // \ref{exec.task} |
753 | 765 | template<class T, class Environment>
|
754 | 766 | class @\libglobal{task}@;
|
755 | 767 | }
|
|
7464 | 7476 |
|
7465 | 7477 | \begin{codeblock}
|
7466 | 7478 | namespace std::execution {
|
7467 |
| - template<class E> |
7468 |
| - struct @\libglobal{with_error}@ { |
7469 |
| - using type = remove_cvref_t<E>; |
7470 |
| - type error; |
7471 |
| - }; |
7472 |
| - template<class E> |
7473 |
| - with_error(E) -> with_error<E>; |
7474 |
| - |
7475 |
| - template<@\libconcept{scheduler}@ Sch> |
7476 |
| - struct change_coroutine_scheduler { |
7477 |
| - using type = remove_cvref_t<Sch>; |
7478 |
| - type scheduler; |
7479 |
| - }; |
7480 |
| - template<@\libconcept{scheduler}@ Sch> |
7481 |
| - change_coroutine_scheduler(Sch) -> change_coroutine_scheduler<Sch>; |
7482 |
| - |
7483 | 7479 | template<class T, class Environment>
|
7484 | 7480 | class task<T, Environment>::promise_type {
|
7485 | 7481 | public:
|
|
0 commit comments