2
0
mirror of https://github.com/boostorg/fiber.git synced 2026-02-20 14:42:21 +00:00

fix async() overload

This commit is contained in:
Oliver Kowalke
2016-05-08 13:50:04 +02:00
parent 24fb04109e
commit 577a4bcdac

View File

@@ -23,12 +23,12 @@ namespace fibers {
template< typename Fn, typename ... Args >
future<
typename std::result_of<
typename std::enable_if<
! detail::is_launch_policy< typename std::decay< Fn >::type >::value,
typename std::decay< Fn >::type( typename std::decay< Args >::type ... )
>::type
>::type
typename std::result_of<
typename std::enable_if<
! detail::is_launch_policy< typename std::decay< Fn >::type >::value,
typename std::decay< Fn >::type
>::type( typename std::decay< Args >::type ... )
>::type
>
async( Fn && fn, Args && ... args) {
typedef typename std::result_of<
@@ -44,12 +44,12 @@ async( Fn && fn, Args && ... args) {
template< typename Policy, typename Fn, typename ... Args >
future<
typename std::result_of<
typename std::enable_if<
detail::is_launch_policy< Policy >::value,
typename std::decay< Fn >::type( typename std::decay< Args >::type ... )
>::type
>::type
typename std::result_of<
typename std::enable_if<
detail::is_launch_policy< Policy >::value,
typename std::decay< Fn >::type
>::type( typename std::decay< Args >::type ...)
>::type
>
async( Policy policy, Fn && fn, Args && ... args) {
typedef typename std::result_of<
@@ -63,35 +63,14 @@ async( Policy policy, Fn && fn, Args && ... args) {
return f;
}
template< typename StackAllocator, typename Fn, typename ... Args >
future<
typename std::result_of<
typename std::enable_if<
! detail::is_launch_policy< typename std::decay< Fn >::type >::value,
typename std::decay< Fn >::type( typename std::decay< Args >::type ... )
>::type
>::type
>
async( std::allocator_arg_t, StackAllocator salloc, Fn && fn, Args && ... args) {
typedef typename std::result_of<
typename std::decay< Fn >::type( typename std::decay< Args >::type ... )
>::type result_t;
packaged_task< result_t( typename std::decay< Args >::type ... ) > pt{
std::allocator_arg, salloc, std::forward< Fn >( fn) };
future< result_t > f{ pt.get_future() };
fiber{ std::move( pt), std::forward< Args >( args) ... }.detach();
return f;
}
template< typename Policy, typename StackAllocator, typename Fn, typename ... Args >
future<
typename std::result_of<
typename std::enable_if<
detail::is_launch_policy< Policy >::value,
typename std::decay< Fn >::type( typename std::decay< Args >::type ... )
>::type
>::type
typename std::result_of<
typename std::enable_if<
detail::is_launch_policy< Policy >::value,
typename std::decay< Fn >::type
>::type( typename std::decay< Args >::type ... )
>::type
>
async( Policy policy, std::allocator_arg_t, StackAllocator salloc, Fn && fn, Args && ... args) {
typedef typename std::result_of<