1 /* 2 A variadic implementation of variadic boost::signals2::signal, used when variadic 3 template support is detected in the compiler. 4 5 Author: Frank Mori Hess <fmhess@users.sourceforge.net> 6 Begin: 2009-05-26 7 */ 8 // Copyright Frank Mori Hess 2009 9 // Use, modification and 10 // distribution is subject to the Boost Software License, Version 11 // 1.0. (See accompanying file LICENSE_1_0.txt or copy at 12 // http://www.boost.org/LICENSE_1_0.txt) 13 14 // For more information, see http://www.boost.org 15 16 #ifndef BOOST_SIGNALS2_VARIADIC_SIGNAL_HPP 17 #define BOOST_SIGNALS2_VARIADIC_SIGNAL_HPP 18 19 #include <boost/preprocessor/control/expr_if.hpp> 20 #include <boost/signals2/detail/variadic_arg_type.hpp> 21 #include <boost/signals2/detail/variadic_slot_invoker.hpp> 22 #include <boost/type_traits/function_traits.hpp> 23 #include <boost/type_traits/is_void.hpp> 24 #include <boost/utility/enable_if.hpp> 25 26 namespace boost 27 { 28 namespace signals2 29 { 30 namespace detail 31 { 32 template<typename Signature> class variadic_extended_signature; 33 // partial template specialization 34 template<typename R, typename ... Args> 35 class variadic_extended_signature<R (Args...)> 36 { 37 public: 38 typedef boost::function<R (const boost::signals2::connection &, Args...)> function_type; 39 }; 40 } // namespace detail 41 } // namespace signals2 42 } // namespace boost 43 44 #include <boost/signals2/detail/signal_template.hpp> 45 46 #endif // BOOST_SIGNALS2_VARIADIC_SIGNAL_HPP 47