|  | 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.