auto callback_object_raw = callback_object.get();\r
auto future_object = boost::static_pointer_cast<future_object_t>(std::move(callback_object));\r
\r
- int dummy = 0;\r
- future_object->set_wait_callback(std::function<void(int)>([callback_object_raw](int) mutable\r
- { \r
- (*callback_object_raw)();\r
- }), &dummy);\r
+ future_object->set_wait_callback(std::mem_fn(&detail::callback_object<result_type, F>::operator()), callback_object_raw);\r
\r
boost::unique_future<result_type> future;\r
\r
template<typename F>\r
auto async(F&& f) -> boost::unique_future<decltype(f())>\r
{ \r
- return async(launch::async, std::forward<F>(f));\r
+ return async(launch::async | launch::deferred, std::forward<F>(f));\r
}\r
\r
template<typename T>\r