Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/parameter/aux_/overloads.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
15:663ca0da4350 | 16:2665513ce2d3 |
---|---|
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) | |
5 | |
6 // This file generates overloads in this format: | |
7 // | |
8 // template<class A0, class A1> | |
9 // typename mpl::apply_wrap1< | |
10 // aux::make_arg_list< | |
11 // PS0,A0 | |
12 // , aux::make_arg_list< | |
13 // PS1,A1 | |
14 // , mpl::identity<aux::empty_arg_list> | |
15 // > | |
16 // > | |
17 // , unnamed_list | |
18 // >::type | |
19 // operator()(A0 const& a0, A1 const& a1) const | |
20 // { | |
21 // typedef typename mpl::apply_wrap1< | |
22 // aux::make_arg_list< | |
23 // PS0,A0 | |
24 // , aux::make_arg_list< | |
25 // PS1,A1 | |
26 // , mpl::identity<aux::empty_arg_list> | |
27 // > | |
28 // > | |
29 // >::type arg_tuple; | |
30 // | |
31 // return arg_tuple( | |
32 // a0 | |
33 // , a1 | |
34 // , aux::void_() | |
35 // ... | |
36 // ); | |
37 // } | |
38 // | |
39 | |
40 #if !defined(BOOST_PP_IS_ITERATING) | |
41 # error Boost.Parameters - do not include this file! | |
42 #endif | |
43 | |
44 #define N BOOST_PP_ITERATION() | |
45 | |
46 #define BOOST_PARAMETER_open_list(z, n, text) \ | |
47 aux::item< \ | |
48 BOOST_PP_CAT(PS, n), BOOST_PP_CAT(A, n) | |
49 | |
50 #define BOOST_PARAMETER_close_list(z, n, text) > | |
51 | |
52 #define BOOST_PARAMETER_arg_list(n) \ | |
53 aux::make_arg_list< \ | |
54 BOOST_PP_ENUM(N, BOOST_PARAMETER_open_list, _) \ | |
55 , void_ \ | |
56 BOOST_PP_REPEAT(N, BOOST_PARAMETER_close_list, _) \ | |
57 , deduced_list \ | |
58 , aux::tag_keyword_arg \ | |
59 > | |
60 | |
61 #define BOOST_PARAMETER_arg_pack_init(z, n, limit) \ | |
62 BOOST_PP_CAT(a, BOOST_PP_SUB(limit,n)) | |
63 | |
64 template<BOOST_PP_ENUM_PARAMS(N, class A)> | |
65 typename mpl::first< | |
66 typename BOOST_PARAMETER_arg_list(N)::type | |
67 >::type | |
68 operator()(BOOST_PP_ENUM_BINARY_PARAMS(N, A, & a)) const | |
69 { | |
70 typedef typename BOOST_PARAMETER_arg_list(N)::type result; | |
71 | |
72 typedef typename mpl::first<result>::type result_type; | |
73 typedef typename mpl::second<result>::type error; | |
74 error(); | |
75 | |
76 return result_type( | |
77 BOOST_PP_ENUM(N, BOOST_PARAMETER_arg_pack_init, BOOST_PP_DEC(N)) | |
78 BOOST_PP_ENUM_TRAILING_PARAMS( | |
79 BOOST_PP_SUB(BOOST_PARAMETER_MAX_ARITY, N) | |
80 , aux::void_reference() BOOST_PP_INTERCEPT | |
81 )); | |
82 } | |
83 | |
84 #undef BOOST_PARAMETER_arg_list | |
85 #undef BOOST_PARAMETER_open_list | |
86 #undef BOOST_PARAMETER_close_list | |
87 #undef N | |
88 |