diff options
Diffstat (limited to 'boost/parameter/aux_/pack/item.hpp')
-rw-r--r-- | boost/parameter/aux_/pack/item.hpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/boost/parameter/aux_/pack/item.hpp b/boost/parameter/aux_/pack/item.hpp new file mode 100644 index 0000000000..b408051bad --- /dev/null +++ b/boost/parameter/aux_/pack/item.hpp @@ -0,0 +1,47 @@ +// 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_ITEM_HPP +#define BOOST_PARAMETER_AUX_PACK_ITEM_HPP + +#include <boost/parameter/aux_/void.hpp> +#include <boost/config.hpp> +#include <boost/config/workaround.hpp> + +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#include <boost/type_traits/is_const.hpp> +#include <boost/type_traits/remove_reference.hpp> +#endif + +namespace boost { namespace parameter { namespace aux { + + // A parameter spec item typelist. + template < + typename Spec + , typename Arg + , typename Tail = ::boost::parameter::void_ + > + struct item + { + typedef Spec spec; +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + typedef ::boost::is_const< + typename ::boost::remove_reference<Arg>::type + > is_arg_const; +#endif + typedef Arg arg; + typedef Tail tail; + }; + + template <typename Spec, typename Arg, typename Tail> + struct make_item + { + typedef boost::parameter::aux + ::item<Spec,Arg,typename Tail::type> type; + }; +}}} // namespace boost::parameter::aux + +#endif // include guard + |