#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;
}