1 ///////////////////////////////////////////////////////////////////////////////
3 /// Contains definition of expr\<\> class template.
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)
36 template<typename Tag, typename Arg0>
37 struct expr<Tag, term<Arg0>, 0>
39 typedef Tag proto_tag;
40 static const long proto_arity_c = 0;
41 typedef mpl::long_<0 > proto_arity;
42 typedef expr proto_base_expr;
43 typedef term<Arg0> proto_args;
44 typedef basic_expr<Tag, proto_args, 0 > proto_grammar;
45 typedef default_domain proto_domain;
46 typedef default_generator proto_generator;
47 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
48 typedef expr proto_derived_expr;
49 typedef void proto_is_expr_;
50 typedef Arg0 proto_child0; proto_child0 child0;
51 typedef void proto_child1; typedef void proto_child2; typedef void proto_child3; typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
55 expr const &proto_base() const
71 static expr const make(A0 &a0)
73 return detail::make_terminal(a0, static_cast<expr *>(0), static_cast<proto_args *>(0));
79 static expr const make(A0 const &a0)
81 return detail::make_terminal(a0, static_cast<expr *>(0), static_cast<proto_args *>(0));
85 typedef detail::not_a_valid_type address_of_hack_type_;
93 , list2<expr &, expr const &>
96 operator =(expr const &a)
100 , list2<expr &, expr const &>
113 , list2<expr const &, typename result_of::as_child<A>::type>
116 operator =(A &a) const
120 , list2<expr const &, typename result_of::as_child<A>::type>
122 > that = {*this, proto::as_child(a)};
131 , list2<expr const &, typename result_of::as_child<A const>::type>
134 operator =(A const &a) const
138 , list2<expr const &, typename result_of::as_child<A const>::type>
140 > that = {*this, proto::as_child(a)};
149 , list2<expr &, typename result_of::as_child<A>::type>
156 , list2<expr &, typename result_of::as_child<A>::type>
158 > that = {*this, proto::as_child(a)};
167 , list2<expr &, typename result_of::as_child<A const>::type>
170 operator =(A const &a)
174 , list2<expr &, typename result_of::as_child<A const>::type>
176 > that = {*this, proto::as_child(a)};
186 proto::tag::subscript
187 , list2<expr const &, typename result_of::as_child<A>::type>
190 operator [](A &a) const
193 proto::tag::subscript
194 , list2<expr const &, typename result_of::as_child<A>::type>
196 > that = {*this, proto::as_child(a)};
204 proto::tag::subscript
205 , list2<expr const &, typename result_of::as_child<A const>::type>
208 operator [](A const &a) const
211 proto::tag::subscript
212 , list2<expr const &, typename result_of::as_child<A const>::type>
214 > that = {*this, proto::as_child(a)};
222 proto::tag::subscript
223 , list2<expr &, typename result_of::as_child<A>::type>
229 proto::tag::subscript
230 , list2<expr &, typename result_of::as_child<A>::type>
232 > that = {*this, proto::as_child(a)};
240 proto::tag::subscript
241 , list2<expr &, typename result_of::as_child<A const>::type>
244 operator [](A const &a)
247 proto::tag::subscript
248 , list2<expr &, typename result_of::as_child<A const>::type>
250 > that = {*this, proto::as_child(a)};
255 template<typename Sig>
258 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
264 proto::expr<proto::tag::function, list1<expr const &>, 1> const
267 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
273 proto::expr<proto::tag::function, list1<expr &>, 1> const
276 proto::expr<proto::tag::function, list1<expr &>, 1> that = {*this};
281 template<typename A0>
283 typename result_of::funop1<
285 , default_domain , const A0
287 operator ()(A0 const &a0) const
289 return result_of::funop1<
291 , default_domain , const A0
296 template<typename A0>
298 typename result_of::funop1<
300 , default_domain , const A0
302 operator ()(A0 const &a0)
304 return result_of::funop1<
306 , default_domain , const A0
311 template<typename A0 , typename A1>
313 typename result_of::funop2<
315 , default_domain , const A0 , const A1
317 operator ()(A0 const &a0 , A1 const &a1) const
319 return result_of::funop2<
321 , default_domain , const A0 , const A1
322 >::call(*this , a0 , a1);
326 template<typename A0 , typename A1>
328 typename result_of::funop2<
330 , default_domain , const A0 , const A1
332 operator ()(A0 const &a0 , A1 const &a1)
334 return result_of::funop2<
336 , default_domain , const A0 , const A1
337 >::call(*this , a0 , a1);
341 template<typename A0 , typename A1 , typename A2>
343 typename result_of::funop3<
345 , default_domain , const A0 , const A1 , const A2
347 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
349 return result_of::funop3<
351 , default_domain , const A0 , const A1 , const A2
352 >::call(*this , a0 , a1 , a2);
356 template<typename A0 , typename A1 , typename A2>
358 typename result_of::funop3<
360 , default_domain , const A0 , const A1 , const A2
362 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2)
364 return result_of::funop3<
366 , default_domain , const A0 , const A1 , const A2
367 >::call(*this , a0 , a1 , a2);
371 template<typename A0 , typename A1 , typename A2 , typename A3>
373 typename result_of::funop4<
375 , default_domain , const A0 , const A1 , const A2 , const A3
377 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
379 return result_of::funop4<
381 , default_domain , const A0 , const A1 , const A2 , const A3
382 >::call(*this , a0 , a1 , a2 , a3);
386 template<typename A0 , typename A1 , typename A2 , typename A3>
388 typename result_of::funop4<
390 , default_domain , const A0 , const A1 , const A2 , const A3
392 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3)
394 return result_of::funop4<
396 , default_domain , const A0 , const A1 , const A2 , const A3
397 >::call(*this , a0 , a1 , a2 , a3);
401 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
403 typename result_of::funop5<
405 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
407 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
409 return result_of::funop5<
411 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
412 >::call(*this , a0 , a1 , a2 , a3 , a4);
416 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
418 typename result_of::funop5<
420 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
422 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4)
424 return result_of::funop5<
426 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
427 >::call(*this , a0 , a1 , a2 , a3 , a4);
431 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
433 typename result_of::funop6<
435 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
437 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
439 return result_of::funop6<
441 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
442 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
446 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
448 typename result_of::funop6<
450 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
452 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5)
454 return result_of::funop6<
456 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
457 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
461 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
463 typename result_of::funop7<
465 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
467 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
469 return result_of::funop7<
471 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
472 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6);
476 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
478 typename result_of::funop7<
480 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
482 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6)
484 return result_of::funop7<
486 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
487 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6);
491 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
493 typename result_of::funop8<
495 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
497 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const
499 return result_of::funop8<
501 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
502 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
506 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
508 typename result_of::funop8<
510 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
512 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7)
514 return result_of::funop8<
516 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
517 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
521 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
523 typename result_of::funop9<
525 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
527 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const
529 return result_of::funop9<
531 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
532 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
536 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
538 typename result_of::funop9<
540 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
542 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8)
544 return result_of::funop9<
546 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
547 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
577 template<typename Tag , typename Arg0>
578 struct expr<Tag, list1<Arg0>, 1 >
580 typedef Tag proto_tag;
581 static const long proto_arity_c = 1;
582 typedef mpl::long_<1 > proto_arity;
583 typedef expr proto_base_expr;
584 typedef list1<Arg0> proto_args;
585 typedef basic_expr<Tag, proto_args, 1 > proto_grammar;
586 typedef default_domain proto_domain;
587 typedef default_generator proto_generator;
588 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
589 typedef expr proto_derived_expr;
590 typedef void proto_is_expr_;
591 typedef Arg0 proto_child0; proto_child0 child0;
592 typedef void proto_child1; typedef void proto_child2; typedef void proto_child3; typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
596 expr const &proto_base() const
610 template<typename A0>
612 static expr const make(A0 const &a0)
620 typedef typename detail::address_of_hack<Tag, proto_child0>::type address_of_hack_type_;
629 operator address_of_hack_type_() const
631 return boost::addressof(this->child0);
640 , list2<expr &, expr const &>
643 operator =(expr const &a)
647 , list2<expr &, expr const &>
660 , list2<expr const &, typename result_of::as_child<A>::type>
663 operator =(A &a) const
667 , list2<expr const &, typename result_of::as_child<A>::type>
669 > that = {*this, proto::as_child(a)};
678 , list2<expr const &, typename result_of::as_child<A const>::type>
681 operator =(A const &a) const
685 , list2<expr const &, typename result_of::as_child<A const>::type>
687 > that = {*this, proto::as_child(a)};
697 proto::tag::subscript
698 , list2<expr const &, typename result_of::as_child<A>::type>
701 operator [](A &a) const
704 proto::tag::subscript
705 , list2<expr const &, typename result_of::as_child<A>::type>
707 > that = {*this, proto::as_child(a)};
715 proto::tag::subscript
716 , list2<expr const &, typename result_of::as_child<A const>::type>
719 operator [](A const &a) const
722 proto::tag::subscript
723 , list2<expr const &, typename result_of::as_child<A const>::type>
725 > that = {*this, proto::as_child(a)};
730 template<typename Sig>
733 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
739 proto::expr<proto::tag::function, list1<expr const &>, 1> const
742 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
747 template<typename A0>
749 typename result_of::funop1<
751 , default_domain , const A0
753 operator ()(A0 const &a0) const
755 return result_of::funop1<
757 , default_domain , const A0
762 template<typename A0 , typename A1>
764 typename result_of::funop2<
766 , default_domain , const A0 , const A1
768 operator ()(A0 const &a0 , A1 const &a1) const
770 return result_of::funop2<
772 , default_domain , const A0 , const A1
773 >::call(*this , a0 , a1);
777 template<typename A0 , typename A1 , typename A2>
779 typename result_of::funop3<
781 , default_domain , const A0 , const A1 , const A2
783 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
785 return result_of::funop3<
787 , default_domain , const A0 , const A1 , const A2
788 >::call(*this , a0 , a1 , a2);
792 template<typename A0 , typename A1 , typename A2 , typename A3>
794 typename result_of::funop4<
796 , default_domain , const A0 , const A1 , const A2 , const A3
798 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
800 return result_of::funop4<
802 , default_domain , const A0 , const A1 , const A2 , const A3
803 >::call(*this , a0 , a1 , a2 , a3);
807 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
809 typename result_of::funop5<
811 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
813 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
815 return result_of::funop5<
817 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
818 >::call(*this , a0 , a1 , a2 , a3 , a4);
822 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
824 typename result_of::funop6<
826 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
828 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
830 return result_of::funop6<
832 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
833 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
837 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
839 typename result_of::funop7<
841 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
843 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
845 return result_of::funop7<
847 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
848 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6);
852 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
854 typename result_of::funop8<
856 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
858 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const
860 return result_of::funop8<
862 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
863 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
867 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
869 typename result_of::funop9<
871 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
873 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const
875 return result_of::funop9<
877 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
878 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
908 template<typename Tag , typename Arg0 , typename Arg1>
909 struct expr<Tag, list2<Arg0 , Arg1>, 2 >
911 typedef Tag proto_tag;
912 static const long proto_arity_c = 2;
913 typedef mpl::long_<2 > proto_arity;
914 typedef expr proto_base_expr;
915 typedef list2<Arg0 , Arg1> proto_args;
916 typedef basic_expr<Tag, proto_args, 2 > proto_grammar;
917 typedef default_domain proto_domain;
918 typedef default_generator proto_generator;
919 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
920 typedef expr proto_derived_expr;
921 typedef void proto_is_expr_;
922 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1;
923 typedef void proto_child2; typedef void proto_child3; typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
927 expr const &proto_base() const
941 template<typename A0 , typename A1>
943 static expr const make(A0 const &a0 , A1 const &a1)
945 expr that = {a0 , a1};
950 typedef detail::not_a_valid_type address_of_hack_type_;
958 , list2<expr &, expr const &>
961 operator =(expr const &a)
965 , list2<expr &, expr const &>
978 , list2<expr const &, typename result_of::as_child<A>::type>
981 operator =(A &a) const
985 , list2<expr const &, typename result_of::as_child<A>::type>
987 > that = {*this, proto::as_child(a)};
996 , list2<expr const &, typename result_of::as_child<A const>::type>
999 operator =(A const &a) const
1003 , list2<expr const &, typename result_of::as_child<A const>::type>
1005 > that = {*this, proto::as_child(a)};
1012 template<typename A>
1015 proto::tag::subscript
1016 , list2<expr const &, typename result_of::as_child<A>::type>
1019 operator [](A &a) const
1022 proto::tag::subscript
1023 , list2<expr const &, typename result_of::as_child<A>::type>
1025 > that = {*this, proto::as_child(a)};
1030 template<typename A>
1033 proto::tag::subscript
1034 , list2<expr const &, typename result_of::as_child<A const>::type>
1037 operator [](A const &a) const
1040 proto::tag::subscript
1041 , list2<expr const &, typename result_of::as_child<A const>::type>
1043 > that = {*this, proto::as_child(a)};
1048 template<typename Sig>
1051 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
1057 proto::expr<proto::tag::function, list1<expr const &>, 1> const
1060 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
1065 template<typename A0>
1067 typename result_of::funop1<
1069 , default_domain , const A0
1071 operator ()(A0 const &a0) const
1073 return result_of::funop1<
1075 , default_domain , const A0
1076 >::call(*this , a0);
1080 template<typename A0 , typename A1>
1082 typename result_of::funop2<
1084 , default_domain , const A0 , const A1
1086 operator ()(A0 const &a0 , A1 const &a1) const
1088 return result_of::funop2<
1090 , default_domain , const A0 , const A1
1091 >::call(*this , a0 , a1);
1095 template<typename A0 , typename A1 , typename A2>
1097 typename result_of::funop3<
1099 , default_domain , const A0 , const A1 , const A2
1101 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
1103 return result_of::funop3<
1105 , default_domain , const A0 , const A1 , const A2
1106 >::call(*this , a0 , a1 , a2);
1110 template<typename A0 , typename A1 , typename A2 , typename A3>
1112 typename result_of::funop4<
1114 , default_domain , const A0 , const A1 , const A2 , const A3
1116 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
1118 return result_of::funop4<
1120 , default_domain , const A0 , const A1 , const A2 , const A3
1121 >::call(*this , a0 , a1 , a2 , a3);
1125 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
1127 typename result_of::funop5<
1129 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
1131 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
1133 return result_of::funop5<
1135 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
1136 >::call(*this , a0 , a1 , a2 , a3 , a4);
1140 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
1142 typename result_of::funop6<
1144 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
1146 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
1148 return result_of::funop6<
1150 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
1151 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
1155 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
1157 typename result_of::funop7<
1159 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
1161 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
1163 return result_of::funop7<
1165 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
1166 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6);
1170 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
1172 typename result_of::funop8<
1174 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
1176 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const
1178 return result_of::funop8<
1180 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
1181 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
1185 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
1187 typename result_of::funop9<
1189 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
1191 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const
1193 return result_of::funop9<
1195 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
1196 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
1226 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2>
1227 struct expr<Tag, list3<Arg0 , Arg1 , Arg2>, 3 >
1229 typedef Tag proto_tag;
1230 static const long proto_arity_c = 3;
1231 typedef mpl::long_<3 > proto_arity;
1232 typedef expr proto_base_expr;
1233 typedef list3<Arg0 , Arg1 , Arg2> proto_args;
1234 typedef basic_expr<Tag, proto_args, 3 > proto_grammar;
1235 typedef default_domain proto_domain;
1236 typedef default_generator proto_generator;
1237 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
1238 typedef expr proto_derived_expr;
1239 typedef void proto_is_expr_;
1240 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2;
1241 typedef void proto_child3; typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
1245 expr const &proto_base() const
1259 template<typename A0 , typename A1 , typename A2>
1261 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2)
1263 expr that = {a0 , a1 , a2};
1268 typedef detail::not_a_valid_type address_of_hack_type_;
1276 , list2<expr &, expr const &>
1279 operator =(expr const &a)
1283 , list2<expr &, expr const &>
1285 > that = {*this, a};
1292 template<typename A>
1296 , list2<expr const &, typename result_of::as_child<A>::type>
1299 operator =(A &a) const
1303 , list2<expr const &, typename result_of::as_child<A>::type>
1305 > that = {*this, proto::as_child(a)};
1310 template<typename A>
1314 , list2<expr const &, typename result_of::as_child<A const>::type>
1317 operator =(A const &a) const
1321 , list2<expr const &, typename result_of::as_child<A const>::type>
1323 > that = {*this, proto::as_child(a)};
1330 template<typename A>
1333 proto::tag::subscript
1334 , list2<expr const &, typename result_of::as_child<A>::type>
1337 operator [](A &a) const
1340 proto::tag::subscript
1341 , list2<expr const &, typename result_of::as_child<A>::type>
1343 > that = {*this, proto::as_child(a)};
1348 template<typename A>
1351 proto::tag::subscript
1352 , list2<expr const &, typename result_of::as_child<A const>::type>
1355 operator [](A const &a) const
1358 proto::tag::subscript
1359 , list2<expr const &, typename result_of::as_child<A const>::type>
1361 > that = {*this, proto::as_child(a)};
1366 template<typename Sig>
1369 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
1375 proto::expr<proto::tag::function, list1<expr const &>, 1> const
1378 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
1383 template<typename A0>
1385 typename result_of::funop1<
1387 , default_domain , const A0
1389 operator ()(A0 const &a0) const
1391 return result_of::funop1<
1393 , default_domain , const A0
1394 >::call(*this , a0);
1398 template<typename A0 , typename A1>
1400 typename result_of::funop2<
1402 , default_domain , const A0 , const A1
1404 operator ()(A0 const &a0 , A1 const &a1) const
1406 return result_of::funop2<
1408 , default_domain , const A0 , const A1
1409 >::call(*this , a0 , a1);
1413 template<typename A0 , typename A1 , typename A2>
1415 typename result_of::funop3<
1417 , default_domain , const A0 , const A1 , const A2
1419 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
1421 return result_of::funop3<
1423 , default_domain , const A0 , const A1 , const A2
1424 >::call(*this , a0 , a1 , a2);
1428 template<typename A0 , typename A1 , typename A2 , typename A3>
1430 typename result_of::funop4<
1432 , default_domain , const A0 , const A1 , const A2 , const A3
1434 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
1436 return result_of::funop4<
1438 , default_domain , const A0 , const A1 , const A2 , const A3
1439 >::call(*this , a0 , a1 , a2 , a3);
1443 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
1445 typename result_of::funop5<
1447 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
1449 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
1451 return result_of::funop5<
1453 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
1454 >::call(*this , a0 , a1 , a2 , a3 , a4);
1458 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
1460 typename result_of::funop6<
1462 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
1464 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
1466 return result_of::funop6<
1468 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
1469 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
1473 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
1475 typename result_of::funop7<
1477 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
1479 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
1481 return result_of::funop7<
1483 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
1484 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6);
1488 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
1490 typename result_of::funop8<
1492 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
1494 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const
1496 return result_of::funop8<
1498 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
1499 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
1503 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
1505 typename result_of::funop9<
1507 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
1509 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const
1511 return result_of::funop9<
1513 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
1514 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
1544 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3>
1545 struct expr<Tag, list4<Arg0 , Arg1 , Arg2 , Arg3>, 4 >
1547 typedef Tag proto_tag;
1548 static const long proto_arity_c = 4;
1549 typedef mpl::long_<4 > proto_arity;
1550 typedef expr proto_base_expr;
1551 typedef list4<Arg0 , Arg1 , Arg2 , Arg3> proto_args;
1552 typedef basic_expr<Tag, proto_args, 4 > proto_grammar;
1553 typedef default_domain proto_domain;
1554 typedef default_generator proto_generator;
1555 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
1556 typedef expr proto_derived_expr;
1557 typedef void proto_is_expr_;
1558 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3;
1559 typedef void proto_child4; typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
1563 expr const &proto_base() const
1577 template<typename A0 , typename A1 , typename A2 , typename A3>
1579 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3)
1581 expr that = {a0 , a1 , a2 , a3};
1586 typedef detail::not_a_valid_type address_of_hack_type_;
1594 , list2<expr &, expr const &>
1597 operator =(expr const &a)
1601 , list2<expr &, expr const &>
1603 > that = {*this, a};
1610 template<typename A>
1614 , list2<expr const &, typename result_of::as_child<A>::type>
1617 operator =(A &a) const
1621 , list2<expr const &, typename result_of::as_child<A>::type>
1623 > that = {*this, proto::as_child(a)};
1628 template<typename A>
1632 , list2<expr const &, typename result_of::as_child<A const>::type>
1635 operator =(A const &a) const
1639 , list2<expr const &, typename result_of::as_child<A const>::type>
1641 > that = {*this, proto::as_child(a)};
1648 template<typename A>
1651 proto::tag::subscript
1652 , list2<expr const &, typename result_of::as_child<A>::type>
1655 operator [](A &a) const
1658 proto::tag::subscript
1659 , list2<expr const &, typename result_of::as_child<A>::type>
1661 > that = {*this, proto::as_child(a)};
1666 template<typename A>
1669 proto::tag::subscript
1670 , list2<expr const &, typename result_of::as_child<A const>::type>
1673 operator [](A const &a) const
1676 proto::tag::subscript
1677 , list2<expr const &, typename result_of::as_child<A const>::type>
1679 > that = {*this, proto::as_child(a)};
1684 template<typename Sig>
1687 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
1693 proto::expr<proto::tag::function, list1<expr const &>, 1> const
1696 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
1701 template<typename A0>
1703 typename result_of::funop1<
1705 , default_domain , const A0
1707 operator ()(A0 const &a0) const
1709 return result_of::funop1<
1711 , default_domain , const A0
1712 >::call(*this , a0);
1716 template<typename A0 , typename A1>
1718 typename result_of::funop2<
1720 , default_domain , const A0 , const A1
1722 operator ()(A0 const &a0 , A1 const &a1) const
1724 return result_of::funop2<
1726 , default_domain , const A0 , const A1
1727 >::call(*this , a0 , a1);
1731 template<typename A0 , typename A1 , typename A2>
1733 typename result_of::funop3<
1735 , default_domain , const A0 , const A1 , const A2
1737 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
1739 return result_of::funop3<
1741 , default_domain , const A0 , const A1 , const A2
1742 >::call(*this , a0 , a1 , a2);
1746 template<typename A0 , typename A1 , typename A2 , typename A3>
1748 typename result_of::funop4<
1750 , default_domain , const A0 , const A1 , const A2 , const A3
1752 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
1754 return result_of::funop4<
1756 , default_domain , const A0 , const A1 , const A2 , const A3
1757 >::call(*this , a0 , a1 , a2 , a3);
1761 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
1763 typename result_of::funop5<
1765 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
1767 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
1769 return result_of::funop5<
1771 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
1772 >::call(*this , a0 , a1 , a2 , a3 , a4);
1776 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
1778 typename result_of::funop6<
1780 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
1782 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
1784 return result_of::funop6<
1786 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
1787 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
1791 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
1793 typename result_of::funop7<
1795 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
1797 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
1799 return result_of::funop7<
1801 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
1802 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6);
1806 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
1808 typename result_of::funop8<
1810 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
1812 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const
1814 return result_of::funop8<
1816 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
1817 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
1821 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
1823 typename result_of::funop9<
1825 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
1827 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const
1829 return result_of::funop9<
1831 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
1832 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
1862 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4>
1863 struct expr<Tag, list5<Arg0 , Arg1 , Arg2 , Arg3 , Arg4>, 5 >
1865 typedef Tag proto_tag;
1866 static const long proto_arity_c = 5;
1867 typedef mpl::long_<5 > proto_arity;
1868 typedef expr proto_base_expr;
1869 typedef list5<Arg0 , Arg1 , Arg2 , Arg3 , Arg4> proto_args;
1870 typedef basic_expr<Tag, proto_args, 5 > proto_grammar;
1871 typedef default_domain proto_domain;
1872 typedef default_generator proto_generator;
1873 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
1874 typedef expr proto_derived_expr;
1875 typedef void proto_is_expr_;
1876 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4;
1877 typedef void proto_child5; typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
1881 expr const &proto_base() const
1895 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
1897 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4)
1899 expr that = {a0 , a1 , a2 , a3 , a4};
1904 typedef detail::not_a_valid_type address_of_hack_type_;
1912 , list2<expr &, expr const &>
1915 operator =(expr const &a)
1919 , list2<expr &, expr const &>
1921 > that = {*this, a};
1928 template<typename A>
1932 , list2<expr const &, typename result_of::as_child<A>::type>
1935 operator =(A &a) const
1939 , list2<expr const &, typename result_of::as_child<A>::type>
1941 > that = {*this, proto::as_child(a)};
1946 template<typename A>
1950 , list2<expr const &, typename result_of::as_child<A const>::type>
1953 operator =(A const &a) const
1957 , list2<expr const &, typename result_of::as_child<A const>::type>
1959 > that = {*this, proto::as_child(a)};
1966 template<typename A>
1969 proto::tag::subscript
1970 , list2<expr const &, typename result_of::as_child<A>::type>
1973 operator [](A &a) const
1976 proto::tag::subscript
1977 , list2<expr const &, typename result_of::as_child<A>::type>
1979 > that = {*this, proto::as_child(a)};
1984 template<typename A>
1987 proto::tag::subscript
1988 , list2<expr const &, typename result_of::as_child<A const>::type>
1991 operator [](A const &a) const
1994 proto::tag::subscript
1995 , list2<expr const &, typename result_of::as_child<A const>::type>
1997 > that = {*this, proto::as_child(a)};
2002 template<typename Sig>
2005 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
2011 proto::expr<proto::tag::function, list1<expr const &>, 1> const
2014 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
2019 template<typename A0>
2021 typename result_of::funop1<
2023 , default_domain , const A0
2025 operator ()(A0 const &a0) const
2027 return result_of::funop1<
2029 , default_domain , const A0
2030 >::call(*this , a0);
2034 template<typename A0 , typename A1>
2036 typename result_of::funop2<
2038 , default_domain , const A0 , const A1
2040 operator ()(A0 const &a0 , A1 const &a1) const
2042 return result_of::funop2<
2044 , default_domain , const A0 , const A1
2045 >::call(*this , a0 , a1);
2049 template<typename A0 , typename A1 , typename A2>
2051 typename result_of::funop3<
2053 , default_domain , const A0 , const A1 , const A2
2055 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
2057 return result_of::funop3<
2059 , default_domain , const A0 , const A1 , const A2
2060 >::call(*this , a0 , a1 , a2);
2064 template<typename A0 , typename A1 , typename A2 , typename A3>
2066 typename result_of::funop4<
2068 , default_domain , const A0 , const A1 , const A2 , const A3
2070 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
2072 return result_of::funop4<
2074 , default_domain , const A0 , const A1 , const A2 , const A3
2075 >::call(*this , a0 , a1 , a2 , a3);
2079 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
2081 typename result_of::funop5<
2083 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
2085 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
2087 return result_of::funop5<
2089 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
2090 >::call(*this , a0 , a1 , a2 , a3 , a4);
2094 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
2096 typename result_of::funop6<
2098 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
2100 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
2102 return result_of::funop6<
2104 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
2105 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
2109 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
2111 typename result_of::funop7<
2113 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
2115 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
2117 return result_of::funop7<
2119 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
2120 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6);
2124 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
2126 typename result_of::funop8<
2128 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
2130 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const
2132 return result_of::funop8<
2134 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
2135 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
2139 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
2141 typename result_of::funop9<
2143 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
2145 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const
2147 return result_of::funop9<
2149 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
2150 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
2180 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5>
2181 struct expr<Tag, list6<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5>, 6 >
2183 typedef Tag proto_tag;
2184 static const long proto_arity_c = 6;
2185 typedef mpl::long_<6 > proto_arity;
2186 typedef expr proto_base_expr;
2187 typedef list6<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5> proto_args;
2188 typedef basic_expr<Tag, proto_args, 6 > proto_grammar;
2189 typedef default_domain proto_domain;
2190 typedef default_generator proto_generator;
2191 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
2192 typedef expr proto_derived_expr;
2193 typedef void proto_is_expr_;
2194 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5;
2195 typedef void proto_child6; typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
2199 expr const &proto_base() const
2213 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
2215 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5)
2217 expr that = {a0 , a1 , a2 , a3 , a4 , a5};
2222 typedef detail::not_a_valid_type address_of_hack_type_;
2230 , list2<expr &, expr const &>
2233 operator =(expr const &a)
2237 , list2<expr &, expr const &>
2239 > that = {*this, a};
2246 template<typename A>
2250 , list2<expr const &, typename result_of::as_child<A>::type>
2253 operator =(A &a) const
2257 , list2<expr const &, typename result_of::as_child<A>::type>
2259 > that = {*this, proto::as_child(a)};
2264 template<typename A>
2268 , list2<expr const &, typename result_of::as_child<A const>::type>
2271 operator =(A const &a) const
2275 , list2<expr const &, typename result_of::as_child<A const>::type>
2277 > that = {*this, proto::as_child(a)};
2284 template<typename A>
2287 proto::tag::subscript
2288 , list2<expr const &, typename result_of::as_child<A>::type>
2291 operator [](A &a) const
2294 proto::tag::subscript
2295 , list2<expr const &, typename result_of::as_child<A>::type>
2297 > that = {*this, proto::as_child(a)};
2302 template<typename A>
2305 proto::tag::subscript
2306 , list2<expr const &, typename result_of::as_child<A const>::type>
2309 operator [](A const &a) const
2312 proto::tag::subscript
2313 , list2<expr const &, typename result_of::as_child<A const>::type>
2315 > that = {*this, proto::as_child(a)};
2320 template<typename Sig>
2323 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
2329 proto::expr<proto::tag::function, list1<expr const &>, 1> const
2332 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
2337 template<typename A0>
2339 typename result_of::funop1<
2341 , default_domain , const A0
2343 operator ()(A0 const &a0) const
2345 return result_of::funop1<
2347 , default_domain , const A0
2348 >::call(*this , a0);
2352 template<typename A0 , typename A1>
2354 typename result_of::funop2<
2356 , default_domain , const A0 , const A1
2358 operator ()(A0 const &a0 , A1 const &a1) const
2360 return result_of::funop2<
2362 , default_domain , const A0 , const A1
2363 >::call(*this , a0 , a1);
2367 template<typename A0 , typename A1 , typename A2>
2369 typename result_of::funop3<
2371 , default_domain , const A0 , const A1 , const A2
2373 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
2375 return result_of::funop3<
2377 , default_domain , const A0 , const A1 , const A2
2378 >::call(*this , a0 , a1 , a2);
2382 template<typename A0 , typename A1 , typename A2 , typename A3>
2384 typename result_of::funop4<
2386 , default_domain , const A0 , const A1 , const A2 , const A3
2388 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
2390 return result_of::funop4<
2392 , default_domain , const A0 , const A1 , const A2 , const A3
2393 >::call(*this , a0 , a1 , a2 , a3);
2397 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
2399 typename result_of::funop5<
2401 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
2403 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
2405 return result_of::funop5<
2407 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
2408 >::call(*this , a0 , a1 , a2 , a3 , a4);
2412 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
2414 typename result_of::funop6<
2416 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
2418 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
2420 return result_of::funop6<
2422 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
2423 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
2427 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
2429 typename result_of::funop7<
2431 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
2433 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
2435 return result_of::funop7<
2437 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
2438 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6);
2442 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
2444 typename result_of::funop8<
2446 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
2448 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const
2450 return result_of::funop8<
2452 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
2453 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
2457 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
2459 typename result_of::funop9<
2461 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
2463 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const
2465 return result_of::funop9<
2467 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
2468 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
2498 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6>
2499 struct expr<Tag, list7<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6>, 7 >
2501 typedef Tag proto_tag;
2502 static const long proto_arity_c = 7;
2503 typedef mpl::long_<7 > proto_arity;
2504 typedef expr proto_base_expr;
2505 typedef list7<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6> proto_args;
2506 typedef basic_expr<Tag, proto_args, 7 > proto_grammar;
2507 typedef default_domain proto_domain;
2508 typedef default_generator proto_generator;
2509 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
2510 typedef expr proto_derived_expr;
2511 typedef void proto_is_expr_;
2512 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6;
2513 typedef void proto_child7; typedef void proto_child8; typedef void proto_child9;
2517 expr const &proto_base() const
2531 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
2533 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6)
2535 expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6};
2540 typedef detail::not_a_valid_type address_of_hack_type_;
2548 , list2<expr &, expr const &>
2551 operator =(expr const &a)
2555 , list2<expr &, expr const &>
2557 > that = {*this, a};
2564 template<typename A>
2568 , list2<expr const &, typename result_of::as_child<A>::type>
2571 operator =(A &a) const
2575 , list2<expr const &, typename result_of::as_child<A>::type>
2577 > that = {*this, proto::as_child(a)};
2582 template<typename A>
2586 , list2<expr const &, typename result_of::as_child<A const>::type>
2589 operator =(A const &a) const
2593 , list2<expr const &, typename result_of::as_child<A const>::type>
2595 > that = {*this, proto::as_child(a)};
2602 template<typename A>
2605 proto::tag::subscript
2606 , list2<expr const &, typename result_of::as_child<A>::type>
2609 operator [](A &a) const
2612 proto::tag::subscript
2613 , list2<expr const &, typename result_of::as_child<A>::type>
2615 > that = {*this, proto::as_child(a)};
2620 template<typename A>
2623 proto::tag::subscript
2624 , list2<expr const &, typename result_of::as_child<A const>::type>
2627 operator [](A const &a) const
2630 proto::tag::subscript
2631 , list2<expr const &, typename result_of::as_child<A const>::type>
2633 > that = {*this, proto::as_child(a)};
2638 template<typename Sig>
2641 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
2647 proto::expr<proto::tag::function, list1<expr const &>, 1> const
2650 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
2655 template<typename A0>
2657 typename result_of::funop1<
2659 , default_domain , const A0
2661 operator ()(A0 const &a0) const
2663 return result_of::funop1<
2665 , default_domain , const A0
2666 >::call(*this , a0);
2670 template<typename A0 , typename A1>
2672 typename result_of::funop2<
2674 , default_domain , const A0 , const A1
2676 operator ()(A0 const &a0 , A1 const &a1) const
2678 return result_of::funop2<
2680 , default_domain , const A0 , const A1
2681 >::call(*this , a0 , a1);
2685 template<typename A0 , typename A1 , typename A2>
2687 typename result_of::funop3<
2689 , default_domain , const A0 , const A1 , const A2
2691 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
2693 return result_of::funop3<
2695 , default_domain , const A0 , const A1 , const A2
2696 >::call(*this , a0 , a1 , a2);
2700 template<typename A0 , typename A1 , typename A2 , typename A3>
2702 typename result_of::funop4<
2704 , default_domain , const A0 , const A1 , const A2 , const A3
2706 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
2708 return result_of::funop4<
2710 , default_domain , const A0 , const A1 , const A2 , const A3
2711 >::call(*this , a0 , a1 , a2 , a3);
2715 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
2717 typename result_of::funop5<
2719 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
2721 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
2723 return result_of::funop5<
2725 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
2726 >::call(*this , a0 , a1 , a2 , a3 , a4);
2730 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
2732 typename result_of::funop6<
2734 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
2736 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
2738 return result_of::funop6<
2740 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
2741 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
2745 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
2747 typename result_of::funop7<
2749 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
2751 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
2753 return result_of::funop7<
2755 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
2756 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6);
2760 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
2762 typename result_of::funop8<
2764 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
2766 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const
2768 return result_of::funop8<
2770 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
2771 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
2775 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
2777 typename result_of::funop9<
2779 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
2781 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const
2783 return result_of::funop9<
2785 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
2786 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
2816 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7>
2817 struct expr<Tag, list8<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7>, 8 >
2819 typedef Tag proto_tag;
2820 static const long proto_arity_c = 8;
2821 typedef mpl::long_<8 > proto_arity;
2822 typedef expr proto_base_expr;
2823 typedef list8<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7> proto_args;
2824 typedef basic_expr<Tag, proto_args, 8 > proto_grammar;
2825 typedef default_domain proto_domain;
2826 typedef default_generator proto_generator;
2827 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
2828 typedef expr proto_derived_expr;
2829 typedef void proto_is_expr_;
2830 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7;
2831 typedef void proto_child8; typedef void proto_child9;
2835 expr const &proto_base() const
2849 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
2851 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7)
2853 expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
2858 typedef detail::not_a_valid_type address_of_hack_type_;
2866 , list2<expr &, expr const &>
2869 operator =(expr const &a)
2873 , list2<expr &, expr const &>
2875 > that = {*this, a};
2882 template<typename A>
2886 , list2<expr const &, typename result_of::as_child<A>::type>
2889 operator =(A &a) const
2893 , list2<expr const &, typename result_of::as_child<A>::type>
2895 > that = {*this, proto::as_child(a)};
2900 template<typename A>
2904 , list2<expr const &, typename result_of::as_child<A const>::type>
2907 operator =(A const &a) const
2911 , list2<expr const &, typename result_of::as_child<A const>::type>
2913 > that = {*this, proto::as_child(a)};
2920 template<typename A>
2923 proto::tag::subscript
2924 , list2<expr const &, typename result_of::as_child<A>::type>
2927 operator [](A &a) const
2930 proto::tag::subscript
2931 , list2<expr const &, typename result_of::as_child<A>::type>
2933 > that = {*this, proto::as_child(a)};
2938 template<typename A>
2941 proto::tag::subscript
2942 , list2<expr const &, typename result_of::as_child<A const>::type>
2945 operator [](A const &a) const
2948 proto::tag::subscript
2949 , list2<expr const &, typename result_of::as_child<A const>::type>
2951 > that = {*this, proto::as_child(a)};
2956 template<typename Sig>
2959 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
2965 proto::expr<proto::tag::function, list1<expr const &>, 1> const
2968 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
2973 template<typename A0>
2975 typename result_of::funop1<
2977 , default_domain , const A0
2979 operator ()(A0 const &a0) const
2981 return result_of::funop1<
2983 , default_domain , const A0
2984 >::call(*this , a0);
2988 template<typename A0 , typename A1>
2990 typename result_of::funop2<
2992 , default_domain , const A0 , const A1
2994 operator ()(A0 const &a0 , A1 const &a1) const
2996 return result_of::funop2<
2998 , default_domain , const A0 , const A1
2999 >::call(*this , a0 , a1);
3003 template<typename A0 , typename A1 , typename A2>
3005 typename result_of::funop3<
3007 , default_domain , const A0 , const A1 , const A2
3009 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
3011 return result_of::funop3<
3013 , default_domain , const A0 , const A1 , const A2
3014 >::call(*this , a0 , a1 , a2);
3018 template<typename A0 , typename A1 , typename A2 , typename A3>
3020 typename result_of::funop4<
3022 , default_domain , const A0 , const A1 , const A2 , const A3
3024 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
3026 return result_of::funop4<
3028 , default_domain , const A0 , const A1 , const A2 , const A3
3029 >::call(*this , a0 , a1 , a2 , a3);
3033 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
3035 typename result_of::funop5<
3037 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
3039 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
3041 return result_of::funop5<
3043 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
3044 >::call(*this , a0 , a1 , a2 , a3 , a4);
3048 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
3050 typename result_of::funop6<
3052 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
3054 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
3056 return result_of::funop6<
3058 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
3059 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
3063 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
3065 typename result_of::funop7<
3067 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
3069 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
3071 return result_of::funop7<
3073 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
3074 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6);
3078 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
3080 typename result_of::funop8<
3082 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
3084 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const
3086 return result_of::funop8<
3088 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
3089 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
3093 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
3095 typename result_of::funop9<
3097 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
3099 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const
3101 return result_of::funop9<
3103 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
3104 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
3134 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8>
3135 struct expr<Tag, list9<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8>, 9 >
3137 typedef Tag proto_tag;
3138 static const long proto_arity_c = 9;
3139 typedef mpl::long_<9 > proto_arity;
3140 typedef expr proto_base_expr;
3141 typedef list9<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8> proto_args;
3142 typedef basic_expr<Tag, proto_args, 9 > proto_grammar;
3143 typedef default_domain proto_domain;
3144 typedef default_generator proto_generator;
3145 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
3146 typedef expr proto_derived_expr;
3147 typedef void proto_is_expr_;
3148 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7; typedef Arg8 proto_child8; proto_child8 child8;
3149 typedef void proto_child9;
3153 expr const &proto_base() const
3167 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
3169 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8)
3171 expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
3176 typedef detail::not_a_valid_type address_of_hack_type_;
3184 , list2<expr &, expr const &>
3187 operator =(expr const &a)
3191 , list2<expr &, expr const &>
3193 > that = {*this, a};
3200 template<typename A>
3204 , list2<expr const &, typename result_of::as_child<A>::type>
3207 operator =(A &a) const
3211 , list2<expr const &, typename result_of::as_child<A>::type>
3213 > that = {*this, proto::as_child(a)};
3218 template<typename A>
3222 , list2<expr const &, typename result_of::as_child<A const>::type>
3225 operator =(A const &a) const
3229 , list2<expr const &, typename result_of::as_child<A const>::type>
3231 > that = {*this, proto::as_child(a)};
3238 template<typename A>
3241 proto::tag::subscript
3242 , list2<expr const &, typename result_of::as_child<A>::type>
3245 operator [](A &a) const
3248 proto::tag::subscript
3249 , list2<expr const &, typename result_of::as_child<A>::type>
3251 > that = {*this, proto::as_child(a)};
3256 template<typename A>
3259 proto::tag::subscript
3260 , list2<expr const &, typename result_of::as_child<A const>::type>
3263 operator [](A const &a) const
3266 proto::tag::subscript
3267 , list2<expr const &, typename result_of::as_child<A const>::type>
3269 > that = {*this, proto::as_child(a)};
3274 template<typename Sig>
3277 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
3283 proto::expr<proto::tag::function, list1<expr const &>, 1> const
3286 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
3291 template<typename A0>
3293 typename result_of::funop1<
3295 , default_domain , const A0
3297 operator ()(A0 const &a0) const
3299 return result_of::funop1<
3301 , default_domain , const A0
3302 >::call(*this , a0);
3306 template<typename A0 , typename A1>
3308 typename result_of::funop2<
3310 , default_domain , const A0 , const A1
3312 operator ()(A0 const &a0 , A1 const &a1) const
3314 return result_of::funop2<
3316 , default_domain , const A0 , const A1
3317 >::call(*this , a0 , a1);
3321 template<typename A0 , typename A1 , typename A2>
3323 typename result_of::funop3<
3325 , default_domain , const A0 , const A1 , const A2
3327 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
3329 return result_of::funop3<
3331 , default_domain , const A0 , const A1 , const A2
3332 >::call(*this , a0 , a1 , a2);
3336 template<typename A0 , typename A1 , typename A2 , typename A3>
3338 typename result_of::funop4<
3340 , default_domain , const A0 , const A1 , const A2 , const A3
3342 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
3344 return result_of::funop4<
3346 , default_domain , const A0 , const A1 , const A2 , const A3
3347 >::call(*this , a0 , a1 , a2 , a3);
3351 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
3353 typename result_of::funop5<
3355 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
3357 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
3359 return result_of::funop5<
3361 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
3362 >::call(*this , a0 , a1 , a2 , a3 , a4);
3366 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
3368 typename result_of::funop6<
3370 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
3372 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
3374 return result_of::funop6<
3376 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
3377 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
3381 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
3383 typename result_of::funop7<
3385 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
3387 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
3389 return result_of::funop7<
3391 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
3392 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6);
3396 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
3398 typename result_of::funop8<
3400 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
3402 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const
3404 return result_of::funop8<
3406 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
3407 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
3411 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
3413 typename result_of::funop9<
3415 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
3417 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const
3419 return result_of::funop9<
3421 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
3422 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
3452 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3 , typename Arg4 , typename Arg5 , typename Arg6 , typename Arg7 , typename Arg8 , typename Arg9>
3453 struct expr<Tag, list10<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8 , Arg9>, 10 >
3455 typedef Tag proto_tag;
3456 static const long proto_arity_c = 10;
3457 typedef mpl::long_<10 > proto_arity;
3458 typedef expr proto_base_expr;
3459 typedef list10<Arg0 , Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8 , Arg9> proto_args;
3460 typedef basic_expr<Tag, proto_args, 10 > proto_grammar;
3461 typedef default_domain proto_domain;
3462 typedef default_generator proto_generator;
3463 typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
3464 typedef expr proto_derived_expr;
3465 typedef void proto_is_expr_;
3466 typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7; typedef Arg8 proto_child8; proto_child8 child8; typedef Arg9 proto_child9; proto_child9 child9;
3471 expr const &proto_base() const
3485 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
3487 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8 , A9 const &a9)
3489 expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
3494 typedef detail::not_a_valid_type address_of_hack_type_;
3502 , list2<expr &, expr const &>
3505 operator =(expr const &a)
3509 , list2<expr &, expr const &>
3511 > that = {*this, a};
3518 template<typename A>
3522 , list2<expr const &, typename result_of::as_child<A>::type>
3525 operator =(A &a) const
3529 , list2<expr const &, typename result_of::as_child<A>::type>
3531 > that = {*this, proto::as_child(a)};
3536 template<typename A>
3540 , list2<expr const &, typename result_of::as_child<A const>::type>
3543 operator =(A const &a) const
3547 , list2<expr const &, typename result_of::as_child<A const>::type>
3549 > that = {*this, proto::as_child(a)};
3556 template<typename A>
3559 proto::tag::subscript
3560 , list2<expr const &, typename result_of::as_child<A>::type>
3563 operator [](A &a) const
3566 proto::tag::subscript
3567 , list2<expr const &, typename result_of::as_child<A>::type>
3569 > that = {*this, proto::as_child(a)};
3574 template<typename A>
3577 proto::tag::subscript
3578 , list2<expr const &, typename result_of::as_child<A const>::type>
3581 operator [](A const &a) const
3584 proto::tag::subscript
3585 , list2<expr const &, typename result_of::as_child<A const>::type>
3587 > that = {*this, proto::as_child(a)};
3592 template<typename Sig>
3595 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
3601 proto::expr<proto::tag::function, list1<expr const &>, 1> const
3604 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
3609 template<typename A0>
3611 typename result_of::funop1<
3613 , default_domain , const A0
3615 operator ()(A0 const &a0) const
3617 return result_of::funop1<
3619 , default_domain , const A0
3620 >::call(*this , a0);
3624 template<typename A0 , typename A1>
3626 typename result_of::funop2<
3628 , default_domain , const A0 , const A1
3630 operator ()(A0 const &a0 , A1 const &a1) const
3632 return result_of::funop2<
3634 , default_domain , const A0 , const A1
3635 >::call(*this , a0 , a1);
3639 template<typename A0 , typename A1 , typename A2>
3641 typename result_of::funop3<
3643 , default_domain , const A0 , const A1 , const A2
3645 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
3647 return result_of::funop3<
3649 , default_domain , const A0 , const A1 , const A2
3650 >::call(*this , a0 , a1 , a2);
3654 template<typename A0 , typename A1 , typename A2 , typename A3>
3656 typename result_of::funop4<
3658 , default_domain , const A0 , const A1 , const A2 , const A3
3660 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
3662 return result_of::funop4<
3664 , default_domain , const A0 , const A1 , const A2 , const A3
3665 >::call(*this , a0 , a1 , a2 , a3);
3669 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
3671 typename result_of::funop5<
3673 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
3675 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
3677 return result_of::funop5<
3679 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
3680 >::call(*this , a0 , a1 , a2 , a3 , a4);
3684 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
3686 typename result_of::funop6<
3688 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
3690 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
3692 return result_of::funop6<
3694 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
3695 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
3699 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
3701 typename result_of::funop7<
3703 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
3705 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
3707 return result_of::funop7<
3709 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
3710 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6);
3714 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
3716 typename result_of::funop8<
3718 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
3720 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7) const
3722 return result_of::funop8<
3724 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
3725 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
3729 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
3731 typename result_of::funop9<
3733 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
3735 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6 , A7 const &a7 , A8 const &a8) const
3737 return result_of::funop9<
3739 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
3740 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);