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:

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