### basic_yield_context

A completion token that represents the currently executing coroutine.

    template<
        typename Executor>
    class basic_yield_context

##### Types

Name | Description
--- | ---
cancellation_slot_type | The cancellation slot type associated with the yield context.
executor_type | The executor type associated with the yield context.

##### Member Functions

Name | Description
--- | ---
basic_yield_context [constructor] | Construct a yield context from another yield context type.
cancelled | Determine whether the current coroutine has been cancelled.
get_cancellation_slot | Get the cancellation slot associated with the coroutine.
get_cancellation_state | Get the cancellation state associated with the coroutine.
get_executor | Get the executor associated with the yield context.
operator[] | Return a yield context that sets the specified error_code.
reset_cancellation_state | Reset the cancellation state associated with the coroutine.
throw_if_cancelled | Determine whether the coroutine throws if trying to suspend when it has been cancelled. — Set whether the coroutine throws if trying to suspend when it has been cancelled.

The `basic_yield_context` class is a completion token type that is used to represent the currently executing stackful coroutine. A `basic_yield_context` object may be passed as a completion token to an asynchronous operation. For example:

    template <typename Executor>
    void my_coroutine(basic_yield_context<Executor> yield)
    {
      ...
      std::size_t n = my_socket.async_read_some(buffer, yield);
      ...
    }

The initiating function (async_read_some in the above example) suspends the current coroutine. The coroutine is resumed when the asynchronous operation completes, and the result of the operation is returned.

##### Requirements

Header: `asio/spawn.hpp`

Convenience header: None