std::async相当のことをBoostで。

こんな感じでした。

#include <iostream>
#include <windows.h>
#include <boost/thread.hpp>
#include <boost/ref.hpp>

int foo()
{
   const int sec = 10;
   ::Sleep(sec * 1000);
   return 3;
}

int main()
{
    boost::packaged_task<int> p(&foo);
    boost::unique_future<int> f(p.get_future());

    boost::thread task(boost::ref(p));

    std::cout << "hoge" << std::endl;
    std::cout << f.get() << std::endl;
}