Index: boost/signals2/detail/variadic_slot_invoker.hpp =================================================================== --- boost/signals2/detail/variadic_slot_invoker.hpp (revision 82985) +++ boost/signals2/detail/variadic_slot_invoker.hpp (working copy) @@ -15,6 +15,7 @@ #ifndef BOOST_SIGNALS2_DETAIL_VARIADIC_SLOT_INVOKER_HPP #define BOOST_SIGNALS2_DETAIL_VARIADIC_SLOT_INVOKER_HPP +#include #include // if compiler has std::tuple use it instead of boost::tuple @@ -22,9 +23,11 @@ #ifdef BOOST_NO_CXX11_HDR_TUPLE #include #define BOOST_SIGNALS2_TUPLE boost::tuple +#define BOOST_SIGNALS2_GET boost::get #else #include #define BOOST_SIGNALS2_TUPLE std::tuple +#define BOOST_SIGNALS2_GET std::get #endif namespace boost @@ -70,10 +73,10 @@ public: typedef R result_type; - template - R operator()(Func &func, BOOST_SIGNALS2_TUPLE args) const + template + R operator()(Func &func, BOOST_SIGNALS2_TUPLE args, mpl::size_t) const { - typedef typename make_unsigned_meta_array::type indices_type; + typedef typename make_unsigned_meta_array::type indices_type; typename Func::result_type *resolver = 0; return m_invoke(resolver, func, indices_type(), args); } @@ -81,12 +84,12 @@ template R m_invoke(T *, Func &func, unsigned_meta_array, BOOST_SIGNALS2_TUPLE args) const { - return func(std::get(args)...); + return func(BOOST_SIGNALS2_GET(args)...); } template R m_invoke(void *, Func &func, unsigned_meta_array, BOOST_SIGNALS2_TUPLE args) const { - func(std::get(args)...); + func(BOOST_SIGNALS2_GET(args)...); return R(); } }; @@ -111,13 +114,13 @@ result_type m_invoke(const ConnectionBodyType &connectionBody, const void_type *) const { - return call_with_tuple_args()(connectionBody->slot.slot_function(), _args); + return call_with_tuple_args()(connectionBody->slot.slot_function(), _args, mpl::size_t()); return void_type(); } template result_type m_invoke(const ConnectionBodyType &connectionBody, ...) const { - return call_with_tuple_args()(connectionBody->slot.slot_function(), _args); + return call_with_tuple_args()(connectionBody->slot.slot_function(), _args, mpl::size_t()); } BOOST_SIGNALS2_TUPLE _args; };