// Copyright David Abrahams, Daniel Wallin 2003. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PARAMETER_AUX_PACK_TAG_DEDUCED_HPP #define BOOST_PARAMETER_AUX_PACK_TAG_DEDUCED_HPP #include #include #include #if defined(BOOST_PARAMETER_CAN_USE_MP11) #include #include #else #include #include #endif namespace boost { namespace parameter { namespace aux { // Tags a deduced argument Arg with the keyword tag of Spec using TagFn. // Returns the tagged argument and the mpl::set<> UsedArgs with the // tag of Spec inserted. template struct tag_deduced { #if defined(BOOST_PARAMETER_CAN_USE_MP11) using type = ::boost::mp11::mp_list< ::boost::mp11::mp_apply_q< TagFn , ::boost::mp11::mp_list< typename ::boost::parameter::aux::tag_type::type , Arg > > #else typedef ::boost::mpl::pair< typename ::boost::mpl::apply_wrap2< TagFn , typename ::boost::parameter::aux::tag_type::type , Arg >::type #endif // BOOST_PARAMETER_CAN_USE_MP11 , typename ::boost::parameter::aux::insert_< UsedArgs , typename ::boost::parameter::aux::tag_type::type >::type #if defined(BOOST_PARAMETER_CAN_USE_MP11) >; #else > type; #endif }; }}} // namespace boost::parameter::aux #endif // include guard