### Execution context requirements

A type `X` meets the `ExecutionContext` requirements if it is publicly and unambiguously derived from `execution_context`, and satisfies the additional requirements listed below.

In the table below, `x` denotes a value of type `X`.

Table 18. ExecutionContext requirements

expression | return type | assertion/note pre/post-condition
--- | --- | ---
`X::executor_type` | type meeting `Executor` requirements |
`x.~X()` |  | Destroys all unexecuted function objects that were submitted via an executor object that is associated with the execution context.
`x.get_executor()` | `X::executor_type` | Returns an executor object that is associated with the execution context.