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_ITEM_HPP 7 #define BOOST_PARAMETER_AUX_PACK_ITEM_HPP 8 9 #include <boost/parameter/aux_/void.hpp> 10 #include <boost/config.hpp> 11 #include <boost/config/workaround.hpp> 12 13 #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) 14 #include <boost/type_traits/is_const.hpp> 15 #include <boost/type_traits/remove_reference.hpp> 16 #endif 17 18 namespace boost { namespace parameter { namespace aux { 19 20 // A parameter spec item typelist. 21 template < 22 typename Spec 23 , typename Arg 24 , typename Tail = ::boost::parameter::void_ 25 > 26 struct item 27 { 28 typedef Spec spec; 29 #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) 30 typedef ::boost::is_const< 31 typename ::boost::remove_reference<Arg>::type 32 > is_arg_const; 33 #endif 34 typedef Arg arg; 35 typedef Tail tail; 36 }; 37 38 template <typename Spec, typename Arg, typename Tail> 39 struct make_item 40 { 41 typedef boost::parameter::aux 42 ::item<Spec,Arg,typename Tail::type> type; 43 }; 44 }}} // namespace boost::parameter::aux 45 46 #endif // include guard 47 48