1 // Copyright David Abrahams, Daniel Wallin 2003. 2 // Distributed under the Boost Software License, Version 1.0. 3 // (See accompanying file LICENSE_1_0.txt or copy at 4 // http://www.boost.org/LICENSE_1_0.txt) 5 6 #ifndef BOOST_PARAMETER_AUX_PACK_AS_PARAMETER_REQUIREMENTS_HPP 7 #define BOOST_PARAMETER_AUX_PACK_AS_PARAMETER_REQUIREMENTS_HPP 8 9 #include <boost/parameter/aux_/pack/parameter_requirements.hpp> 10 #include <boost/parameter/aux_/pack/tag_type.hpp> 11 #include <boost/parameter/aux_/pack/predicate.hpp> 12 #include <boost/parameter/deduced.hpp> 13 14 namespace boost { namespace parameter { namespace aux { 15 16 // Converts a ParameterSpec into a specialization of 17 // parameter_requirements. We need to do this in order to get the 18 // tag_type into the type in a way that can be conveniently matched 19 // by a satisfies(...) member function in arg_list. 20 template <typename ParameterSpec> 21 struct as_parameter_requirements 22 { 23 typedef ::boost::parameter::aux::parameter_requirements< 24 typename ::boost::parameter::aux::tag_type<ParameterSpec>::type 25 , typename ::boost::parameter::aux::predicate<ParameterSpec>::type 26 , ::boost::parameter::aux::has_default<ParameterSpec> 27 > type; 28 }; 29 }}} // namespace boost::parameter::aux 30 31 #endif // include guard 32 33