#include <iostream>
#include <future>
#include <thread>
int countdown(int from,int to)
{
for(int i=from;i!=to;--i)
{
std::cout<<i<<std::endl;
std::this_thread::sleep_for(std::chrono::seconds(1));
}
std::cout<<"Lift off!"<<std::endl;
return from-to;
}
void package_task_get_future()
{
std::packaged_task<int(int,int)> tsk(countdown);
std::future<int> fut=tsk.get_future();
std::thread t1(std::move(tsk),10,0);
int value=fut.get();
std::cout<<"The countdown lasted for "<<value<<" seconds"<<std::endl;
t1.join();
}
int main(int args, char **argv)
{
package_task_get_future();
}