]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/proto/include/boost/proto/transform/detail/preprocessed/make_gcc_workaround.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / proto / include / boost / proto / transform / detail / preprocessed / make_gcc_workaround.hpp
CommitLineData
7c673cae
FG
1 ///////////////////////////////////////////////////////////////////////////////
2 /// \file make_gcc_workaround.hpp
3 /// Special workaround code to make the make\<\> transform work on certain
4 /// versions of gcc.
5 //
6 // Copyright 2008 Eric Niebler. Distributed under the Boost
7 // Software License, Version 1.0. (See accompanying file
8 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
10 template<typename Tag, typename Args, long Arity >
11 struct make<proto::expr<Tag, Args, Arity>()>
12 : transform<make<proto::expr<Tag, Args, Arity>()> >
13 {
14 template<typename Expr, typename State, typename Data>
15 struct impl : transform_impl<Expr, State, Data>
16 {
17 typedef proto::expr<Tag, Args, Arity> result_type;
18 BOOST_FORCEINLINE
19 result_type operator ()(
20 typename impl::expr_param e
21 , typename impl::state_param s
22 , typename impl::data_param d
23 ) const
24 {
25 return proto::expr<Tag, Args, Arity>::make(
26
27 );
28 }
29 };
30 };
31 template<typename Tag, typename Args, long Arity >
32 struct make<proto::basic_expr<Tag, Args, Arity>()>
33 : transform<make<proto::basic_expr<Tag, Args, Arity>()> >
34 {
35 template<typename Expr, typename State, typename Data>
36 struct impl : transform_impl<Expr, State, Data>
37 {
38 typedef proto::basic_expr<Tag, Args, Arity> result_type;
39 BOOST_FORCEINLINE
40 result_type operator ()(
41 typename impl::expr_param e
42 , typename impl::state_param s
43 , typename impl::data_param d
44 ) const
45 {
46 return proto::basic_expr<Tag, Args, Arity>::make(
47
48 );
49 }
50 };
51 };
52
53 template<typename Tag, typename Args, long Arity , typename A0>
54 struct make<proto::expr<Tag, Args, Arity>(A0)>
55 : transform<make<proto::expr<Tag, Args, Arity>(A0)> >
56 {
57 template<typename Expr, typename State, typename Data>
58 struct impl : transform_impl<Expr, State, Data>
59 {
60 typedef proto::expr<Tag, Args, Arity> result_type;
61 BOOST_FORCEINLINE
62 result_type operator ()(
63 typename impl::expr_param e
64 , typename impl::state_param s
65 , typename impl::data_param d
66 ) const
67 {
68 return proto::expr<Tag, Args, Arity>::make(
69 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) )
70 );
71 }
72 };
73 };
74 template<typename Tag, typename Args, long Arity , typename A0>
75 struct make<proto::basic_expr<Tag, Args, Arity>(A0)>
76 : transform<make<proto::basic_expr<Tag, Args, Arity>(A0)> >
77 {
78 template<typename Expr, typename State, typename Data>
79 struct impl : transform_impl<Expr, State, Data>
80 {
81 typedef proto::basic_expr<Tag, Args, Arity> result_type;
82 BOOST_FORCEINLINE
83 result_type operator ()(
84 typename impl::expr_param e
85 , typename impl::state_param s
86 , typename impl::data_param d
87 ) const
88 {
89 return proto::basic_expr<Tag, Args, Arity>::make(
90 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) )
91 );
92 }
93 };
94 };
95
96 template<typename Tag, typename Args, long Arity , typename A0 , typename A1>
97 struct make<proto::expr<Tag, Args, Arity>(A0 , A1)>
98 : transform<make<proto::expr<Tag, Args, Arity>(A0 , A1)> >
99 {
100 template<typename Expr, typename State, typename Data>
101 struct impl : transform_impl<Expr, State, Data>
102 {
103 typedef proto::expr<Tag, Args, Arity> result_type;
104 BOOST_FORCEINLINE
105 result_type operator ()(
106 typename impl::expr_param e
107 , typename impl::state_param s
108 , typename impl::data_param d
109 ) const
110 {
111 return proto::expr<Tag, Args, Arity>::make(
112 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) )
113 );
114 }
115 };
116 };
117 template<typename Tag, typename Args, long Arity , typename A0 , typename A1>
118 struct make<proto::basic_expr<Tag, Args, Arity>(A0 , A1)>
119 : transform<make<proto::basic_expr<Tag, Args, Arity>(A0 , A1)> >
120 {
121 template<typename Expr, typename State, typename Data>
122 struct impl : transform_impl<Expr, State, Data>
123 {
124 typedef proto::basic_expr<Tag, Args, Arity> result_type;
125 BOOST_FORCEINLINE
126 result_type operator ()(
127 typename impl::expr_param e
128 , typename impl::state_param s
129 , typename impl::data_param d
130 ) const
131 {
132 return proto::basic_expr<Tag, Args, Arity>::make(
133 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) )
134 );
135 }
136 };
137 };
138
139 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2>
140 struct make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2)>
141 : transform<make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2)> >
142 {
143 template<typename Expr, typename State, typename Data>
144 struct impl : transform_impl<Expr, State, Data>
145 {
146 typedef proto::expr<Tag, Args, Arity> result_type;
147 BOOST_FORCEINLINE
148 result_type operator ()(
149 typename impl::expr_param e
150 , typename impl::state_param s
151 , typename impl::data_param d
152 ) const
153 {
154 return proto::expr<Tag, Args, Arity>::make(
155 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) )
156 );
157 }
158 };
159 };
160 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2>
161 struct make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2)>
162 : transform<make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2)> >
163 {
164 template<typename Expr, typename State, typename Data>
165 struct impl : transform_impl<Expr, State, Data>
166 {
167 typedef proto::basic_expr<Tag, Args, Arity> result_type;
168 BOOST_FORCEINLINE
169 result_type operator ()(
170 typename impl::expr_param e
171 , typename impl::state_param s
172 , typename impl::data_param d
173 ) const
174 {
175 return proto::basic_expr<Tag, Args, Arity>::make(
176 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) )
177 );
178 }
179 };
180 };
181
182 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2 , typename A3>
183 struct make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2 , A3)>
184 : transform<make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2 , A3)> >
185 {
186 template<typename Expr, typename State, typename Data>
187 struct impl : transform_impl<Expr, State, Data>
188 {
189 typedef proto::expr<Tag, Args, Arity> result_type;
190 BOOST_FORCEINLINE
191 result_type operator ()(
192 typename impl::expr_param e
193 , typename impl::state_param s
194 , typename impl::data_param d
195 ) const
196 {
197 return proto::expr<Tag, Args, Arity>::make(
198 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A3>::template impl<Expr, State, Data>()(e, s, d) )
199 );
200 }
201 };
202 };
203 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2 , typename A3>
204 struct make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2 , A3)>
205 : transform<make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2 , A3)> >
206 {
207 template<typename Expr, typename State, typename Data>
208 struct impl : transform_impl<Expr, State, Data>
209 {
210 typedef proto::basic_expr<Tag, Args, Arity> result_type;
211 BOOST_FORCEINLINE
212 result_type operator ()(
213 typename impl::expr_param e
214 , typename impl::state_param s
215 , typename impl::data_param d
216 ) const
217 {
218 return proto::basic_expr<Tag, Args, Arity>::make(
219 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A3>::template impl<Expr, State, Data>()(e, s, d) )
220 );
221 }
222 };
223 };
224
225 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
226 struct make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4)>
227 : transform<make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4)> >
228 {
229 template<typename Expr, typename State, typename Data>
230 struct impl : transform_impl<Expr, State, Data>
231 {
232 typedef proto::expr<Tag, Args, Arity> result_type;
233 BOOST_FORCEINLINE
234 result_type operator ()(
235 typename impl::expr_param e
236 , typename impl::state_param s
237 , typename impl::data_param d
238 ) const
239 {
240 return proto::expr<Tag, Args, Arity>::make(
241 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A3>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A4>::template impl<Expr, State, Data>()(e, s, d) )
242 );
243 }
244 };
245 };
246 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
247 struct make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4)>
248 : transform<make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4)> >
249 {
250 template<typename Expr, typename State, typename Data>
251 struct impl : transform_impl<Expr, State, Data>
252 {
253 typedef proto::basic_expr<Tag, Args, Arity> result_type;
254 BOOST_FORCEINLINE
255 result_type operator ()(
256 typename impl::expr_param e
257 , typename impl::state_param s
258 , typename impl::data_param d
259 ) const
260 {
261 return proto::basic_expr<Tag, Args, Arity>::make(
262 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A3>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A4>::template impl<Expr, State, Data>()(e, s, d) )
263 );
264 }
265 };
266 };
267
268 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
269 struct make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5)>
270 : transform<make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5)> >
271 {
272 template<typename Expr, typename State, typename Data>
273 struct impl : transform_impl<Expr, State, Data>
274 {
275 typedef proto::expr<Tag, Args, Arity> result_type;
276 BOOST_FORCEINLINE
277 result_type operator ()(
278 typename impl::expr_param e
279 , typename impl::state_param s
280 , typename impl::data_param d
281 ) const
282 {
283 return proto::expr<Tag, Args, Arity>::make(
284 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A3>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A4>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A5>::template impl<Expr, State, Data>()(e, s, d) )
285 );
286 }
287 };
288 };
289 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
290 struct make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5)>
291 : transform<make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5)> >
292 {
293 template<typename Expr, typename State, typename Data>
294 struct impl : transform_impl<Expr, State, Data>
295 {
296 typedef proto::basic_expr<Tag, Args, Arity> result_type;
297 BOOST_FORCEINLINE
298 result_type operator ()(
299 typename impl::expr_param e
300 , typename impl::state_param s
301 , typename impl::data_param d
302 ) const
303 {
304 return proto::basic_expr<Tag, Args, Arity>::make(
305 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A3>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A4>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A5>::template impl<Expr, State, Data>()(e, s, d) )
306 );
307 }
308 };
309 };
310
311 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
312 struct make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6)>
313 : transform<make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6)> >
314 {
315 template<typename Expr, typename State, typename Data>
316 struct impl : transform_impl<Expr, State, Data>
317 {
318 typedef proto::expr<Tag, Args, Arity> result_type;
319 BOOST_FORCEINLINE
320 result_type operator ()(
321 typename impl::expr_param e
322 , typename impl::state_param s
323 , typename impl::data_param d
324 ) const
325 {
326 return proto::expr<Tag, Args, Arity>::make(
327 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A3>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A4>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A5>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A6>::template impl<Expr, State, Data>()(e, s, d) )
328 );
329 }
330 };
331 };
332 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
333 struct make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6)>
334 : transform<make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6)> >
335 {
336 template<typename Expr, typename State, typename Data>
337 struct impl : transform_impl<Expr, State, Data>
338 {
339 typedef proto::basic_expr<Tag, Args, Arity> result_type;
340 BOOST_FORCEINLINE
341 result_type operator ()(
342 typename impl::expr_param e
343 , typename impl::state_param s
344 , typename impl::data_param d
345 ) const
346 {
347 return proto::basic_expr<Tag, Args, Arity>::make(
348 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A3>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A4>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A5>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A6>::template impl<Expr, State, Data>()(e, s, d) )
349 );
350 }
351 };
352 };
353
354 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
355 struct make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
356 : transform<make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)> >
357 {
358 template<typename Expr, typename State, typename Data>
359 struct impl : transform_impl<Expr, State, Data>
360 {
361 typedef proto::expr<Tag, Args, Arity> result_type;
362 BOOST_FORCEINLINE
363 result_type operator ()(
364 typename impl::expr_param e
365 , typename impl::state_param s
366 , typename impl::data_param d
367 ) const
368 {
369 return proto::expr<Tag, Args, Arity>::make(
370 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A3>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A4>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A5>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A6>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A7>::template impl<Expr, State, Data>()(e, s, d) )
371 );
372 }
373 };
374 };
375 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
376 struct make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
377 : transform<make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)> >
378 {
379 template<typename Expr, typename State, typename Data>
380 struct impl : transform_impl<Expr, State, Data>
381 {
382 typedef proto::basic_expr<Tag, Args, Arity> result_type;
383 BOOST_FORCEINLINE
384 result_type operator ()(
385 typename impl::expr_param e
386 , typename impl::state_param s
387 , typename impl::data_param d
388 ) const
389 {
390 return proto::basic_expr<Tag, Args, Arity>::make(
391 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A3>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A4>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A5>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A6>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A7>::template impl<Expr, State, Data>()(e, s, d) )
392 );
393 }
394 };
395 };
396
397 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
398 struct make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
399 : transform<make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)> >
400 {
401 template<typename Expr, typename State, typename Data>
402 struct impl : transform_impl<Expr, State, Data>
403 {
404 typedef proto::expr<Tag, Args, Arity> result_type;
405 BOOST_FORCEINLINE
406 result_type operator ()(
407 typename impl::expr_param e
408 , typename impl::state_param s
409 , typename impl::data_param d
410 ) const
411 {
412 return proto::expr<Tag, Args, Arity>::make(
413 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A3>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A4>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A5>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A6>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A7>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A8>::template impl<Expr, State, Data>()(e, s, d) )
414 );
415 }
416 };
417 };
418 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
419 struct make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
420 : transform<make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)> >
421 {
422 template<typename Expr, typename State, typename Data>
423 struct impl : transform_impl<Expr, State, Data>
424 {
425 typedef proto::basic_expr<Tag, Args, Arity> result_type;
426 BOOST_FORCEINLINE
427 result_type operator ()(
428 typename impl::expr_param e
429 , typename impl::state_param s
430 , typename impl::data_param d
431 ) const
432 {
433 return proto::basic_expr<Tag, Args, Arity>::make(
434 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A3>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A4>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A5>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A6>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A7>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A8>::template impl<Expr, State, Data>()(e, s, d) )
435 );
436 }
437 };
438 };
439
440 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
441 struct make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
442 : transform<make<proto::expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)> >
443 {
444 template<typename Expr, typename State, typename Data>
445 struct impl : transform_impl<Expr, State, Data>
446 {
447 typedef proto::expr<Tag, Args, Arity> result_type;
448 BOOST_FORCEINLINE
449 result_type operator ()(
450 typename impl::expr_param e
451 , typename impl::state_param s
452 , typename impl::data_param d
453 ) const
454 {
455 return proto::expr<Tag, Args, Arity>::make(
456 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A3>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A4>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A5>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A6>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A7>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A8>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A9>::template impl<Expr, State, Data>()(e, s, d) )
457 );
458 }
459 };
460 };
461 template<typename Tag, typename Args, long Arity , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
462 struct make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
463 : transform<make<proto::basic_expr<Tag, Args, Arity>(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)> >
464 {
465 template<typename Expr, typename State, typename Data>
466 struct impl : transform_impl<Expr, State, Data>
467 {
468 typedef proto::basic_expr<Tag, Args, Arity> result_type;
469 BOOST_FORCEINLINE
470 result_type operator ()(
471 typename impl::expr_param e
472 , typename impl::state_param s
473 , typename impl::data_param d
474 ) const
475 {
476 return proto::basic_expr<Tag, Args, Arity>::make(
477 detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A1>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A2>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A3>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A4>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A5>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A6>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A7>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A8>::template impl<Expr, State, Data>()(e, s, d) ) , detail::as_lvalue( typename when<_, A9>::template impl<Expr, State, Data>()(e, s, d) )
478 );
479 }
480 };
481 };