2.9 KiB
[exec.inline.scheduler]
33 Execution control library [exec]
33.13 Coroutine utilities [exec.coro.util]
33.13.4 execution::inline_scheduler [exec.inline.scheduler]
namespace std::execution {class inline_scheduler {class inline-sender; // exposition onlytemplate<receiver R>class inline-state; // exposition onlypublic:using scheduler_concept = scheduler_t; constexpr inline-sender schedule() noexcept { return {}; }constexpr bool operator==(const inline_scheduler&) const noexcept = default; };}
inline_scheduler is a class that modelsscheduler ([exec.sched]).
All objects of type inline_scheduler are equal.
inline-sender is an exposition-only type that satisfiessender.
The type completion_signatures_of_t<inline-sender> is completion_signatures<set_value_t()>.
Let sndr be an expression of type inline-sender, let rcvr be an expression such thatreceiver_of<decltype((rcvr)), CS> is true where CS is completion_signatures<set_value_t()>, then:
the expression connect(sndr, rcvr) has type inline-state<remove_cvref_t<decltype((rcvr))>> and is potentially-throwing if and only if((void)sndr, auto(rcvr)) is potentially-throwing, and
the expressionget_completion_scheduler<set_value_t>(get_env(sndr)) has type inline_scheduler and is potentially-throwing if and only if get_env(sndr) is potentially-throwing.
Let o be a non-const lvalue of typeinline-state, and let REC(o) be a non-const lvalue reference to an object of type Rcvr that was initialized with the expression rcvr passed to an invocation of connect that returned o, then:
the object to which REC(o) refers remains valid for the lifetime of the object to which o refers, and
the expression start(o) is equivalent toset_value(std::move(REC(o))).