1 // Copyright David Abrahams, Daniel Wallin 2003. Use, modification and
2 // distribution is subject to 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)
6 // This file generates overloads in this format:
8 // template<class A0, class A1>
9 // typename aux::make_arg_list<
11 // , aux::make_arg_list<
13 // , mpl::identity<aux::empty_arg_list>
16 // operator()(A0 const& a0, A1 const& a1) const
18 // typedef typename aux::make_arg_list<
20 // , aux::make_arg_list<
22 // , mpl::identity<aux::empty_arg_list>
35 #if !defined(BOOST_PP_IS_ITERATING)
36 # error Boost.Parameters - do not include this file!
39 #define N BOOST_PP_ITERATION()
41 #define BOOST_PARAMETER_open_list(z, n, text) \
43 BOOST_PP_CAT(PS, n), BOOST_PP_CAT(A, n) \
45 #define BOOST_PARAMETER_close_list(z, n, text) >
47 #define BOOST_PARAMETER_arg_list(n) \
48 BOOST_PP_ENUM(N, BOOST_PARAMETER_open_list, _) \
49 , mpl::identity<aux::empty_arg_list> \
50 BOOST_PP_REPEAT(N, BOOST_PARAMETER_close_list, _)
52 template<BOOST_PP_ENUM_PARAMS(N, class A)>
53 typename BOOST_PARAMETER_arg_list(N)::type
54 operator()(BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& a)) const
56 typedef typename BOOST_PARAMETER_arg_list(N)::type arg_tuple;
59 BOOST_PP_ENUM_PARAMS(N, a)
60 BOOST_PP_ENUM_TRAILING_PARAMS(
61 BOOST_PP_SUB(BOOST_PARAMETER_MAX_ARITY, N)
62 , aux::void_() BOOST_PP_INTERCEPT
66 #undef BOOST_PARAMETER_arg_list
67 #undef BOOST_PARAMETER_open_list
68 #undef BOOST_PARAMETER_close_list