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.