Reference
Concepts
The stdexec API is structured around a small set of foundational concepts. Most sender adaptors and consumers express their requirements in terms of these concepts, so understanding them — and which one to reach for in which situation — pays off across the rest of the reference.
The concepts fall into three layers:
Sender side: sender, sender_in, sender_to. A sender is the basic unit of composition — a value that describes (but does not yet execute) an async computation.
Receiver / operation-state side: receiver, receiver_of, operation_state. These describe the consumer half of a sender/receiver pair — the destination of completion signals and the running operation that delivers them.
Context side: scheduler, scope_token, scope_association. These describe how work is dispatched onto execution resources and how its lifetime is tracked.
Sender concepts
sender
Warning
doxygenconcept: Cannot find concept “stdexec::sender” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenstruct: Cannot find class “stdexec::sender_tag” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::enable_sender” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
sender_in
Warning
doxygenconcept: Cannot find concept “stdexec::sender_in” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
sender_to
Warning
doxygenconcept: Cannot find concept “stdexec::sender_to” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Receiver and operation-state concepts
receiver
Warning
doxygenconcept: Cannot find concept “stdexec::receiver” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenstruct: Cannot find class “stdexec::receiver_tag” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
receiver_of
Warning
doxygenconcept: Cannot find concept “stdexec::receiver_of” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
operation_state
Warning
doxygenconcept: Cannot find concept “stdexec::operation_state” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenstruct: Cannot find class “stdexec::operation_state_tag” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Context concepts
scheduler
Warning
doxygenconcept: Cannot find concept “stdexec::scheduler” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
scope_token
Warning
doxygenconcept: Cannot find concept “stdexec::scope_token” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
scope_association
Warning
doxygenconcept: Cannot find concept “stdexec::scope_association” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Core Customization Points
The customization points listed here are the defining operations of the sender model. They are what every sender, receiver, and operation state type must support (each in its own way) to participate in the protocol. Most user code never calls these directly — sender adaptors and consumers do — but anyone writing a new sender, receiver, or scheduler will implement one or more of these.
The CPOs fall into three layers:
Sender-side: connect, get_completion_signatures, get_env. These describe how a sender exposes its computation and attributes to the framework.
Operation-state-side: start. The trigger that turns a connected sender into a running operation.
Receiver-side: set_value, set_error, set_stopped, get_env. These describe how an operation state delivers a completion to its receiver and queries the receiver’s environment.
See the Developer’s Guide for a narrative walkthrough of how these fit together when writing a new sender adaptor.
Sender-side
connect
Warning
doxygenstruct: Cannot find class “stdexec::connect_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::connect” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
get_completion_signatures
Unlike the other entries in this section, get_completion_signatures
is a function template (not a CPO instance), so it has no underlying
struct. The two forms — environment-free and environment-dependent —
share documentation:
Operation-state-side
start
Warning
doxygenstruct: Cannot find class “stdexec::start_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::start” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Receiver-side
set_value
Warning
doxygenstruct: Cannot find class “stdexec::set_value_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::set_value” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
set_error
Warning
doxygenstruct: Cannot find class “stdexec::set_error_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::set_error” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
set_stopped
Warning
doxygenstruct: Cannot find class “stdexec::set_stopped_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::set_stopped” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
get_env
Warning
doxygenstruct: Cannot find class “stdexec::get_env_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::get_env” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Sender Factories
A sender factory is an algorithm that produces a sender from non-sender inputs (values, an error, a scheduler, an environment query). Factories sit at the head of a sender pipeline.
just — produce a sender from values
Produces a sender that synchronously completes with the given values on the value channel. The canonical way to inject literal values into a sender pipeline. See just — inject literal values for an approachable introduction with worked examples.
Warning
doxygenstruct: Cannot find class “stdexec::just_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::just” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
just_error — produce a sender from an error
Produces a sender that synchronously completes with the given error on the error channel. Mostly useful for testing error-handling adaptors.
Warning
doxygenstruct: Cannot find class “stdexec::just_error_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::just_error” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
just_stopped — produce a stopped sender
Produces a sender that synchronously completes on the stopped channel. Mostly useful for testing cancellation-handling adaptors.
Warning
doxygenstruct: Cannot find class “stdexec::just_stopped_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::just_stopped” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
read_env — produce a sender from an environment query
Produces a sender whose value completion is the result of querying the
connected receiver’s environment with a given query CPO. It is the
primitive behind the standard get_stop_token(), get_allocator(),
get_scheduler() helpers. See read_env — read a value from the receiver’s environment for an
approachable introduction.
Warning
doxygenvariable: Cannot find variable “stdexec::read_env” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
schedule — produce a sender from a scheduler
Produces a sender that, when connected and started, value-completes from the context of the given scheduler. It is the bridge between the scheduler and sender abstractions, and the way to begin a pipeline that must run on a specific execution context. See schedule — start a pipeline on a scheduler for an approachable introduction.
Warning
doxygenstruct: Cannot find class “stdexec::schedule_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::schedule” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
just_from (experimental) — like just but value-producing via a function
Warning
doxygenvariable: Cannot find variable “experimental::execution::just_from” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “experimental::execution::just_error_from” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “experimental::execution::just_stopped_from” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Sender Adaptors
TODO: More sender adaptor algorithms
then — apply a function to the value channel
Transforms a predecessor sender’s value completion by invoking a callable
with the values it produces. See then — transform a value for an approachable
introduction with worked examples; the complete reference (including
completion-signature transformation rules, exception behavior, and the
operator() overloads) follows.
Warning
doxygenstruct: Cannot find class “stdexec::then_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::then” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
upon_error — handle the error channel
Handles a predecessor sender’s error completion by invoking a callable on the error datum and delivering the result as a value completion — the canonical way to recover from an error and continue the pipeline. See upon_error — recover from an error for an approachable introduction with worked examples.
Warning
doxygenstruct: Cannot find class “stdexec::upon_error_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::upon_error” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
upon_stopped — handle the stopped channel
Handles a predecessor sender’s stopped completion by invoking a nullary callable and delivering its return value as a value completion — the canonical way to recover from cancellation. See upon_stopped — recover from cancellation for an approachable introduction with worked examples.
Warning
doxygenstruct: Cannot find class “stdexec::upon_stopped_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::upon_stopped” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
let_value — chain a sender-returning function on the value channel
Chains a sender-returning function onto a predecessor’s value completion. The returned sender is connected and started, and its completions become the completions of the overall pipeline. This is the way to launch another asynchronous operation based on a predecessor’s values. See let_value — chain another async operation for an approachable introduction with worked examples.
Warning
doxygenstruct: Cannot find class “stdexec::let_value_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::let_value” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
let_error — chain a sender-returning function on the error channel
Chains a sender-returning function onto a predecessor’s error completion — the way to launch another asynchronous operation to recover from an error.
Warning
doxygenstruct: Cannot find class “stdexec::let_error_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::let_error” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
let_stopped — chain a sender-returning function on the stopped channel
Chains a sender-returning nullary function onto a predecessor’s stopped completion — the way to launch another asynchronous operation to recover from cancellation.
Warning
doxygenstruct: Cannot find class “stdexec::let_stopped_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::let_stopped” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Scheduling adaptors
These adaptors move work between execution contexts. starts_on begins a
sender on a new scheduler; continues_on transfers execution to a new
scheduler after a sender completes; on runs work on a different
scheduler and then returns to where it started. See
starts_on vs. continues_on vs. on: which one? for a side-by-side comparison.
starts_on — run a sender on a scheduler
Produces a sender that runs an input sender starting on a given scheduler’s execution resource. The completion is delivered on that same resource (no round-trip back).
Warning
doxygenstruct: Cannot find class “stdexec::starts_on_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::starts_on” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
continues_on — transfer to a scheduler after completion
Produces a sender that runs the input sender to completion, then transfers
execution to a given scheduler’s resource before delivering the
completion downstream. Anything chained after continues_on runs on
the new scheduler.
Warning
doxygenstruct: Cannot find class “stdexec::continues_on_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::continues_on” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
on — run on a scheduler and return to the original
The “go there, do work, come back” adaptor. Two forms:
on(sched, sndr) runs sndr on sched and returns to the start
scheduler; on(sndr, sched, closure) (and its pipe form
sndr | on(sched, closure)) hops to sched for an inserted
closure then hops back. See on — take a side trip to another scheduler for guidance on when to
reach for which form.
Warning
doxygenstruct: Cannot find class “stdexec::on_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::on” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Composition adaptors
These adaptors combine multiple senders into one. They are the building blocks for parallel and fan-out patterns.
when_all — run senders concurrently and concatenate values
Takes one or more senders and produces a sender that, when started, runs all of them concurrently and completes when every input has completed. The resulting value-completion is the concatenation of every input’s value datums. If any input fails or is stopped, the others are cancelled and the result is the first error/stopped completion observed. Each input must have exactly one value-completion shape; for senders that can succeed in more than one way, see when_all_with_variant — like when_all for multi-completion senders.
Warning
doxygenstruct: Cannot find class “stdexec::when_all_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::when_all” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
when_all_with_variant — like when_all for multi-completion senders
Like when_all, but lifts the “exactly one value-completion per
input” restriction by wrapping each input in
stdexec::into_variant. Each output value-completion
position is a std::variant<std::tuple<...>, ...> of that input’s
possible shapes.
Warning
doxygenstruct: Cannot find class “stdexec::when_all_with_variant_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::when_all_with_variant” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
into_variant — collapse multi-completion senders into one
Reshapes a sender that may value-complete in more than one way into a
sender that always value-completes with a single
std::variant-of-tuples datum. It is the building block behind
when_all_with_variant and
sync_wait_with_variant,
and is occasionally useful on its own when a downstream algorithm
requires the single-value-completion form.
Warning
doxygenstruct: Cannot find class “stdexec::into_variant_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::into_variant” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
transfer_when_all (deprecated)
Deprecated
This adaptor is not part of the C++26 working draft and is retained
only for backwards compatibility. Write
when_all(sndrs...) | continues_on(sch) instead — the behavior is
identical.
Warning
doxygenstruct: Cannot find class “stdexec::transfer_when_all_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::transfer_when_all” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
transfer_when_all_with_variant (deprecated)
Deprecated
This adaptor is not part of the C++26 working draft and is retained
only for backwards compatibility. Write
when_all_with_variant(sndrs...) | continues_on(sch) instead.
Warning
doxygenstruct: Cannot find class “stdexec::transfer_when_all_with_variant_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::transfer_when_all_with_variant” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Parallel-loop adaptors
The bulk family invokes a callable over an integer index space,
under a given execution policy. They are the parallel-loop primitives
of the sender model — the entry point for GPU/parallel-scheduler
customizations to take over.
bulk — apply a function to each index
Invokes f(i, vs...) for every i in [0, shape) under the
given execution policy. Lowers to bulk_chunked internally so that
domain customizations of bulk_chunked apply transparently. See
bulk — apply a function over an index space for a worked example and policy discussion.
Warning
doxygenstruct: Cannot find class “stdexec::bulk_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::bulk” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
bulk_chunked — apply a function per chunk of indices
Invokes f(begin, end, vs...) for chunks of the index space.
The implementation may split into any number of chunks (one,
shape, anything between).
Warning
doxygenstruct: Cannot find class “stdexec::bulk_chunked_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::bulk_chunked” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
bulk_unchunked — apply a function per index, no chunking allowed
Like bulk but forbids the implementation from combining multiple
indices into a single call. Use when per-iteration state (thread-local
accumulators, per-index hardware resources) prevents batching.
Warning
doxygenstruct: Cannot find class “stdexec::bulk_unchunked_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::bulk_unchunked” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Stopped-channel translator adaptors
These adaptors don’t change the behavior of a pipeline; they translate one completion channel into another, exposing a friendlier shape to downstream code.
stopped_as_error — translate stopped into an error
Converts a set_stopped completion into a set_error completion
carrying a caller-supplied error datum. The resulting sender no longer
has a stopped channel.
Warning
doxygenstruct: Cannot find class “stdexec::stopped_as_error_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::stopped_as_error” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
stopped_as_optional — translate stopped into a value-channel nullopt
Converts a set_stopped completion into a value-channel
std::optional<T>{std::nullopt}, wrapping the predecessor’s value
in std::optional<T>. Requires the predecessor to have exactly one
value completion with one argument.
Warning
doxygenstruct: Cannot find class “stdexec::stopped_as_optional_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::stopped_as_optional” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Environment adaptors
write_env — inject values into the environment
Augments the environment seen by a predecessor sender with
additional queries. The inverse of read_env:
read_env exposes environment values into the value channel,
write_env injects environment values into a child sender’s
environment.
Warning
doxygenvariable: Cannot find variable “stdexec::write_env” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Sender Consumers
A sender consumer takes a sender, connects it to a receiver, and starts the resulting operation. Consumers sit at the tail of a sender pipeline — they are the point at which asynchronous work actually runs. They fall into two broad families:
Synchronous waiters (sync_wait, sync_wait_with_variant) block the calling thread until the pipeline completes and return the result.
Eager launchers (start_detached, spawn, spawn_future) start the pipeline immediately and either discard the result (spawn and start_detached) or expose it as a sender that observes the running operation (spawn_future).
See Picking a consumer for a side-by-side comparison and guidance on which consumer to reach for.
sync_wait — block until the sender completes
Synchronously waits for a single-value-completion sender to complete on
the calling thread. Returns an engaged std::optional<std::tuple<...>>
on success, an empty optional on stopped, and throws on error.
Warning
doxygenstruct: Cannot find class “stdexec::sync_wait_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::sync_wait” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
sync_wait_with_variant — block until a multi-completion sender completes
Like sync_wait but for senders that may complete with more than one
value-completion shape. Returns an engaged
std::optional<std::variant<std::tuple<...>...>> on success.
Warning
doxygenstruct: Cannot find class “stdexec::sync_wait_with_variant_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::sync_wait_with_variant” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
start_detached (extension) — fire and forget
Eagerly starts a sender and discards its result. The operation state is heap-allocated and cleans itself up on completion. stdexec extension — not part of the C++26 working draft. For the standardized scope-tracked equivalent, see spawn.
Warning
doxygenstruct: Cannot find class “experimental::execution::start_detached_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “experimental::execution::start_detached” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
spawn — fire and forget into an async scope
Eagerly starts a sender and ties its lifetime to a given async scope.
The argument sender must not be able to complete with set_error.
The standardized way to launch fire-and-forget work whose lifetime
should be tracked.
Warning
doxygenstruct: Cannot find class “stdexec::spawn_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::spawn” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
spawn_future — fire and observe via a sender
Like spawn but additionally returns a sender that completes when the
spawned operation completes. The returned sender is a one-shot
observer of work that is already running, not a re-runnable handle.
Warning
doxygenstruct: Cannot find class “stdexec::spawn_future_t” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Warning
doxygenvariable: Cannot find variable “stdexec::spawn_future” in doxygen xml output for project “stdexec” from directory: /home/runner/work/stdexec/stdexec/build/docs/build/doxygen/xml
Utilities
TODO: Add utilities section