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(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
14#include <boost/type_traits/is_const.hpp>
15#include <boost/type_traits/remove_reference.hpp>
16#endif
17
18namespace 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(BOOST_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

source code of boost/libs/parameter/include/boost/parameter/aux_/pack/item.hpp