#include <iostream> #include <future> #include <chrono> int delayedAdd(int a, int b) { std::this_thread::sleep_for(std::chrono::seconds(3)); std::cout << "In add\n"; return a + b; } int main() { std::packaged_task<int()> pTask(std::bind(delayedAdd, 2, 3)); auto fut = pTask.get_future(); std::thread t(std::move(pTask)); t.detach(); std::cout << fut.get(); } /* Output In add 5 */