typename executor_traits<Executor>::template future<
  typename executor_traits<Executor>::template container<
    typename std::result_of<
      Function(typename executor_traits<Executor>::index_type, typename std::result_of<Factories()>::type&...)
    >::type
  >
>
  multi_agent_async_execute_with_shared_inits_returning_default_container(std::true_type, Executor& ex, Function f, typename executor_traits<Executor>::shape_type shape, Factories... shared_factories)
{
  return ex.async_execute(f, shape, shared_factories...);
} // end multi_agent_async_execute_with_shared_inits_returning_default_container()
typename executor_traits<Executor>::template future<
  typename executor_traits<Executor>::template container<
    typename std::result_of<
      Function(typename executor_traits<Executor>::index_type)
    >::type
  >
>
  multi_agent_async_execute_returning_default_container(std::true_type, Executor& ex, Function f, typename executor_traits<Executor>::shape_type shape)
{
  return ex.async_execute(f, shape);
} // end multi_agent_async_execute_returning_default_container()