#include <iostream>
#include <future>
#include <functional>
#include <deque>
int main() {
std::future<int> f;
std::deque<std::packaged_task<int()>> m_tasks;
{
m_tasks.emplace_back([](){return 3; });
f = m_tasks.back().get_future();
auto taskToExecute = std::move(m_tasks.front());
m_tasks.pop_front();
taskToExecute();
}
std::cout<<f.get()<<std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnV0dXJlPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPGRlcXVlPgoKaW50IG1haW4oKSB7CiAgICBzdGQ6OmZ1dHVyZTxpbnQ+IGY7CiAgICBzdGQ6OmRlcXVlPHN0ZDo6cGFja2FnZWRfdGFzazxpbnQoKT4+IG1fdGFza3M7CiAgICB7CiAgICAgICAgbV90YXNrcy5lbXBsYWNlX2JhY2soW10oKXtyZXR1cm4gMzsgfSk7CiAgICAgICAgZiA9IG1fdGFza3MuYmFjaygpLmdldF9mdXR1cmUoKTsKICAgICAgICBhdXRvIHRhc2tUb0V4ZWN1dGUgPSBzdGQ6Om1vdmUobV90YXNrcy5mcm9udCgpKTsKICAgICAgICBtX3Rhc2tzLnBvcF9mcm9udCgpOwogICAgICAgIHRhc2tUb0V4ZWN1dGUoKTsKICAgIH0KICAgIHN0ZDo6Y291dDw8Zi5nZXQoKTw8c3RkOjplbmRsOwoJcmV0dXJuIDA7Cn0=