1 // Copyright Cromwell D. Enage 2017.
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)
6 #include <boost/parameter/config.hpp>
9 defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) && \
10 !defined(__MINGW32__) \
12 !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) && \
13 (10 < BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY) \
15 #if (BOOST_PARAMETER_MAX_ARITY < 10)
16 #error Define BOOST_PARAMETER_MAX_ARITY as 10 or greater.
20 #include <boost/parameter/name.hpp>
24 BOOST_PARAMETER_NAME((_lrc0
, keywords
) in(lrc0
))
25 BOOST_PARAMETER_NAME((_lr0
, keywords
) in_out(lr0
))
26 BOOST_PARAMETER_NAME((_rrc0
, keywords
) in(rrc0
))
27 #if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING)
28 BOOST_PARAMETER_NAME((_rr0
, keywords
) consume(rr0
))
30 BOOST_PARAMETER_NAME((_rr0
, keywords
) rr0
)
32 BOOST_PARAMETER_NAME((_lrc1
, keywords
) in(lrc1
))
33 BOOST_PARAMETER_NAME((_lr1
, keywords
) out(lr1
))
34 BOOST_PARAMETER_NAME((_rrc1
, keywords
) in(rrc1
))
35 BOOST_PARAMETER_NAME((_lrc2
, keywords
) in(lrc2
))
36 BOOST_PARAMETER_NAME((_lr2
, keywords
) out(lr2
))
37 BOOST_PARAMETER_NAME((_rr2
, keywords
) rr2
)
41 defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) && \
42 !defined(__MINGW32__) \
44 !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) && \
45 (10 < BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY) \
47 #include <boost/parameter/parameters.hpp>
48 #include <boost/parameter/required.hpp>
49 #include <boost/parameter/optional.hpp>
54 : boost::parameter::parameters
<
55 boost::parameter::required
<test::keywords::lrc0
>
56 , boost::parameter::required
<test::keywords::lr0
>
57 , boost::parameter::required
<test::keywords::rrc0
>
58 , boost::parameter::required
<test::keywords::rr0
>
59 , boost::parameter::required
<test::keywords::lrc1
>
60 , boost::parameter::required
<test::keywords::lr1
>
61 , boost::parameter::required
<test::keywords::rrc1
>
62 , boost::parameter::optional
<test::keywords::lrc2
>
63 , boost::parameter::optional
<test::keywords::lr2
>
64 , boost::parameter::optional
<test::keywords::rr2
>
72 #include <boost/core/lightweight_test.hpp>
73 #include "evaluate_category.hpp"
79 template <typename Args
>
80 static void evaluate(Args
const& args
)
83 test::passed_by_lvalue_reference_to_const
84 , test::U::evaluate_category
<0>(args
[test::_lrc0
])
87 test::passed_by_lvalue_reference
88 , test::U::evaluate_category
<0>(args
[test::_lr0
])
91 test::passed_by_lvalue_reference_to_const
92 , test::U::evaluate_category
<1>(args
[test::_lrc1
])
95 test::passed_by_lvalue_reference
96 , test::U::evaluate_category
<1>(args
[test::_lr1
])
99 test::passed_by_lvalue_reference_to_const
100 , test::U::evaluate_category
<2>(
101 args
[test::_lrc2
| test::lvalue_const_bitset
<2>()]
105 test::passed_by_lvalue_reference
106 , test::U::evaluate_category
<2>(
107 args
[test::_lr2
|| test::lvalue_bitset_function
<2>()]
110 #if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING)
112 test::passed_by_rvalue_reference_to_const
113 , test::U::evaluate_category
<0>(args
[test::_rrc0
])
116 test::passed_by_rvalue_reference
117 , test::U::evaluate_category
<0>(args
[test::_rr0
])
120 test::passed_by_rvalue_reference_to_const
121 , test::U::evaluate_category
<1>(args
[test::_rrc1
])
124 test::passed_by_rvalue_reference
125 , test::U::evaluate_category
<2>(
126 args
[test::_rr2
|| test::rvalue_bitset_function
<2>()]
129 #else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING)
131 test::passed_by_lvalue_reference_to_const
132 , test::U::evaluate_category
<0>(args
[test::_rrc0
])
135 test::passed_by_lvalue_reference_to_const
136 , test::U::evaluate_category
<0>(args
[test::_rr0
])
139 test::passed_by_lvalue_reference_to_const
140 , test::U::evaluate_category
<1>(args
[test::_rrc1
])
143 test::passed_by_lvalue_reference_to_const
144 , test::U::evaluate_category
<2>(
145 args
[test::_rr2
|| test::rvalue_bitset_function
<2>()]
148 #endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING
153 #if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING)
154 #include <boost/parameter/aux_/as_lvalue.hpp>
159 #if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING)
160 #if defined(__MINGW32__)
162 test::_rrc1
= test::rvalue_const_bitset
<1>()
163 , test::_lrc0
= test::lvalue_const_bitset
<0>()
164 , test::_lr0
= test::lvalue_bitset
<0>()
165 , test::_rrc0
= test::rvalue_const_bitset
<0>()
166 , test::_rr0
= test::rvalue_bitset
<0>()
167 , test::_lrc1
= test::lvalue_const_bitset
<1>()
168 , test::_lr1
= test::lvalue_bitset
<1>()
171 test::_lr0
= test::lvalue_bitset
<0>()
172 , test::_rrc0
= test::rvalue_const_bitset
<0>()
173 , test::_rr0
= test::rvalue_bitset
<0>()
174 , test::_lrc1
= test::lvalue_const_bitset
<1>()
175 , test::_lr1
= test::lvalue_bitset
<1>()
176 , test::_rrc1
= test::rvalue_const_bitset
<1>()
177 , test::_lrc2
= test::lvalue_const_bitset
<2>()
178 , test::_lr2
= test::lvalue_bitset
<2>()
179 , test::_rr2
= test::rvalue_bitset
<2>()
180 , test::_lrc0
= test::lvalue_const_bitset
<0>()
182 #else // !defined(__MINGW32__)
184 test::g_parameters()(
185 test::lvalue_const_bitset
<0>()
186 , test::lvalue_bitset
<0>()
187 , test::rvalue_const_bitset
<0>()
188 , test::rvalue_bitset
<0>()
189 , test::lvalue_const_bitset
<1>()
190 , test::lvalue_bitset
<1>()
191 , test::rvalue_const_bitset
<1>()
195 test::g_parameters()(
196 test::lvalue_const_bitset
<0>()
197 , test::lvalue_bitset
<0>()
198 , test::rvalue_const_bitset
<0>()
199 , test::rvalue_bitset
<0>()
200 , test::lvalue_const_bitset
<1>()
201 , test::lvalue_bitset
<1>()
202 , test::rvalue_const_bitset
<1>()
203 , test::lvalue_const_bitset
<2>()
204 , test::lvalue_bitset
<2>()
205 , test::rvalue_bitset
<2>()
208 #endif // __MINGW32__
209 #else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING)
210 #if (10 < BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY)
212 test::g_parameters()(
213 test::lvalue_const_bitset
<0>()
214 , test::lvalue_bitset
<0>()
215 , test::rvalue_const_bitset
<0>()
216 , boost::parameter::aux::as_lvalue(test::rvalue_bitset
<0>())
217 , test::lvalue_const_bitset
<1>()
218 , test::lvalue_bitset
<1>()
219 , test::rvalue_const_bitset
<1>()
223 test::g_parameters()(
224 test::lvalue_const_bitset
<0>()
225 , test::lvalue_bitset
<0>()
226 , test::rvalue_const_bitset
<0>()
227 , boost::parameter::aux::as_lvalue(test::rvalue_bitset
<0>())
228 , test::lvalue_const_bitset
<1>()
229 , test::lvalue_bitset
<1>()
230 , test::rvalue_const_bitset
<1>()
231 , test::lvalue_const_bitset
<2>()
232 , test::lvalue_bitset
<2>()
233 , boost::parameter::aux::as_lvalue(test::rvalue_bitset
<2>())
236 #else // !(10 < BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY)
238 test::_lrc0
= test::lvalue_const_bitset
<0>()
239 , test::_lr0
= test::lvalue_bitset
<0>()
240 , test::_rrc0
= test::rvalue_const_bitset
<0>()
241 , test::_rr0
= boost::parameter::aux::as_lvalue(
242 test::rvalue_bitset
<0>()
244 , test::_lrc1
= test::lvalue_const_bitset
<1>()
245 , test::_lr1
= test::lvalue_bitset
<1>()
246 , test::_rrc1
= test::rvalue_const_bitset
<1>()
249 test::_lrc0
= test::lvalue_const_bitset
<0>()
250 , test::_lr0
= test::lvalue_bitset
<0>()
251 , test::_rrc0
= test::rvalue_const_bitset
<0>()
252 , test::_rr0
= boost::parameter::aux::as_lvalue(
253 test::rvalue_bitset
<0>()
255 , test::_lrc1
= test::lvalue_const_bitset
<1>()
256 , test::_lr1
= test::lvalue_bitset
<1>()
257 , test::_rrc1
= test::rvalue_const_bitset
<1>()
258 , test::_lrc2
= test::lvalue_const_bitset
<2>()
259 , test::_lr2
= test::lvalue_bitset
<2>()
260 , test::_rr2
= boost::parameter::aux::as_lvalue(
261 test::rvalue_bitset
<2>()
264 #endif // (10 < BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY)
265 #endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING
266 return boost::report_errors();