diff --git a/include/boost/fiber/fiber.hpp b/include/boost/fiber/fiber.hpp index afee7171..eb10487c 100644 --- a/include/boost/fiber/fiber.hpp +++ b/include/boost/fiber/fiber.hpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -53,9 +54,15 @@ public: template< typename Fn, typename ... Arg, - typename = detail::disable_overload< fiber, Fn > + typename = detail::disable_overload< fiber, Fn >, + typename = detail::disable_overload< launch, Fn >, + typename = detail::disable_overload< std::allocator_arg_t, Fn > > +#if BOOST_COMP_GNUC < 50000000 + fiber( Fn && fn, Arg && ... arg) : +#else fiber( Fn && fn, Arg ... arg) : +#endif fiber{ launch::post, std::allocator_arg, default_stack(), std::forward< Fn >( fn), std::forward< Arg >( arg) ... } { @@ -65,7 +72,11 @@ public: typename ... Arg, typename = detail::disable_overload< fiber, Fn > > +#if BOOST_COMP_GNUC < 50000000 + fiber( launch policy, Fn && fn, Arg && ... arg) : +#else fiber( launch policy, Fn && fn, Arg ... arg) : +#endif fiber{ policy, std::allocator_arg, default_stack(), std::forward< Fn >( fn), std::forward< Arg >( arg) ... } { @@ -75,7 +86,11 @@ public: typename Fn, typename ... Arg > +#if BOOST_COMP_GNUC < 50000000 + fiber( std::allocator_arg_t, StackAllocator salloc, Fn && fn, Arg && ... arg) : +#else fiber( std::allocator_arg_t, StackAllocator salloc, Fn && fn, Arg ... arg) : +#endif fiber{ launch::post, std::allocator_arg, salloc, std::forward< Fn >( fn), std::forward< Arg >( arg) ... } { @@ -85,7 +100,11 @@ public: typename Fn, typename ... Arg > +#if BOOST_COMP_GNUC < 50000000 + fiber( launch policy, std::allocator_arg_t, StackAllocator salloc, Fn && fn, Arg && ... arg) : +#else fiber( launch policy, std::allocator_arg_t, StackAllocator salloc, Fn && fn, Arg ... arg) : +#endif impl_{ make_worker_context( policy, salloc, std::forward< Fn >( fn), std::forward< Arg >( arg) ... ) } { start_(); }