[exec.inline.scheduler] # 33 Execution control library [[exec]](./#exec) ## 33.13 Coroutine utilities [[exec.coro.util]](exec.coro.util#exec.inline.scheduler) ### 33.13.4 execution​::​inline_scheduler [exec.inline.scheduler] namespace std::execution {class [inline_scheduler](#lib:inline_scheduler "33.13.4 execution​::​inline_­scheduler [exec.inline.scheduler]") {class *inline-sender*; // *exposition only*template<[receiver](exec.recv.concepts#concept:receiver "33.7.1 Receiver concepts [exec.recv.concepts]") R>class *inline-state*; // *exposition only*public:using scheduler_concept = scheduler_t; constexpr *inline-sender* schedule() noexcept { return {}; }constexpr bool operator==(const inline_scheduler&) const noexcept = default; };} [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L6954) inline_scheduler is a class that models[scheduler](exec.sched#concept:scheduler "33.6 Schedulers [exec.sched]") ([[exec.sched]](exec.sched "33.6 Schedulers"))[.](#1.sentence-1) All objects of type inline_scheduler are equal[.](#1.sentence-2) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L6959) *inline-sender* is an exposition-only type that satisfies[sender](exec.snd.concepts#concept:sender "33.9.3 Sender concepts [exec.snd.concepts]")[.](#2.sentence-1) The type completion_signatures_of_t<*inline-sender*> is completion_signatures[.](#2.sentence-2) [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L6965) Let sndr be an expression of type *inline-sender*, let rcvr be an expression such that[receiver_of](exec.recv.concepts#concept:receiver_of "33.7.1 Receiver concepts [exec.recv.concepts]") is true where CS is completion_signatures, then: - [(3.1)](#3.1) the expression connect(sndr, rcvr) has type *inline-state*> and is potentially-throwing if and only if((void)sndr, auto(rcvr)) is potentially-throwing, and - [(3.2)](#3.2) the expressionget_completion_scheduler(get_env(sndr)) has type​ inline_scheduler and is potentially-throwing if and only if get_env(sndr) is potentially-throwing[.](#3.sentence-1) [4](#4) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L6982) Let *o* be a non-const lvalue of type*inline-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: - [(4.1)](#4.1) the object to which REC(*o*) refers remains valid for the lifetime of the object to which *o* refers, and - [(4.2)](#4.2) the expression start(*o*) is equivalent toset_value(std​::​move(REC(*o*)))[.](#4.sentence-1)