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

fix overloads of fiber ctor for gcc

This commit is contained in:
Oliver Kowalke
2017-06-05 20:21:12 +02:00
parent f417bee9b0
commit cf1e529dcc

View File

@@ -15,6 +15,7 @@
#include <boost/assert.hpp>
#include <boost/config.hpp>
#include <boost/intrusive_ptr.hpp>
#include <boost/predef.h>
#include <boost/fiber/detail/config.hpp>
#include <boost/fiber/detail/disable_overload.hpp>
@@ -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_();
}