|
484 | 484 | template<class T> |
485 | 485 | using @\libglobal{env_of_t}@ = decltype(get_env(declval<T>())); |
486 | 486 |
|
487 | | - // \ref{exec.prop}, class template \tcode{prop} |
488 | | - template<class QueryTag, class ValueType> |
489 | | - struct prop; |
490 | | - |
491 | | - // \ref{exec.env}, class template \tcode{env} |
492 | | - template<@\exposconcept{queryable}@... Envs> |
493 | | - struct env; |
494 | | - |
495 | 487 | // \ref{exec.domain.default}, execution domains |
496 | 488 | struct default_domain; |
497 | 489 |
|
|
594 | 586 | constexpr decltype(auto) apply_sender( |
595 | 587 | Domain dom, Tag, Sndr&& sndr, Args&&... args) noexcept(@\seebelow@); |
596 | 588 |
|
| 589 | + // \ref{exec.getcomplsigs}, get completion signatures |
| 590 | + template<class Sndr, class... Env> |
| 591 | + consteval auto get_completion_signatures() -> @\exposconcept{valid-completion-signatures}@ auto; |
| 592 | + |
| 593 | + template<class Sndr, class... Env> |
| 594 | + requires @\libconcept{sender_in}@<Sndr, Env...> |
| 595 | + using completion_signatures_of_t = decltype(get_completion_signatures<Sndr, Env...>()); |
| 596 | + |
597 | 597 | // \ref{exec.connect}, the connect sender algorithm |
598 | 598 | struct @\libglobal{connect_t}@; |
599 | 599 | inline constexpr connect_t @\libglobal{connect}@{}; |
|
664 | 664 | inline constexpr stopped_as_error_t @\libglobal{stopped_as_error}@{}; |
665 | 665 | inline constexpr associate_t @\libglobal{associate}@{}; |
666 | 666 | inline constexpr spawn_future_t @\libglobal{spawn_future}@{}; |
| 667 | +} |
| 668 | + |
| 669 | +namespace std::this_thread { |
| 670 | + // \ref{exec.consumers}, consumers |
| 671 | + struct @\libglobal{sync_wait_t}@ { @\unspec@ }; |
| 672 | + struct @\libglobal{sync_wait_with_variant_t}@ { @\unspec@ }; |
| 673 | + |
| 674 | + inline constexpr sync_wait_t @\libglobal{sync_wait}@{}; |
| 675 | + inline constexpr sync_wait_with_variant_t @\libglobal{sync_wait_with_variant}@{}; |
| 676 | +} |
| 677 | + |
| 678 | +namespace std::execution { |
| 679 | + // \ref{exec.consumers}, consumers |
| 680 | + struct @\libglobal{spawn_t}@ { @\unspec@ }; |
| 681 | + inline constexpr spawn_t spawn{}; |
667 | 682 |
|
668 | 683 | // \ref{exec.cmplsig}, completion signatures |
669 | 684 | template<class Fn> |
|
677 | 692 |
|
678 | 693 | struct dependent_sender_error : exception {}; |
679 | 694 |
|
680 | | - // \ref{exec.getcomplsigs}, get completion signatures |
681 | | - template<class Sndr, class... Env> |
682 | | - consteval auto get_completion_signatures() -> @\exposconcept{valid-completion-signatures}@ auto; |
| 695 | + // \ref{exec.prop}, class template \tcode{prop} |
| 696 | + template<class QueryTag, class ValueType> |
| 697 | + struct prop; |
683 | 698 |
|
684 | | - template<class Sndr, class... Env> |
685 | | - requires @\libconcept{sender_in}@<Sndr, Env...> |
686 | | - using completion_signatures_of_t = decltype(get_completion_signatures<Sndr, Env...>()); |
| 699 | + // \ref{exec.env}, class template \tcode{env} |
| 700 | + template<@\exposconcept{queryable}@... Envs> |
| 701 | + struct env; |
687 | 702 |
|
688 | 703 | // \ref{exec.run.loop}, run_loop |
689 | 704 | class run_loop; |
690 | | -} |
691 | | - |
692 | | -namespace std::this_thread { |
693 | | - // \ref{exec.consumers}, consumers |
694 | | - struct @\libglobal{sync_wait_t}@ { @\unspec@ }; |
695 | | - struct @\libglobal{sync_wait_with_variant_t}@ { @\unspec@ }; |
696 | | - |
697 | | - inline constexpr sync_wait_t @\libglobal{sync_wait}@{}; |
698 | | - inline constexpr sync_wait_with_variant_t @\libglobal{sync_wait_with_variant}@{}; |
699 | | -} |
700 | | - |
701 | | -namespace std::execution { |
702 | | - // \ref{exec.consumers}, consumers |
703 | | - struct @\libglobal{spawn_t}@ { @\unspec@ }; |
704 | | - inline constexpr spawn_t spawn{}; |
705 | 705 |
|
706 | 706 | // \ref{exec.as.awaitable}, coroutine utility \tcode{as_awaitable} |
707 | 707 | struct @\libglobal{as_awaitable_t}@ { @\unspec@ }; |
|
711 | 711 | template<@\exposconcept{class-type}@ Promise> |
712 | 712 | struct with_awaitable_senders; |
713 | 713 |
|
714 | | - // \ref{exec.scope.concepts}, scope concepts |
715 | | - template<class Token> |
716 | | - concept @\libconcept{scope_token}@ = @\seebelow@; |
717 | | - |
718 | | - // \ref{exec.scope.simple.counting}, simple counting scope |
719 | | - class simple_counting_scope; |
720 | | - |
721 | | - // \ref{exec.scope.counting}, counting scope |
722 | | - class counting_scope; |
723 | | -} |
724 | | - |
725 | | -namespace std::execution { |
726 | | - // \ref{exec.par.scheduler}, parallel scheduler |
727 | | - class @\libglobal{parallel_scheduler}@; |
728 | | - parallel_scheduler get_parallel_scheduler(); |
729 | | -} |
730 | | - |
731 | | -// \ref{exec.sysctxrepl}, namespace \tcode{system_context_replaceability} |
732 | | -namespace std::execution::@\libglobal{system_context_replaceability}@ { |
733 | | - struct receiver_proxy; |
734 | | - struct bulk_item_receiver_proxy; |
735 | | - struct parallel_scheduler_backend; |
736 | | - |
737 | | - shared_ptr<parallel_scheduler_backend> query_parallel_scheduler_backend(); |
738 | | -} |
739 | | - |
740 | | -namespace std::execution { |
741 | 714 | // \ref{exec.affine.on}, coroutine utility \tcode{affine_on} |
742 | 715 | struct @\libglobal{affine_on_t}@ { @\unspec@ }; |
743 | 716 | inline constexpr affine_on_t @\libglobal{affine_on}@{}; |
|
767 | 740 | // \ref{exec.task}, class template \tcode{task} |
768 | 741 | template<class T, class Environment> |
769 | 742 | class @\libglobal{task}@; |
| 743 | + |
| 744 | + // \ref{exec.scope.concepts}, scope concepts |
| 745 | + template<class Token> |
| 746 | + concept @\libconcept{scope_token}@ = @\seebelow@; |
| 747 | + |
| 748 | + // \ref{exec.scope.simple.counting}, simple counting scope |
| 749 | + class simple_counting_scope; |
| 750 | + |
| 751 | + // \ref{exec.scope.counting}, counting scope |
| 752 | + class counting_scope; |
| 753 | + |
| 754 | + // \ref{exec.par.scheduler}, parallel scheduler |
| 755 | + class @\libglobal{parallel_scheduler}@; |
| 756 | + parallel_scheduler get_parallel_scheduler(); |
| 757 | + |
| 758 | + // \ref{exec.sysctxrepl}, namespace \tcode{system_context_replaceability} |
| 759 | + namespace @\libglobal{system_context_replaceability}@ { |
| 760 | + struct receiver_proxy; |
| 761 | + struct bulk_item_receiver_proxy; |
| 762 | + struct parallel_scheduler_backend; |
| 763 | + |
| 764 | + shared_ptr<parallel_scheduler_backend> query_parallel_scheduler_backend(); |
| 765 | + } |
770 | 766 | } |
771 | 767 | \end{codeblock} |
772 | 768 |
|
|
0 commit comments