![]() |
Home | Libraries | People | FAQ | More |
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.