73 -> std::future<
typename std::result_of<F(Args...)>::type> {
74 using return_type =
typename std::result_of<F(Args...)>::type;
76 auto task = std::make_shared<std::packaged_task<return_type()>>(
77 std::bind(std::forward<F>(
f), std::forward<Args>(args)...));
79 std::future<return_type> res = task->get_future();
83 return std::future<return_type>();
85 task_queue_.Enqueue([task]() { (*task)(); });