diff options
Diffstat (limited to 'boost/signals2/detail/variadic_slot_invoker.hpp')
-rw-r--r-- | boost/signals2/detail/variadic_slot_invoker.hpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/boost/signals2/detail/variadic_slot_invoker.hpp b/boost/signals2/detail/variadic_slot_invoker.hpp index 08059b5d0a..b7659a5668 100644 --- a/boost/signals2/detail/variadic_slot_invoker.hpp +++ b/boost/signals2/detail/variadic_slot_invoker.hpp @@ -16,10 +16,16 @@ #define BOOST_SIGNALS2_DETAIL_VARIADIC_SLOT_INVOKER_HPP #include <boost/signals2/detail/variadic_arg_type.hpp> -// if compiler has variadic template support, we assume they have -// a variadic std::tuple implementation here. We don't use boost::tuple -// because it does not have variadic template support at present. + +// if compiler has std::tuple use it instead of boost::tuple +// because boost::tuple does not have variadic template support at present. +#ifdef BOOST_NO_CXX11_HDR_TUPLE +#include <boost/tuple.hpp> +#define BOOST_SIGNALS2_TUPLE boost::tuple +#else #include <tuple> +#define BOOST_SIGNALS2_TUPLE std::tuple +#endif namespace boost { @@ -65,7 +71,7 @@ namespace boost typedef R result_type; template<typename Func, typename ... Args> - R operator()(Func &func, std::tuple<Args...> args) const + R operator()(Func &func, BOOST_SIGNALS2_TUPLE<Args...> args) const { typedef typename make_unsigned_meta_array<sizeof...(Args)>::type indices_type; typename Func::result_type *resolver = 0; @@ -73,12 +79,12 @@ namespace boost } private: template<typename T, typename Func, unsigned ... indices, typename ... Args> - R m_invoke(T *, Func &func, unsigned_meta_array<indices...>, std::tuple<Args...> args) const + R m_invoke(T *, Func &func, unsigned_meta_array<indices...>, BOOST_SIGNALS2_TUPLE<Args...> args) const { return func(std::get<indices>(args)...); } template<typename Func, unsigned ... indices, typename ... Args> - R m_invoke(void *, Func &func, unsigned_meta_array<indices...>, std::tuple<Args...> args) const + R m_invoke(void *, Func &func, unsigned_meta_array<indices...>, BOOST_SIGNALS2_TUPLE<Args...> args) const { func(std::get<indices>(args)...); return R(); @@ -113,7 +119,7 @@ namespace boost { return call_with_tuple_args<result_type>()(connectionBody->slot.slot_function(), _args); } - std::tuple<Args& ...> _args; + BOOST_SIGNALS2_TUPLE<Args& ...> _args; }; } // namespace detail } // namespace signals2 |