template<class O> concept operation_state = destructible<O> && is_object_v<O> && requires (O& o) { { execution::start(o) } noexcept; };
An object whose type satisfies operation_state
represents the state of an asynchronous operation. It is the result of calling
execution::connect
with a sender
and a receiver
.
execution::start
may be called on an operation_state
object at most once. Once
execution::start
has been invoked, the caller shall
ensure that the start of a non-exceptional invocation of one of the receiver's
completion-signalling operations strongly happens before [intro.multithread]
the call to the operation_state
destructor.
The start of the invocation of execution::start
shall strongly happen before [intro.multithread] the invocation of one of
the three receiver operations.
execution::start
may or may not block pending the
successful transfer of execution to one of the three receiver operations.