|
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 | } |
|
8458 | 8470 |
|
8459 | 8471 | \begin{codeblock} |
8460 | 8472 | namespace std::execution { |
8461 | | - template<class E> |
8462 | | - struct @\libglobal{with_error}@ { |
8463 | | - using type = remove_cvref_t<E>; |
8464 | | - type error; |
8465 | | - }; |
8466 | | - template<class E> |
8467 | | - with_error(E) -> with_error<E>; |
8468 | | - |
8469 | | - template<@\libconcept{scheduler}@ Sch> |
8470 | | - struct change_coroutine_scheduler { |
8471 | | - using type = remove_cvref_t<Sch>; |
8472 | | - type scheduler; |
8473 | | - }; |
8474 | | - template<@\libconcept{scheduler}@ Sch> |
8475 | | - change_coroutine_scheduler(Sch) -> change_coroutine_scheduler<Sch>; |
8476 | | - |
8477 | 8473 | template<class T, class Environment> |
8478 | 8474 | class task<T, Environment>::promise_type { |
8479 | 8475 | public: |
|
0 commit comments