diff --git a/include/boost/fiber/future/async.hpp b/include/boost/fiber/future/async.hpp index b6792a8d..13f3d025 100644 --- a/include/boost/fiber/future/async.hpp +++ b/include/boost/fiber/future/async.hpp @@ -21,24 +21,22 @@ namespace boost { namespace fibers { template< typename Fn, typename ... Args > -future< typename std::result_of< Fn &&( Args && ... ) >::type > +future< typename std::result_of< Fn( Args && ... ) >::type > async( Fn && fn, Args && ... args) { - typedef typename std::result_of< Fn &&( Args && ... ) >::type result_type; + typedef typename std::result_of< Fn( Args && ... ) >::type result_type; - packaged_task< result_type( typename std::decay< Args >::type ... ) > pt{ - std::forward< Fn >( fn) }; + packaged_task< result_type( Args && ... ) > pt{ std::forward< Fn >( fn) }; future< result_type > f{ pt.get_future() }; fiber{ std::move( pt), std::forward< Args >( args) ... }.detach(); return f; } template< typename StackAllocator, typename Fn, typename ... Args > -future< typename std::result_of< Fn &&( Args && ... ) >::type > +future< typename std::result_of< Fn( Args && ... ) >::type > async( std::allocator_arg_t, StackAllocator salloc, Fn && fn, Args && ... args) { - typedef typename std::result_of< Fn &&( Args && ... ) >::type result_type; + typedef typename std::result_of< Fn( Args && ... ) >::type result_type; - packaged_task< result_type( typename std::decay< Args >::type ... ) > pt{ - std::forward< Fn >( fn) }; + packaged_task< result_type( Args && ... ) > pt{ std::forward< Fn >( fn) }; future< result_type > f{ pt.get_future() }; fiber{ salloc, std::move( pt), std::forward< Args >( args) ... }.detach(); return f;