48 lines
1.3 KiB
C++
48 lines
1.3 KiB
C++
// 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(BOOST_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(BOOST_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
|
|
|