diff --git a/include/boost/fusion/sequence/utility/unpack_args.hpp b/include/boost/fusion/sequence/utility/unpack_args.hpp index df3cb736..a379a693 100644 --- a/include/boost/fusion/sequence/utility/unpack_args.hpp +++ b/include/boost/fusion/sequence/utility/unpack_args.hpp @@ -33,23 +33,30 @@ namespace boost { namespace fusion { - namespace detail { + template + struct unpack_args_impl_helper + { + typedef typename remove_cv::type f_nocv; + + typedef + typename mpl::eval_if< + is_pointer, + mpl::identity, + mpl::eval_if< + is_function, + add_pointer, + mpl::identity + > + >::type + type; + }; template < class F, class Sequence, - class F_ = - typename boost::mpl::eval_if< - boost::is_pointer, - boost::remove_cv, - boost::mpl::eval_if< - boost::is_function::type>, - boost::add_pointer::type>, - boost::mpl::identity - > - >::type, + class F_ = typename unpack_args_impl_helper::type, class Size = mpl::int_::value> > struct unpack_args_impl;