### make_work_guard

Create an `executor_work_guard` object.

    template<
        typename Executor>
    executor_work_guard< Executor > make_work_guard(
        const Executor & ex,
        constraint_t< is_executor< Executor >::value||execution::is_executor< Executor >::value >  = 0);
      » more...

    template<
        typename ExecutionContext>
    executor_work_guard< typename ExecutionContext::executor_type > make_work_guard(
        ExecutionContext & ctx,
        constraint_t< is_convertible< ExecutionContext &, execution_context & >::value >  = 0);
      » more...

    template<
        typename T>
    executor_work_guard< typename constraint_t< !is_executor< T >::value &&!execution::is_executor< T >::value &&!is_convertible< T &, execution_context & >::value, associated_executor< T > >::type > make_work_guard(
        const T & t);
      » more...

    template<
        typename T,
        typename Executor>
    executor_work_guard< associated_executor_t< T, Executor > > make_work_guard(
        const T & t,
        const Executor & ex,
        constraint_t< is_executor< Executor >::value||execution::is_executor< Executor >::value >  = 0);
      » more...

    template<
        typename T,
        typename ExecutionContext>
    executor_work_guard< associated_executor_t< T, typename ExecutionContext::executor_type > > make_work_guard(
        const T & t,
        ExecutionContext & ctx,
        constraint_t< !is_executor< T >::value >  = 0,
        constraint_t< !execution::is_executor< T >::value >  = 0,
        constraint_t< !is_convertible< T &, execution_context & >::value >  = 0,
        constraint_t< is_convertible< ExecutionContext &, execution_context & >::value >  = 0);
      » more...

##### Requirements

Header: `asio/executor_work_guard.hpp`

Convenience header: `asio.hpp`