1 ///////////////////////////////////////////////////////////////////////////////
3 /// Contains definition of the make<> transform.
5 // Copyright 2008 Eric Niebler. Distributed under the Boost
6 // Software License, Version 1.0. (See accompanying file
7 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
11 struct is_applyable<R()>
15 struct is_applyable<R(*)()>
18 template<typename T, typename A>
19 struct construct_<proto::expr<T, A, 0>, true>
21 typedef proto::expr<T, A, 0> result_type;
24 result_type operator ()(A0 &a0) const
26 return result_type::make(a0);
29 template<typename T, typename A>
30 struct construct_<proto::basic_expr<T, A, 0>, true>
32 typedef proto::basic_expr<T, A, 0> result_type;
35 result_type operator ()(A0 &a0) const
37 return result_type::make(a0);
40 template<typename Type >
44 return construct_<Type>()();
51 template<typename Object >
53 : transform<make<Object()> >
55 template<typename Expr, typename State, typename Data>
56 struct impl : transform_impl<Expr, State, Data>
59 typedef typename detail::make_if_<Object, Expr, State, Data>::type result_type;
68 result_type operator ()(
69 typename impl::expr_param e
70 , typename impl::state_param s
71 , typename impl::data_param d
74 proto::detail::ignore_unused(e);
75 proto::detail::ignore_unused(s);
76 proto::detail::ignore_unused(d);
77 return detail::construct<result_type>();
84 template<typename> class R
86 , typename Expr, typename State, typename Data
91 BOOST_PROTO_TEMPLATE_ARITY_PARAM(1)
94 R<typename make_if_<A0, Expr, State, Data> ::type>
95 , (make_if_<A0, Expr, State, Data> ::applied || false)
99 template<typename> class R
101 , typename Expr, typename State, typename Data
106 BOOST_PROTO_TEMPLATE_ARITY_PARAM(1)
109 typedef R<typename make_if_<A0, Expr, State, Data> ::type> type;
110 static bool const applied = true;
112 template<typename R , typename A0>
113 struct is_applyable<R(A0)>
116 template<typename R , typename A0>
117 struct is_applyable<R(*)(A0)>
120 template<typename T, typename A>
121 struct construct_<proto::expr<T, A, 1>, true>
123 typedef proto::expr<T, A, 1> result_type;
124 template<typename A0>
126 result_type operator ()(A0 &a0) const
128 return result_type::make(a0);
131 template<typename T, typename A>
132 struct construct_<proto::basic_expr<T, A, 1>, true>
134 typedef proto::basic_expr<T, A, 1> result_type;
135 template<typename A0>
137 result_type operator ()(A0 &a0) const
139 return result_type::make(a0);
142 template<typename Type , typename A0>
144 Type construct(A0 &a0)
146 return construct_<Type>()(a0);
153 template<typename Object , typename A0>
154 struct make<Object(A0)>
155 : transform<make<Object(A0)> >
157 template<typename Expr, typename State, typename Data>
158 struct impl : transform_impl<Expr, State, Data>
161 typedef typename detail::make_if_<Object, Expr, State, Data>::type result_type;
170 result_type operator ()(
171 typename impl::expr_param e
172 , typename impl::state_param s
173 , typename impl::data_param d
176 proto::detail::ignore_unused(e);
177 proto::detail::ignore_unused(s);
178 proto::detail::ignore_unused(d);
179 return detail::construct<result_type>(detail::as_lvalue( typename when<_, A0>::template impl<Expr, State, Data>()(e, s, d) ));
187 template<typename Object , typename A0>
188 struct make<Object(A0...)>
189 : transform<make<Object(A0...)> >
191 template<typename Expr, typename State, typename Data>
194 typename detail::expand_pattern<
195 proto::arity_of<Expr>::value
197 , detail::expand_pattern_rest_0<
202 >::template impl<Expr, State, Data>
208 template<typename , typename> class R
209 , typename A0 , typename A1
210 , typename Expr, typename State, typename Data
215 BOOST_PROTO_TEMPLATE_ARITY_PARAM(2)
218 R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type>
219 , (make_if_<A0, Expr, State, Data> ::applied || make_if_<A1, Expr, State, Data> ::applied || false)
223 template<typename , typename> class R
224 , typename A0 , typename A1
225 , typename Expr, typename State, typename Data
228 noinvoke<R<A0 , A1> >
230 BOOST_PROTO_TEMPLATE_ARITY_PARAM(1)
233 typedef R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type> type;
234 static bool const applied = true;
236 template<typename R , typename A0 , typename A1>
237 struct is_applyable<R(A0 , A1)>
240 template<typename R , typename A0 , typename A1>
241 struct is_applyable<R(*)(A0 , A1)>
244 template<typename T, typename A>
245 struct construct_<proto::expr<T, A, 2>, true>
247 typedef proto::expr<T, A, 2> result_type;
248 template<typename A0 , typename A1>
250 result_type operator ()(A0 &a0 , A1 &a1) const
252 return result_type::make(a0 , a1);
255 template<typename T, typename A>
256 struct construct_<proto::basic_expr<T, A, 2>, true>
258 typedef proto::basic_expr<T, A, 2> result_type;
259 template<typename A0 , typename A1>
261 result_type operator ()(A0 &a0 , A1 &a1) const
263 return result_type::make(a0 , a1);
266 template<typename Type , typename A0 , typename A1>
268 Type construct(A0 &a0 , A1 &a1)
270 return construct_<Type>()(a0 , a1);
277 template<typename Object , typename A0 , typename A1>
278 struct make<Object(A0 , A1)>
279 : transform<make<Object(A0 , A1)> >
281 template<typename Expr, typename State, typename Data>
282 struct impl : transform_impl<Expr, State, Data>
285 typedef typename detail::make_if_<Object, Expr, State, Data>::type result_type;
294 result_type operator ()(
295 typename impl::expr_param e
296 , typename impl::state_param s
297 , typename impl::data_param d
300 proto::detail::ignore_unused(e);
301 proto::detail::ignore_unused(s);
302 proto::detail::ignore_unused(d);
303 return detail::construct<result_type>(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) ));
311 template<typename Object , typename A0 , typename A1>
312 struct make<Object(A0 , A1...)>
313 : transform<make<Object(A0 , A1...)> >
315 template<typename Expr, typename State, typename Data>
318 typename detail::expand_pattern<
319 proto::arity_of<Expr>::value
321 , detail::expand_pattern_rest_1<
326 >::template impl<Expr, State, Data>
332 template<typename , typename , typename> class R
333 , typename A0 , typename A1 , typename A2
334 , typename Expr, typename State, typename Data
339 BOOST_PROTO_TEMPLATE_ARITY_PARAM(3)
342 R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type>
343 , (make_if_<A0, Expr, State, Data> ::applied || make_if_<A1, Expr, State, Data> ::applied || make_if_<A2, Expr, State, Data> ::applied || false)
347 template<typename , typename , typename> class R
348 , typename A0 , typename A1 , typename A2
349 , typename Expr, typename State, typename Data
352 noinvoke<R<A0 , A1 , A2> >
354 BOOST_PROTO_TEMPLATE_ARITY_PARAM(1)
357 typedef R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type> type;
358 static bool const applied = true;
360 template<typename R , typename A0 , typename A1 , typename A2>
361 struct is_applyable<R(A0 , A1 , A2)>
364 template<typename R , typename A0 , typename A1 , typename A2>
365 struct is_applyable<R(*)(A0 , A1 , A2)>
368 template<typename T, typename A>
369 struct construct_<proto::expr<T, A, 3>, true>
371 typedef proto::expr<T, A, 3> result_type;
372 template<typename A0 , typename A1 , typename A2>
374 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2) const
376 return result_type::make(a0 , a1 , a2);
379 template<typename T, typename A>
380 struct construct_<proto::basic_expr<T, A, 3>, true>
382 typedef proto::basic_expr<T, A, 3> result_type;
383 template<typename A0 , typename A1 , typename A2>
385 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2) const
387 return result_type::make(a0 , a1 , a2);
390 template<typename Type , typename A0 , typename A1 , typename A2>
392 Type construct(A0 &a0 , A1 &a1 , A2 &a2)
394 return construct_<Type>()(a0 , a1 , a2);
401 template<typename Object , typename A0 , typename A1 , typename A2>
402 struct make<Object(A0 , A1 , A2)>
403 : transform<make<Object(A0 , A1 , A2)> >
405 template<typename Expr, typename State, typename Data>
406 struct impl : transform_impl<Expr, State, Data>
409 typedef typename detail::make_if_<Object, Expr, State, Data>::type result_type;
418 result_type operator ()(
419 typename impl::expr_param e
420 , typename impl::state_param s
421 , typename impl::data_param d
424 proto::detail::ignore_unused(e);
425 proto::detail::ignore_unused(s);
426 proto::detail::ignore_unused(d);
427 return detail::construct<result_type>(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) ));
435 template<typename Object , typename A0 , typename A1 , typename A2>
436 struct make<Object(A0 , A1 , A2...)>
437 : transform<make<Object(A0 , A1 , A2...)> >
439 template<typename Expr, typename State, typename Data>
442 typename detail::expand_pattern<
443 proto::arity_of<Expr>::value
445 , detail::expand_pattern_rest_2<
450 >::template impl<Expr, State, Data>
456 template<typename , typename , typename , typename> class R
457 , typename A0 , typename A1 , typename A2 , typename A3
458 , typename Expr, typename State, typename Data
463 BOOST_PROTO_TEMPLATE_ARITY_PARAM(4)
466 R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type , typename make_if_<A3, Expr, State, Data> ::type>
467 , (make_if_<A0, Expr, State, Data> ::applied || make_if_<A1, Expr, State, Data> ::applied || make_if_<A2, Expr, State, Data> ::applied || make_if_<A3, Expr, State, Data> ::applied || false)
471 template<typename , typename , typename , typename> class R
472 , typename A0 , typename A1 , typename A2 , typename A3
473 , typename Expr, typename State, typename Data
476 noinvoke<R<A0 , A1 , A2 , A3> >
478 BOOST_PROTO_TEMPLATE_ARITY_PARAM(1)
481 typedef R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type , typename make_if_<A3, Expr, State, Data> ::type> type;
482 static bool const applied = true;
484 template<typename R , typename A0 , typename A1 , typename A2 , typename A3>
485 struct is_applyable<R(A0 , A1 , A2 , A3)>
488 template<typename R , typename A0 , typename A1 , typename A2 , typename A3>
489 struct is_applyable<R(*)(A0 , A1 , A2 , A3)>
492 template<typename T, typename A>
493 struct construct_<proto::expr<T, A, 4>, true>
495 typedef proto::expr<T, A, 4> result_type;
496 template<typename A0 , typename A1 , typename A2 , typename A3>
498 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3) const
500 return result_type::make(a0 , a1 , a2 , a3);
503 template<typename T, typename A>
504 struct construct_<proto::basic_expr<T, A, 4>, true>
506 typedef proto::basic_expr<T, A, 4> result_type;
507 template<typename A0 , typename A1 , typename A2 , typename A3>
509 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3) const
511 return result_type::make(a0 , a1 , a2 , a3);
514 template<typename Type , typename A0 , typename A1 , typename A2 , typename A3>
516 Type construct(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3)
518 return construct_<Type>()(a0 , a1 , a2 , a3);
525 template<typename Object , typename A0 , typename A1 , typename A2 , typename A3>
526 struct make<Object(A0 , A1 , A2 , A3)>
527 : transform<make<Object(A0 , A1 , A2 , A3)> >
529 template<typename Expr, typename State, typename Data>
530 struct impl : transform_impl<Expr, State, Data>
533 typedef typename detail::make_if_<Object, Expr, State, Data>::type result_type;
542 result_type operator ()(
543 typename impl::expr_param e
544 , typename impl::state_param s
545 , typename impl::data_param d
548 proto::detail::ignore_unused(e);
549 proto::detail::ignore_unused(s);
550 proto::detail::ignore_unused(d);
551 return detail::construct<result_type>(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) ));
559 template<typename Object , typename A0 , typename A1 , typename A2 , typename A3>
560 struct make<Object(A0 , A1 , A2 , A3...)>
561 : transform<make<Object(A0 , A1 , A2 , A3...)> >
563 template<typename Expr, typename State, typename Data>
566 typename detail::expand_pattern<
567 proto::arity_of<Expr>::value
569 , detail::expand_pattern_rest_3<
574 >::template impl<Expr, State, Data>
580 template<typename , typename , typename , typename , typename> class R
581 , typename A0 , typename A1 , typename A2 , typename A3 , typename A4
582 , typename Expr, typename State, typename Data
585 R<A0 , A1 , A2 , A3 , A4>
587 BOOST_PROTO_TEMPLATE_ARITY_PARAM(5)
590 R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type , typename make_if_<A3, Expr, State, Data> ::type , typename make_if_<A4, Expr, State, Data> ::type>
591 , (make_if_<A0, Expr, State, Data> ::applied || make_if_<A1, Expr, State, Data> ::applied || make_if_<A2, Expr, State, Data> ::applied || make_if_<A3, Expr, State, Data> ::applied || make_if_<A4, Expr, State, Data> ::applied || false)
595 template<typename , typename , typename , typename , typename> class R
596 , typename A0 , typename A1 , typename A2 , typename A3 , typename A4
597 , typename Expr, typename State, typename Data
600 noinvoke<R<A0 , A1 , A2 , A3 , A4> >
602 BOOST_PROTO_TEMPLATE_ARITY_PARAM(1)
605 typedef R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type , typename make_if_<A3, Expr, State, Data> ::type , typename make_if_<A4, Expr, State, Data> ::type> type;
606 static bool const applied = true;
608 template<typename R , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
609 struct is_applyable<R(A0 , A1 , A2 , A3 , A4)>
612 template<typename R , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
613 struct is_applyable<R(*)(A0 , A1 , A2 , A3 , A4)>
616 template<typename T, typename A>
617 struct construct_<proto::expr<T, A, 5>, true>
619 typedef proto::expr<T, A, 5> result_type;
620 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
622 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4) const
624 return result_type::make(a0 , a1 , a2 , a3 , a4);
627 template<typename T, typename A>
628 struct construct_<proto::basic_expr<T, A, 5>, true>
630 typedef proto::basic_expr<T, A, 5> result_type;
631 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
633 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4) const
635 return result_type::make(a0 , a1 , a2 , a3 , a4);
638 template<typename Type , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
640 Type construct(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4)
642 return construct_<Type>()(a0 , a1 , a2 , a3 , a4);
649 template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
650 struct make<Object(A0 , A1 , A2 , A3 , A4)>
651 : transform<make<Object(A0 , A1 , A2 , A3 , A4)> >
653 template<typename Expr, typename State, typename Data>
654 struct impl : transform_impl<Expr, State, Data>
657 typedef typename detail::make_if_<Object, Expr, State, Data>::type result_type;
666 result_type operator ()(
667 typename impl::expr_param e
668 , typename impl::state_param s
669 , typename impl::data_param d
672 proto::detail::ignore_unused(e);
673 proto::detail::ignore_unused(s);
674 proto::detail::ignore_unused(d);
675 return detail::construct<result_type>(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) ));
683 template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
684 struct make<Object(A0 , A1 , A2 , A3 , A4...)>
685 : transform<make<Object(A0 , A1 , A2 , A3 , A4...)> >
687 template<typename Expr, typename State, typename Data>
690 typename detail::expand_pattern<
691 proto::arity_of<Expr>::value
693 , detail::expand_pattern_rest_4<
698 >::template impl<Expr, State, Data>
704 template<typename , typename , typename , typename , typename , typename> class R
705 , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5
706 , typename Expr, typename State, typename Data
709 R<A0 , A1 , A2 , A3 , A4 , A5>
711 BOOST_PROTO_TEMPLATE_ARITY_PARAM(6)
714 R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type , typename make_if_<A3, Expr, State, Data> ::type , typename make_if_<A4, Expr, State, Data> ::type , typename make_if_<A5, Expr, State, Data> ::type>
715 , (make_if_<A0, Expr, State, Data> ::applied || make_if_<A1, Expr, State, Data> ::applied || make_if_<A2, Expr, State, Data> ::applied || make_if_<A3, Expr, State, Data> ::applied || make_if_<A4, Expr, State, Data> ::applied || make_if_<A5, Expr, State, Data> ::applied || false)
719 template<typename , typename , typename , typename , typename , typename> class R
720 , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5
721 , typename Expr, typename State, typename Data
724 noinvoke<R<A0 , A1 , A2 , A3 , A4 , A5> >
726 BOOST_PROTO_TEMPLATE_ARITY_PARAM(1)
729 typedef R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type , typename make_if_<A3, Expr, State, Data> ::type , typename make_if_<A4, Expr, State, Data> ::type , typename make_if_<A5, Expr, State, Data> ::type> type;
730 static bool const applied = true;
732 template<typename R , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
733 struct is_applyable<R(A0 , A1 , A2 , A3 , A4 , A5)>
736 template<typename R , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
737 struct is_applyable<R(*)(A0 , A1 , A2 , A3 , A4 , A5)>
740 template<typename T, typename A>
741 struct construct_<proto::expr<T, A, 6>, true>
743 typedef proto::expr<T, A, 6> result_type;
744 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
746 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5) const
748 return result_type::make(a0 , a1 , a2 , a3 , a4 , a5);
751 template<typename T, typename A>
752 struct construct_<proto::basic_expr<T, A, 6>, true>
754 typedef proto::basic_expr<T, A, 6> result_type;
755 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
757 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5) const
759 return result_type::make(a0 , a1 , a2 , a3 , a4 , a5);
762 template<typename Type , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
764 Type construct(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5)
766 return construct_<Type>()(a0 , a1 , a2 , a3 , a4 , a5);
773 template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
774 struct make<Object(A0 , A1 , A2 , A3 , A4 , A5)>
775 : transform<make<Object(A0 , A1 , A2 , A3 , A4 , A5)> >
777 template<typename Expr, typename State, typename Data>
778 struct impl : transform_impl<Expr, State, Data>
781 typedef typename detail::make_if_<Object, Expr, State, Data>::type result_type;
790 result_type operator ()(
791 typename impl::expr_param e
792 , typename impl::state_param s
793 , typename impl::data_param d
796 proto::detail::ignore_unused(e);
797 proto::detail::ignore_unused(s);
798 proto::detail::ignore_unused(d);
799 return detail::construct<result_type>(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) ));
807 template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
808 struct make<Object(A0 , A1 , A2 , A3 , A4 , A5...)>
809 : transform<make<Object(A0 , A1 , A2 , A3 , A4 , A5...)> >
811 template<typename Expr, typename State, typename Data>
814 typename detail::expand_pattern<
815 proto::arity_of<Expr>::value
817 , detail::expand_pattern_rest_5<
819 , A0 , A1 , A2 , A3 , A4
822 >::template impl<Expr, State, Data>
828 template<typename , typename , typename , typename , typename , typename , typename> class R
829 , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6
830 , typename Expr, typename State, typename Data
833 R<A0 , A1 , A2 , A3 , A4 , A5 , A6>
835 BOOST_PROTO_TEMPLATE_ARITY_PARAM(7)
838 R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type , typename make_if_<A3, Expr, State, Data> ::type , typename make_if_<A4, Expr, State, Data> ::type , typename make_if_<A5, Expr, State, Data> ::type , typename make_if_<A6, Expr, State, Data> ::type>
839 , (make_if_<A0, Expr, State, Data> ::applied || make_if_<A1, Expr, State, Data> ::applied || make_if_<A2, Expr, State, Data> ::applied || make_if_<A3, Expr, State, Data> ::applied || make_if_<A4, Expr, State, Data> ::applied || make_if_<A5, Expr, State, Data> ::applied || make_if_<A6, Expr, State, Data> ::applied || false)
843 template<typename , typename , typename , typename , typename , typename , typename> class R
844 , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6
845 , typename Expr, typename State, typename Data
848 noinvoke<R<A0 , A1 , A2 , A3 , A4 , A5 , A6> >
850 BOOST_PROTO_TEMPLATE_ARITY_PARAM(1)
853 typedef R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type , typename make_if_<A3, Expr, State, Data> ::type , typename make_if_<A4, Expr, State, Data> ::type , typename make_if_<A5, Expr, State, Data> ::type , typename make_if_<A6, Expr, State, Data> ::type> type;
854 static bool const applied = true;
856 template<typename R , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
857 struct is_applyable<R(A0 , A1 , A2 , A3 , A4 , A5 , A6)>
860 template<typename R , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
861 struct is_applyable<R(*)(A0 , A1 , A2 , A3 , A4 , A5 , A6)>
864 template<typename T, typename A>
865 struct construct_<proto::expr<T, A, 7>, true>
867 typedef proto::expr<T, A, 7> result_type;
868 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
870 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5 , A6 &a6) const
872 return result_type::make(a0 , a1 , a2 , a3 , a4 , a5 , a6);
875 template<typename T, typename A>
876 struct construct_<proto::basic_expr<T, A, 7>, true>
878 typedef proto::basic_expr<T, A, 7> result_type;
879 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
881 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5 , A6 &a6) const
883 return result_type::make(a0 , a1 , a2 , a3 , a4 , a5 , a6);
886 template<typename Type , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
888 Type construct(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5 , A6 &a6)
890 return construct_<Type>()(a0 , a1 , a2 , a3 , a4 , a5 , a6);
897 template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
898 struct make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6)>
899 : transform<make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6)> >
901 template<typename Expr, typename State, typename Data>
902 struct impl : transform_impl<Expr, State, Data>
905 typedef typename detail::make_if_<Object, Expr, State, Data>::type result_type;
914 result_type operator ()(
915 typename impl::expr_param e
916 , typename impl::state_param s
917 , typename impl::data_param d
920 proto::detail::ignore_unused(e);
921 proto::detail::ignore_unused(s);
922 proto::detail::ignore_unused(d);
923 return detail::construct<result_type>(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) ));
931 template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
932 struct make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6...)>
933 : transform<make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6...)> >
935 template<typename Expr, typename State, typename Data>
938 typename detail::expand_pattern<
939 proto::arity_of<Expr>::value
941 , detail::expand_pattern_rest_6<
943 , A0 , A1 , A2 , A3 , A4 , A5
946 >::template impl<Expr, State, Data>
952 template<typename , typename , typename , typename , typename , typename , typename , typename> class R
953 , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7
954 , typename Expr, typename State, typename Data
957 R<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
959 BOOST_PROTO_TEMPLATE_ARITY_PARAM(8)
962 R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type , typename make_if_<A3, Expr, State, Data> ::type , typename make_if_<A4, Expr, State, Data> ::type , typename make_if_<A5, Expr, State, Data> ::type , typename make_if_<A6, Expr, State, Data> ::type , typename make_if_<A7, Expr, State, Data> ::type>
963 , (make_if_<A0, Expr, State, Data> ::applied || make_if_<A1, Expr, State, Data> ::applied || make_if_<A2, Expr, State, Data> ::applied || make_if_<A3, Expr, State, Data> ::applied || make_if_<A4, Expr, State, Data> ::applied || make_if_<A5, Expr, State, Data> ::applied || make_if_<A6, Expr, State, Data> ::applied || make_if_<A7, Expr, State, Data> ::applied || false)
967 template<typename , typename , typename , typename , typename , typename , typename , typename> class R
968 , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7
969 , typename Expr, typename State, typename Data
972 noinvoke<R<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> >
974 BOOST_PROTO_TEMPLATE_ARITY_PARAM(1)
977 typedef R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type , typename make_if_<A3, Expr, State, Data> ::type , typename make_if_<A4, Expr, State, Data> ::type , typename make_if_<A5, Expr, State, Data> ::type , typename make_if_<A6, Expr, State, Data> ::type , typename make_if_<A7, Expr, State, Data> ::type> type;
978 static bool const applied = true;
980 template<typename R , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
981 struct is_applyable<R(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
984 template<typename R , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
985 struct is_applyable<R(*)(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
988 template<typename T, typename A>
989 struct construct_<proto::expr<T, A, 8>, true>
991 typedef proto::expr<T, A, 8> result_type;
992 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
994 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5 , A6 &a6 , A7 &a7) const
996 return result_type::make(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
999 template<typename T, typename A>
1000 struct construct_<proto::basic_expr<T, A, 8>, true>
1002 typedef proto::basic_expr<T, A, 8> result_type;
1003 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
1005 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5 , A6 &a6 , A7 &a7) const
1007 return result_type::make(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
1010 template<typename Type , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
1012 Type construct(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5 , A6 &a6 , A7 &a7)
1014 return construct_<Type>()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
1021 template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
1022 struct make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
1023 : transform<make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)> >
1025 template<typename Expr, typename State, typename Data>
1026 struct impl : transform_impl<Expr, State, Data>
1029 typedef typename detail::make_if_<Object, Expr, State, Data>::type result_type;
1038 result_type operator ()(
1039 typename impl::expr_param e
1040 , typename impl::state_param s
1041 , typename impl::data_param d
1044 proto::detail::ignore_unused(e);
1045 proto::detail::ignore_unused(s);
1046 proto::detail::ignore_unused(d);
1047 return detail::construct<result_type>(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) ));
1055 template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
1056 struct make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7...)>
1057 : transform<make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7...)> >
1059 template<typename Expr, typename State, typename Data>
1062 typename detail::expand_pattern<
1063 proto::arity_of<Expr>::value
1065 , detail::expand_pattern_rest_7<
1067 , A0 , A1 , A2 , A3 , A4 , A5 , A6
1070 >::template impl<Expr, State, Data>
1076 template<typename , typename , typename , typename , typename , typename , typename , typename , typename> class R
1077 , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8
1078 , typename Expr, typename State, typename Data
1081 R<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
1083 BOOST_PROTO_TEMPLATE_ARITY_PARAM(9)
1086 R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type , typename make_if_<A3, Expr, State, Data> ::type , typename make_if_<A4, Expr, State, Data> ::type , typename make_if_<A5, Expr, State, Data> ::type , typename make_if_<A6, Expr, State, Data> ::type , typename make_if_<A7, Expr, State, Data> ::type , typename make_if_<A8, Expr, State, Data> ::type>
1087 , (make_if_<A0, Expr, State, Data> ::applied || make_if_<A1, Expr, State, Data> ::applied || make_if_<A2, Expr, State, Data> ::applied || make_if_<A3, Expr, State, Data> ::applied || make_if_<A4, Expr, State, Data> ::applied || make_if_<A5, Expr, State, Data> ::applied || make_if_<A6, Expr, State, Data> ::applied || make_if_<A7, Expr, State, Data> ::applied || make_if_<A8, Expr, State, Data> ::applied || false)
1091 template<typename , typename , typename , typename , typename , typename , typename , typename , typename> class R
1092 , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8
1093 , typename Expr, typename State, typename Data
1096 noinvoke<R<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> >
1098 BOOST_PROTO_TEMPLATE_ARITY_PARAM(1)
1101 typedef R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type , typename make_if_<A3, Expr, State, Data> ::type , typename make_if_<A4, Expr, State, Data> ::type , typename make_if_<A5, Expr, State, Data> ::type , typename make_if_<A6, Expr, State, Data> ::type , typename make_if_<A7, Expr, State, Data> ::type , typename make_if_<A8, Expr, State, Data> ::type> type;
1102 static bool const applied = true;
1104 template<typename R , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
1105 struct is_applyable<R(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
1108 template<typename R , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
1109 struct is_applyable<R(*)(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
1112 template<typename T, typename A>
1113 struct construct_<proto::expr<T, A, 9>, true>
1115 typedef proto::expr<T, A, 9> result_type;
1116 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
1118 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5 , A6 &a6 , A7 &a7 , A8 &a8) const
1120 return result_type::make(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
1123 template<typename T, typename A>
1124 struct construct_<proto::basic_expr<T, A, 9>, true>
1126 typedef proto::basic_expr<T, A, 9> result_type;
1127 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
1129 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5 , A6 &a6 , A7 &a7 , A8 &a8) const
1131 return result_type::make(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
1134 template<typename Type , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
1136 Type construct(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5 , A6 &a6 , A7 &a7 , A8 &a8)
1138 return construct_<Type>()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
1145 template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
1146 struct make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
1147 : transform<make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)> >
1149 template<typename Expr, typename State, typename Data>
1150 struct impl : transform_impl<Expr, State, Data>
1153 typedef typename detail::make_if_<Object, Expr, State, Data>::type result_type;
1162 result_type operator ()(
1163 typename impl::expr_param e
1164 , typename impl::state_param s
1165 , typename impl::data_param d
1168 proto::detail::ignore_unused(e);
1169 proto::detail::ignore_unused(s);
1170 proto::detail::ignore_unused(d);
1171 return detail::construct<result_type>(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) ));
1179 template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
1180 struct make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8...)>
1181 : transform<make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8...)> >
1183 template<typename Expr, typename State, typename Data>
1186 typename detail::expand_pattern<
1187 proto::arity_of<Expr>::value
1189 , detail::expand_pattern_rest_8<
1191 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
1194 >::template impl<Expr, State, Data>
1200 template<typename , typename , typename , typename , typename , typename , typename , typename , typename , typename> class R
1201 , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9
1202 , typename Expr, typename State, typename Data
1205 R<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
1207 BOOST_PROTO_TEMPLATE_ARITY_PARAM(10)
1210 R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type , typename make_if_<A3, Expr, State, Data> ::type , typename make_if_<A4, Expr, State, Data> ::type , typename make_if_<A5, Expr, State, Data> ::type , typename make_if_<A6, Expr, State, Data> ::type , typename make_if_<A7, Expr, State, Data> ::type , typename make_if_<A8, Expr, State, Data> ::type , typename make_if_<A9, Expr, State, Data> ::type>
1211 , (make_if_<A0, Expr, State, Data> ::applied || make_if_<A1, Expr, State, Data> ::applied || make_if_<A2, Expr, State, Data> ::applied || make_if_<A3, Expr, State, Data> ::applied || make_if_<A4, Expr, State, Data> ::applied || make_if_<A5, Expr, State, Data> ::applied || make_if_<A6, Expr, State, Data> ::applied || make_if_<A7, Expr, State, Data> ::applied || make_if_<A8, Expr, State, Data> ::applied || make_if_<A9, Expr, State, Data> ::applied || false)
1215 template<typename , typename , typename , typename , typename , typename , typename , typename , typename , typename> class R
1216 , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9
1217 , typename Expr, typename State, typename Data
1220 noinvoke<R<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> >
1222 BOOST_PROTO_TEMPLATE_ARITY_PARAM(1)
1225 typedef R<typename make_if_<A0, Expr, State, Data> ::type , typename make_if_<A1, Expr, State, Data> ::type , typename make_if_<A2, Expr, State, Data> ::type , typename make_if_<A3, Expr, State, Data> ::type , typename make_if_<A4, Expr, State, Data> ::type , typename make_if_<A5, Expr, State, Data> ::type , typename make_if_<A6, Expr, State, Data> ::type , typename make_if_<A7, Expr, State, Data> ::type , typename make_if_<A8, Expr, State, Data> ::type , typename make_if_<A9, Expr, State, Data> ::type> type;
1226 static bool const applied = true;
1228 template<typename R , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
1229 struct is_applyable<R(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
1232 template<typename R , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
1233 struct is_applyable<R(*)(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
1236 template<typename T, typename A>
1237 struct construct_<proto::expr<T, A, 10>, true>
1239 typedef proto::expr<T, A, 10> result_type;
1240 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
1242 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5 , A6 &a6 , A7 &a7 , A8 &a8 , A9 &a9) const
1244 return result_type::make(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
1247 template<typename T, typename A>
1248 struct construct_<proto::basic_expr<T, A, 10>, true>
1250 typedef proto::basic_expr<T, A, 10> result_type;
1251 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
1253 result_type operator ()(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5 , A6 &a6 , A7 &a7 , A8 &a8 , A9 &a9) const
1255 return result_type::make(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
1258 template<typename Type , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
1260 Type construct(A0 &a0 , A1 &a1 , A2 &a2 , A3 &a3 , A4 &a4 , A5 &a5 , A6 &a6 , A7 &a7 , A8 &a8 , A9 &a9)
1262 return construct_<Type>()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
1269 template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
1270 struct make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
1271 : transform<make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)> >
1273 template<typename Expr, typename State, typename Data>
1274 struct impl : transform_impl<Expr, State, Data>
1277 typedef typename detail::make_if_<Object, Expr, State, Data>::type result_type;
1286 result_type operator ()(
1287 typename impl::expr_param e
1288 , typename impl::state_param s
1289 , typename impl::data_param d
1292 proto::detail::ignore_unused(e);
1293 proto::detail::ignore_unused(s);
1294 proto::detail::ignore_unused(d);
1295 return detail::construct<result_type>(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) ));
1303 template<typename Object , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
1304 struct make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9...)>
1305 : transform<make<Object(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9...)> >
1307 template<typename Expr, typename State, typename Data>
1310 typename detail::expand_pattern<
1311 proto::arity_of<Expr>::value
1313 , detail::expand_pattern_rest_9<
1315 , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
1318 >::template impl<Expr, State, Data>