Boost C++ Libraries Home Libraries People FAQ More


Operation state concept

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.