// (C) Copyright Tobias Schwinger // // Use modification and distribution are subject to the boost Software License, // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt). //------------------------------------------------------------------------------ #ifndef BOOST_FT_PARAMETER_TYPES_HPP_INCLUDED #define BOOST_FT_PARAMETER_TYPES_HPP_INCLUDED #include #include #include #include #include #include #include namespace boost { namespace function_types { using mpl::placeholders::_; template< typename T, typename ClassTypeTransform = add_reference<_> > struct parameter_types; namespace detail { template struct parameter_types_impl : mpl::pop_front < typename function_types::components::types >::type { }; } template struct parameter_types : mpl::if_ < function_types::is_callable_builtin , detail::parameter_types_impl, boost::blank >::type { BOOST_MPL_AUX_LAMBDA_SUPPORT(2,parameter_types,(T,ClassTypeTransform)) }; } BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(2,function_types::parameter_types) } #endif