Глядя на новый boost::async
реализация в Boost 1.52 Я немного не уверен, что это реализация для 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
разрушен?
В документе говорится, что он «не реализован».
Других решений пока нет …