From 710fec359caf34688b4526cf842a2c7bdd01a40c Mon Sep 17 00:00:00 2001 From: Oliver Kowalke Date: Wed, 16 Dec 2015 19:33:48 +0100 Subject: [PATCH] msvc-14.0 can not deal with using declaration --- include/boost/fiber/future/async.hpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/include/boost/fiber/future/async.hpp b/include/boost/fiber/future/async.hpp index 0566de2d..d4353eb2 100644 --- a/include/boost/fiber/future/async.hpp +++ b/include/boost/fiber/future/async.hpp @@ -19,21 +19,17 @@ namespace boost { namespace fibers { -namespace detail { -// based on libstdc++-v3 template< typename Fn, typename ... Args > -using result_of = +future< typename std::result_of< typename std::decay< Fn >::type( typename std::decay< Args >::type ... ) - >::type; - -} - -template< typename Fn, typename ... Args > -future< detail::result_of< Fn, Args ... > > + >::type +> async( Fn && fn, Args && ... args) { - using result_t = detail::result_of< Fn, Args ... >; + typedef typename std::result_of< + typename std::decay< Fn >::type( typename std::decay< Args >::type ... ) + >::type result_t; packaged_task< result_t( Args ... ) > pt{ std::forward< Fn >( fn) }; future< result_t > f{ pt.get_future() }; @@ -42,9 +38,15 @@ async( Fn && fn, Args && ... args) { } template< typename StackAllocator, typename Fn, typename ... Args > -future< detail::result_of< Fn, Args ... > > +future< + typename std::result_of< + typename std::decay< Fn >::type( typename std::decay< Args >::type ... ) + >::type +> async( std::allocator_arg_t, StackAllocator salloc, Fn && fn, Args && ... args) { - using result_t = detail::result_of< Fn, Args ... >; + typedef typename std::result_of< + typename std::decay< Fn >::type( typename std::decay< Args >::type ... ) + >::type result_t; packaged_task< result_t( Args ... ) > pt{ std::allocator_arg, salloc, std::forward< Fn >( fn) };