13 Asynchronous model [async]

13.13 Function get_associated_executor [async.assoc.exec.get]

template<class T> associated_executor_t<T> get_associated_executor(const T& t) noexcept;

Returns: associated_executor<T>::get(t).

template<class T, class Executor> associated_executor_t<T, Executor> get_associated_executor(const T& t, const Executor& ex) noexcept;

Returns: associated_executor<T, Executor>::get(t, ex).

Remarks: This function shall not participate in overload resolution unless is_executor_v<Executor> is true.

template<class T, class ExecutionContext> associated_executor_t<T, typename ExecutionContext::executor_type> get_associated_executor(const T& t, ExecutionContext& ctx) noexcept;

Returns: get_associated_executor(t, ctx.get_executor()).

Remarks: This function shall not participate in overload resolution unless is_convertible<ExecutionContext&, execution_context&>::value is true.