ブースト 1.52の新しいboost::async
実装を見ると、次の実装について少し確信が持てませんlaunch::deferred
。
else if (int(policy) & int(launch::deferred))
{
packaged_task<R> pt( boost::forward<F>(f) );
BOOST_THREAD_FUTURE<R> ret = pt.get_future();
return ::boost::move(ret);
}
これがどのように機能するのかよくわかりません。が破棄されるとすぐに、これは常にbroken_promise
例外をスローしませんか?packaged_task