Files
cppdraft_translate/cppdraft/exec/inline/scheduler.md
2025-10-25 03:02:53 +03:00

2.9 KiB
Raw Blame History

[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; };}

1

#

inline_scheduler is a class that modelsscheduler ([exec.sched]).

All objects of type inline_scheduler are equal.

2

#

inline-sender is an exposition-only type that satisfiessender.

The type completion_signatures_of_t<inline-sender> is completion_signatures<set_value_t()>.

3

#

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.

4

#

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))).