]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/proto/detail/preprocessed/expr.hpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / boost / proto / detail / preprocessed / expr.hpp
1 ///////////////////////////////////////////////////////////////////////////////
2 /// \file expr.hpp
3 /// Contains definition of expr\<\> class template.
4 //
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)
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 template<typename Tag, typename Arg0>
37 struct expr<Tag, term<Arg0>, 0>
38 {
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;
52
53
54 BOOST_FORCEINLINE
55 expr const &proto_base() const
56 {
57 return *this;
58 }
59
60
61 BOOST_FORCEINLINE
62 expr &proto_base()
63 {
64 return *this;
65 }
66
67
68
69 template<typename A0>
70 BOOST_FORCEINLINE
71 static expr const make(A0 &a0)
72 {
73 return detail::make_terminal(a0, static_cast<expr *>(0), static_cast<proto_args *>(0));
74 }
75
76
77 template<typename A0>
78 BOOST_FORCEINLINE
79 static expr const make(A0 const &a0)
80 {
81 return detail::make_terminal(a0, static_cast<expr *>(0), static_cast<proto_args *>(0));
82 }
83
84
85 typedef detail::not_a_valid_type address_of_hack_type_;
86
87
88
89
90 BOOST_FORCEINLINE
91 proto::expr<
92 proto::tag::assign
93 , list2<expr &, expr const &>
94 , 2
95 > const
96 operator =(expr const &a)
97 {
98 proto::expr<
99 proto::tag::assign
100 , list2<expr &, expr const &>
101 , 2
102 > that = {*this, a};
103 return that;
104 }
105
106
107
108
109 template<typename A>
110 BOOST_FORCEINLINE
111 proto::expr<
112 proto::tag::assign
113 , list2<expr const &, typename result_of::as_child<A>::type>
114 , 2
115 > const
116 operator =(A &a) const
117 {
118 proto::expr<
119 proto::tag::assign
120 , list2<expr const &, typename result_of::as_child<A>::type>
121 , 2
122 > that = {*this, proto::as_child(a)};
123 return that;
124 }
125
126
127 template<typename A>
128 BOOST_FORCEINLINE
129 proto::expr<
130 proto::tag::assign
131 , list2<expr const &, typename result_of::as_child<A const>::type>
132 , 2
133 > const
134 operator =(A const &a) const
135 {
136 proto::expr<
137 proto::tag::assign
138 , list2<expr const &, typename result_of::as_child<A const>::type>
139 , 2
140 > that = {*this, proto::as_child(a)};
141 return that;
142 }
143
144
145 template<typename A>
146 BOOST_FORCEINLINE
147 proto::expr<
148 proto::tag::assign
149 , list2<expr &, typename result_of::as_child<A>::type>
150 , 2
151 > const
152 operator =(A &a)
153 {
154 proto::expr<
155 proto::tag::assign
156 , list2<expr &, typename result_of::as_child<A>::type>
157 , 2
158 > that = {*this, proto::as_child(a)};
159 return that;
160 }
161
162
163 template<typename A>
164 BOOST_FORCEINLINE
165 proto::expr<
166 proto::tag::assign
167 , list2<expr &, typename result_of::as_child<A const>::type>
168 , 2
169 > const
170 operator =(A const &a)
171 {
172 proto::expr<
173 proto::tag::assign
174 , list2<expr &, typename result_of::as_child<A const>::type>
175 , 2
176 > that = {*this, proto::as_child(a)};
177 return that;
178 }
179
180
181
182
183 template<typename A>
184 BOOST_FORCEINLINE
185 proto::expr<
186 proto::tag::subscript
187 , list2<expr const &, typename result_of::as_child<A>::type>
188 , 2
189 > const
190 operator [](A &a) const
191 {
192 proto::expr<
193 proto::tag::subscript
194 , list2<expr const &, typename result_of::as_child<A>::type>
195 , 2
196 > that = {*this, proto::as_child(a)};
197 return that;
198 }
199
200
201 template<typename A>
202 BOOST_FORCEINLINE
203 proto::expr<
204 proto::tag::subscript
205 , list2<expr const &, typename result_of::as_child<A const>::type>
206 , 2
207 > const
208 operator [](A const &a) const
209 {
210 proto::expr<
211 proto::tag::subscript
212 , list2<expr const &, typename result_of::as_child<A const>::type>
213 , 2
214 > that = {*this, proto::as_child(a)};
215 return that;
216 }
217
218
219 template<typename A>
220 BOOST_FORCEINLINE
221 proto::expr<
222 proto::tag::subscript
223 , list2<expr &, typename result_of::as_child<A>::type>
224 , 2
225 > const
226 operator [](A &a)
227 {
228 proto::expr<
229 proto::tag::subscript
230 , list2<expr &, typename result_of::as_child<A>::type>
231 , 2
232 > that = {*this, proto::as_child(a)};
233 return that;
234 }
235
236
237 template<typename A>
238 BOOST_FORCEINLINE
239 proto::expr<
240 proto::tag::subscript
241 , list2<expr &, typename result_of::as_child<A const>::type>
242 , 2
243 > const
244 operator [](A const &a)
245 {
246 proto::expr<
247 proto::tag::subscript
248 , list2<expr &, typename result_of::as_child<A const>::type>
249 , 2
250 > that = {*this, proto::as_child(a)};
251 return that;
252 }
253
254
255 template<typename Sig>
256 struct result
257 {
258 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
259 };
260
261
262
263 BOOST_FORCEINLINE
264 proto::expr<proto::tag::function, list1<expr const &>, 1> const
265 operator ()() const
266 {
267 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
268 return that;
269 }
270
271
272 BOOST_FORCEINLINE
273 proto::expr<proto::tag::function, list1<expr &>, 1> const
274 operator ()()
275 {
276 proto::expr<proto::tag::function, list1<expr &>, 1> that = {*this};
277 return that;
278 }
279
280
281 template<typename A0>
282 BOOST_FORCEINLINE
283 typename result_of::funop1<
284 expr const
285 , default_domain , const A0
286 >::type const
287 operator ()(A0 const &a0) const
288 {
289 return result_of::funop1<
290 expr const
291 , default_domain , const A0
292 >::call(*this , a0);
293 }
294
295
296 template<typename A0>
297 BOOST_FORCEINLINE
298 typename result_of::funop1<
299 expr
300 , default_domain , const A0
301 >::type const
302 operator ()(A0 const &a0)
303 {
304 return result_of::funop1<
305 expr
306 , default_domain , const A0
307 >::call(*this , a0);
308 }
309
310
311 template<typename A0 , typename A1>
312 BOOST_FORCEINLINE
313 typename result_of::funop2<
314 expr const
315 , default_domain , const A0 , const A1
316 >::type const
317 operator ()(A0 const &a0 , A1 const &a1) const
318 {
319 return result_of::funop2<
320 expr const
321 , default_domain , const A0 , const A1
322 >::call(*this , a0 , a1);
323 }
324
325
326 template<typename A0 , typename A1>
327 BOOST_FORCEINLINE
328 typename result_of::funop2<
329 expr
330 , default_domain , const A0 , const A1
331 >::type const
332 operator ()(A0 const &a0 , A1 const &a1)
333 {
334 return result_of::funop2<
335 expr
336 , default_domain , const A0 , const A1
337 >::call(*this , a0 , a1);
338 }
339
340
341 template<typename A0 , typename A1 , typename A2>
342 BOOST_FORCEINLINE
343 typename result_of::funop3<
344 expr const
345 , default_domain , const A0 , const A1 , const A2
346 >::type const
347 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
348 {
349 return result_of::funop3<
350 expr const
351 , default_domain , const A0 , const A1 , const A2
352 >::call(*this , a0 , a1 , a2);
353 }
354
355
356 template<typename A0 , typename A1 , typename A2>
357 BOOST_FORCEINLINE
358 typename result_of::funop3<
359 expr
360 , default_domain , const A0 , const A1 , const A2
361 >::type const
362 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2)
363 {
364 return result_of::funop3<
365 expr
366 , default_domain , const A0 , const A1 , const A2
367 >::call(*this , a0 , a1 , a2);
368 }
369
370
371 template<typename A0 , typename A1 , typename A2 , typename A3>
372 BOOST_FORCEINLINE
373 typename result_of::funop4<
374 expr const
375 , default_domain , const A0 , const A1 , const A2 , const A3
376 >::type const
377 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
378 {
379 return result_of::funop4<
380 expr const
381 , default_domain , const A0 , const A1 , const A2 , const A3
382 >::call(*this , a0 , a1 , a2 , a3);
383 }
384
385
386 template<typename A0 , typename A1 , typename A2 , typename A3>
387 BOOST_FORCEINLINE
388 typename result_of::funop4<
389 expr
390 , default_domain , const A0 , const A1 , const A2 , const A3
391 >::type const
392 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3)
393 {
394 return result_of::funop4<
395 expr
396 , default_domain , const A0 , const A1 , const A2 , const A3
397 >::call(*this , a0 , a1 , a2 , a3);
398 }
399
400
401 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
402 BOOST_FORCEINLINE
403 typename result_of::funop5<
404 expr const
405 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
406 >::type const
407 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
408 {
409 return result_of::funop5<
410 expr const
411 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
412 >::call(*this , a0 , a1 , a2 , a3 , a4);
413 }
414
415
416 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
417 BOOST_FORCEINLINE
418 typename result_of::funop5<
419 expr
420 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
421 >::type const
422 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4)
423 {
424 return result_of::funop5<
425 expr
426 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
427 >::call(*this , a0 , a1 , a2 , a3 , a4);
428 }
429
430
431 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
432 BOOST_FORCEINLINE
433 typename result_of::funop6<
434 expr const
435 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
436 >::type const
437 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
438 {
439 return result_of::funop6<
440 expr const
441 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
442 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
443 }
444
445
446 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
447 BOOST_FORCEINLINE
448 typename result_of::funop6<
449 expr
450 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
451 >::type const
452 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5)
453 {
454 return result_of::funop6<
455 expr
456 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
457 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
458 }
459
460
461 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
462 BOOST_FORCEINLINE
463 typename result_of::funop7<
464 expr const
465 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
466 >::type const
467 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
468 {
469 return result_of::funop7<
470 expr const
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);
473 }
474
475
476 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
477 BOOST_FORCEINLINE
478 typename result_of::funop7<
479 expr
480 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
481 >::type const
482 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6)
483 {
484 return result_of::funop7<
485 expr
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);
488 }
489
490
491 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
492 BOOST_FORCEINLINE
493 typename result_of::funop8<
494 expr const
495 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
496 >::type const
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
498 {
499 return result_of::funop8<
500 expr const
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);
503 }
504
505
506 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
507 BOOST_FORCEINLINE
508 typename result_of::funop8<
509 expr
510 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
511 >::type const
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)
513 {
514 return result_of::funop8<
515 expr
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);
518 }
519
520
521 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
522 BOOST_FORCEINLINE
523 typename result_of::funop9<
524 expr const
525 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
526 >::type const
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
528 {
529 return result_of::funop9<
530 expr const
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);
533 }
534
535
536 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
537 BOOST_FORCEINLINE
538 typename result_of::funop9<
539 expr
540 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
541 >::type const
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)
543 {
544 return result_of::funop9<
545 expr
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);
548 }
549 };
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577 template<typename Tag , typename Arg0>
578 struct expr<Tag, list1<Arg0>, 1 >
579 {
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;
593
594
595 BOOST_FORCEINLINE
596 expr const &proto_base() const
597 {
598 return *this;
599 }
600
601
602 BOOST_FORCEINLINE
603 expr &proto_base()
604 {
605 return *this;
606 }
607
608
609
610 template<typename A0>
611 BOOST_FORCEINLINE
612 static expr const make(A0 const &a0)
613 {
614 expr that = {a0};
615 return that;
616 }
617
618
619
620 typedef typename detail::address_of_hack<Tag, proto_child0>::type address_of_hack_type_;
621
622
623
624
625
626
627
628 BOOST_FORCEINLINE
629 operator address_of_hack_type_() const
630 {
631 return boost::addressof(this->child0);
632 }
633
634
635
636
637 BOOST_FORCEINLINE
638 proto::expr<
639 proto::tag::assign
640 , list2<expr &, expr const &>
641 , 2
642 > const
643 operator =(expr const &a)
644 {
645 proto::expr<
646 proto::tag::assign
647 , list2<expr &, expr const &>
648 , 2
649 > that = {*this, a};
650 return that;
651 }
652
653
654
655
656 template<typename A>
657 BOOST_FORCEINLINE
658 proto::expr<
659 proto::tag::assign
660 , list2<expr const &, typename result_of::as_child<A>::type>
661 , 2
662 > const
663 operator =(A &a) const
664 {
665 proto::expr<
666 proto::tag::assign
667 , list2<expr const &, typename result_of::as_child<A>::type>
668 , 2
669 > that = {*this, proto::as_child(a)};
670 return that;
671 }
672
673
674 template<typename A>
675 BOOST_FORCEINLINE
676 proto::expr<
677 proto::tag::assign
678 , list2<expr const &, typename result_of::as_child<A const>::type>
679 , 2
680 > const
681 operator =(A const &a) const
682 {
683 proto::expr<
684 proto::tag::assign
685 , list2<expr const &, typename result_of::as_child<A const>::type>
686 , 2
687 > that = {*this, proto::as_child(a)};
688 return that;
689 }
690
691
692
693
694 template<typename A>
695 BOOST_FORCEINLINE
696 proto::expr<
697 proto::tag::subscript
698 , list2<expr const &, typename result_of::as_child<A>::type>
699 , 2
700 > const
701 operator [](A &a) const
702 {
703 proto::expr<
704 proto::tag::subscript
705 , list2<expr const &, typename result_of::as_child<A>::type>
706 , 2
707 > that = {*this, proto::as_child(a)};
708 return that;
709 }
710
711
712 template<typename A>
713 BOOST_FORCEINLINE
714 proto::expr<
715 proto::tag::subscript
716 , list2<expr const &, typename result_of::as_child<A const>::type>
717 , 2
718 > const
719 operator [](A const &a) const
720 {
721 proto::expr<
722 proto::tag::subscript
723 , list2<expr const &, typename result_of::as_child<A const>::type>
724 , 2
725 > that = {*this, proto::as_child(a)};
726 return that;
727 }
728
729
730 template<typename Sig>
731 struct result
732 {
733 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
734 };
735
736
737
738 BOOST_FORCEINLINE
739 proto::expr<proto::tag::function, list1<expr const &>, 1> const
740 operator ()() const
741 {
742 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
743 return that;
744 }
745
746
747 template<typename A0>
748 BOOST_FORCEINLINE
749 typename result_of::funop1<
750 expr const
751 , default_domain , const A0
752 >::type const
753 operator ()(A0 const &a0) const
754 {
755 return result_of::funop1<
756 expr const
757 , default_domain , const A0
758 >::call(*this , a0);
759 }
760
761
762 template<typename A0 , typename A1>
763 BOOST_FORCEINLINE
764 typename result_of::funop2<
765 expr const
766 , default_domain , const A0 , const A1
767 >::type const
768 operator ()(A0 const &a0 , A1 const &a1) const
769 {
770 return result_of::funop2<
771 expr const
772 , default_domain , const A0 , const A1
773 >::call(*this , a0 , a1);
774 }
775
776
777 template<typename A0 , typename A1 , typename A2>
778 BOOST_FORCEINLINE
779 typename result_of::funop3<
780 expr const
781 , default_domain , const A0 , const A1 , const A2
782 >::type const
783 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
784 {
785 return result_of::funop3<
786 expr const
787 , default_domain , const A0 , const A1 , const A2
788 >::call(*this , a0 , a1 , a2);
789 }
790
791
792 template<typename A0 , typename A1 , typename A2 , typename A3>
793 BOOST_FORCEINLINE
794 typename result_of::funop4<
795 expr const
796 , default_domain , const A0 , const A1 , const A2 , const A3
797 >::type const
798 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
799 {
800 return result_of::funop4<
801 expr const
802 , default_domain , const A0 , const A1 , const A2 , const A3
803 >::call(*this , a0 , a1 , a2 , a3);
804 }
805
806
807 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
808 BOOST_FORCEINLINE
809 typename result_of::funop5<
810 expr const
811 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
812 >::type const
813 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
814 {
815 return result_of::funop5<
816 expr const
817 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
818 >::call(*this , a0 , a1 , a2 , a3 , a4);
819 }
820
821
822 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
823 BOOST_FORCEINLINE
824 typename result_of::funop6<
825 expr const
826 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
827 >::type const
828 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
829 {
830 return result_of::funop6<
831 expr const
832 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
833 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
834 }
835
836
837 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
838 BOOST_FORCEINLINE
839 typename result_of::funop7<
840 expr const
841 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
842 >::type const
843 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
844 {
845 return result_of::funop7<
846 expr const
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);
849 }
850
851
852 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
853 BOOST_FORCEINLINE
854 typename result_of::funop8<
855 expr const
856 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
857 >::type const
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
859 {
860 return result_of::funop8<
861 expr const
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);
864 }
865
866
867 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
868 BOOST_FORCEINLINE
869 typename result_of::funop9<
870 expr const
871 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
872 >::type const
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
874 {
875 return result_of::funop9<
876 expr const
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);
879 }
880 };
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908 template<typename Tag , typename Arg0 , typename Arg1>
909 struct expr<Tag, list2<Arg0 , Arg1>, 2 >
910 {
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;
924
925
926 BOOST_FORCEINLINE
927 expr const &proto_base() const
928 {
929 return *this;
930 }
931
932
933 BOOST_FORCEINLINE
934 expr &proto_base()
935 {
936 return *this;
937 }
938
939
940
941 template<typename A0 , typename A1>
942 BOOST_FORCEINLINE
943 static expr const make(A0 const &a0 , A1 const &a1)
944 {
945 expr that = {a0 , a1};
946 return that;
947 }
948
949
950 typedef detail::not_a_valid_type address_of_hack_type_;
951
952
953
954
955 BOOST_FORCEINLINE
956 proto::expr<
957 proto::tag::assign
958 , list2<expr &, expr const &>
959 , 2
960 > const
961 operator =(expr const &a)
962 {
963 proto::expr<
964 proto::tag::assign
965 , list2<expr &, expr const &>
966 , 2
967 > that = {*this, a};
968 return that;
969 }
970
971
972
973
974 template<typename A>
975 BOOST_FORCEINLINE
976 proto::expr<
977 proto::tag::assign
978 , list2<expr const &, typename result_of::as_child<A>::type>
979 , 2
980 > const
981 operator =(A &a) const
982 {
983 proto::expr<
984 proto::tag::assign
985 , list2<expr const &, typename result_of::as_child<A>::type>
986 , 2
987 > that = {*this, proto::as_child(a)};
988 return that;
989 }
990
991
992 template<typename A>
993 BOOST_FORCEINLINE
994 proto::expr<
995 proto::tag::assign
996 , list2<expr const &, typename result_of::as_child<A const>::type>
997 , 2
998 > const
999 operator =(A const &a) const
1000 {
1001 proto::expr<
1002 proto::tag::assign
1003 , list2<expr const &, typename result_of::as_child<A const>::type>
1004 , 2
1005 > that = {*this, proto::as_child(a)};
1006 return that;
1007 }
1008
1009
1010
1011
1012 template<typename A>
1013 BOOST_FORCEINLINE
1014 proto::expr<
1015 proto::tag::subscript
1016 , list2<expr const &, typename result_of::as_child<A>::type>
1017 , 2
1018 > const
1019 operator [](A &a) const
1020 {
1021 proto::expr<
1022 proto::tag::subscript
1023 , list2<expr const &, typename result_of::as_child<A>::type>
1024 , 2
1025 > that = {*this, proto::as_child(a)};
1026 return that;
1027 }
1028
1029
1030 template<typename A>
1031 BOOST_FORCEINLINE
1032 proto::expr<
1033 proto::tag::subscript
1034 , list2<expr const &, typename result_of::as_child<A const>::type>
1035 , 2
1036 > const
1037 operator [](A const &a) const
1038 {
1039 proto::expr<
1040 proto::tag::subscript
1041 , list2<expr const &, typename result_of::as_child<A const>::type>
1042 , 2
1043 > that = {*this, proto::as_child(a)};
1044 return that;
1045 }
1046
1047
1048 template<typename Sig>
1049 struct result
1050 {
1051 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
1052 };
1053
1054
1055
1056 BOOST_FORCEINLINE
1057 proto::expr<proto::tag::function, list1<expr const &>, 1> const
1058 operator ()() const
1059 {
1060 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
1061 return that;
1062 }
1063
1064
1065 template<typename A0>
1066 BOOST_FORCEINLINE
1067 typename result_of::funop1<
1068 expr const
1069 , default_domain , const A0
1070 >::type const
1071 operator ()(A0 const &a0) const
1072 {
1073 return result_of::funop1<
1074 expr const
1075 , default_domain , const A0
1076 >::call(*this , a0);
1077 }
1078
1079
1080 template<typename A0 , typename A1>
1081 BOOST_FORCEINLINE
1082 typename result_of::funop2<
1083 expr const
1084 , default_domain , const A0 , const A1
1085 >::type const
1086 operator ()(A0 const &a0 , A1 const &a1) const
1087 {
1088 return result_of::funop2<
1089 expr const
1090 , default_domain , const A0 , const A1
1091 >::call(*this , a0 , a1);
1092 }
1093
1094
1095 template<typename A0 , typename A1 , typename A2>
1096 BOOST_FORCEINLINE
1097 typename result_of::funop3<
1098 expr const
1099 , default_domain , const A0 , const A1 , const A2
1100 >::type const
1101 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
1102 {
1103 return result_of::funop3<
1104 expr const
1105 , default_domain , const A0 , const A1 , const A2
1106 >::call(*this , a0 , a1 , a2);
1107 }
1108
1109
1110 template<typename A0 , typename A1 , typename A2 , typename A3>
1111 BOOST_FORCEINLINE
1112 typename result_of::funop4<
1113 expr const
1114 , default_domain , const A0 , const A1 , const A2 , const A3
1115 >::type const
1116 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
1117 {
1118 return result_of::funop4<
1119 expr const
1120 , default_domain , const A0 , const A1 , const A2 , const A3
1121 >::call(*this , a0 , a1 , a2 , a3);
1122 }
1123
1124
1125 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
1126 BOOST_FORCEINLINE
1127 typename result_of::funop5<
1128 expr const
1129 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
1130 >::type const
1131 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
1132 {
1133 return result_of::funop5<
1134 expr const
1135 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
1136 >::call(*this , a0 , a1 , a2 , a3 , a4);
1137 }
1138
1139
1140 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
1141 BOOST_FORCEINLINE
1142 typename result_of::funop6<
1143 expr const
1144 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
1145 >::type const
1146 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
1147 {
1148 return result_of::funop6<
1149 expr const
1150 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
1151 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
1152 }
1153
1154
1155 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
1156 BOOST_FORCEINLINE
1157 typename result_of::funop7<
1158 expr const
1159 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
1160 >::type const
1161 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
1162 {
1163 return result_of::funop7<
1164 expr const
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);
1167 }
1168
1169
1170 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
1171 BOOST_FORCEINLINE
1172 typename result_of::funop8<
1173 expr const
1174 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
1175 >::type const
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
1177 {
1178 return result_of::funop8<
1179 expr const
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);
1182 }
1183
1184
1185 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
1186 BOOST_FORCEINLINE
1187 typename result_of::funop9<
1188 expr const
1189 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
1190 >::type const
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
1192 {
1193 return result_of::funop9<
1194 expr const
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);
1197 }
1198 };
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2>
1227 struct expr<Tag, list3<Arg0 , Arg1 , Arg2>, 3 >
1228 {
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;
1242
1243
1244 BOOST_FORCEINLINE
1245 expr const &proto_base() const
1246 {
1247 return *this;
1248 }
1249
1250
1251 BOOST_FORCEINLINE
1252 expr &proto_base()
1253 {
1254 return *this;
1255 }
1256
1257
1258
1259 template<typename A0 , typename A1 , typename A2>
1260 BOOST_FORCEINLINE
1261 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2)
1262 {
1263 expr that = {a0 , a1 , a2};
1264 return that;
1265 }
1266
1267
1268 typedef detail::not_a_valid_type address_of_hack_type_;
1269
1270
1271
1272
1273 BOOST_FORCEINLINE
1274 proto::expr<
1275 proto::tag::assign
1276 , list2<expr &, expr const &>
1277 , 2
1278 > const
1279 operator =(expr const &a)
1280 {
1281 proto::expr<
1282 proto::tag::assign
1283 , list2<expr &, expr const &>
1284 , 2
1285 > that = {*this, a};
1286 return that;
1287 }
1288
1289
1290
1291
1292 template<typename A>
1293 BOOST_FORCEINLINE
1294 proto::expr<
1295 proto::tag::assign
1296 , list2<expr const &, typename result_of::as_child<A>::type>
1297 , 2
1298 > const
1299 operator =(A &a) const
1300 {
1301 proto::expr<
1302 proto::tag::assign
1303 , list2<expr const &, typename result_of::as_child<A>::type>
1304 , 2
1305 > that = {*this, proto::as_child(a)};
1306 return that;
1307 }
1308
1309
1310 template<typename A>
1311 BOOST_FORCEINLINE
1312 proto::expr<
1313 proto::tag::assign
1314 , list2<expr const &, typename result_of::as_child<A const>::type>
1315 , 2
1316 > const
1317 operator =(A const &a) const
1318 {
1319 proto::expr<
1320 proto::tag::assign
1321 , list2<expr const &, typename result_of::as_child<A const>::type>
1322 , 2
1323 > that = {*this, proto::as_child(a)};
1324 return that;
1325 }
1326
1327
1328
1329
1330 template<typename A>
1331 BOOST_FORCEINLINE
1332 proto::expr<
1333 proto::tag::subscript
1334 , list2<expr const &, typename result_of::as_child<A>::type>
1335 , 2
1336 > const
1337 operator [](A &a) const
1338 {
1339 proto::expr<
1340 proto::tag::subscript
1341 , list2<expr const &, typename result_of::as_child<A>::type>
1342 , 2
1343 > that = {*this, proto::as_child(a)};
1344 return that;
1345 }
1346
1347
1348 template<typename A>
1349 BOOST_FORCEINLINE
1350 proto::expr<
1351 proto::tag::subscript
1352 , list2<expr const &, typename result_of::as_child<A const>::type>
1353 , 2
1354 > const
1355 operator [](A const &a) const
1356 {
1357 proto::expr<
1358 proto::tag::subscript
1359 , list2<expr const &, typename result_of::as_child<A const>::type>
1360 , 2
1361 > that = {*this, proto::as_child(a)};
1362 return that;
1363 }
1364
1365
1366 template<typename Sig>
1367 struct result
1368 {
1369 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
1370 };
1371
1372
1373
1374 BOOST_FORCEINLINE
1375 proto::expr<proto::tag::function, list1<expr const &>, 1> const
1376 operator ()() const
1377 {
1378 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
1379 return that;
1380 }
1381
1382
1383 template<typename A0>
1384 BOOST_FORCEINLINE
1385 typename result_of::funop1<
1386 expr const
1387 , default_domain , const A0
1388 >::type const
1389 operator ()(A0 const &a0) const
1390 {
1391 return result_of::funop1<
1392 expr const
1393 , default_domain , const A0
1394 >::call(*this , a0);
1395 }
1396
1397
1398 template<typename A0 , typename A1>
1399 BOOST_FORCEINLINE
1400 typename result_of::funop2<
1401 expr const
1402 , default_domain , const A0 , const A1
1403 >::type const
1404 operator ()(A0 const &a0 , A1 const &a1) const
1405 {
1406 return result_of::funop2<
1407 expr const
1408 , default_domain , const A0 , const A1
1409 >::call(*this , a0 , a1);
1410 }
1411
1412
1413 template<typename A0 , typename A1 , typename A2>
1414 BOOST_FORCEINLINE
1415 typename result_of::funop3<
1416 expr const
1417 , default_domain , const A0 , const A1 , const A2
1418 >::type const
1419 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
1420 {
1421 return result_of::funop3<
1422 expr const
1423 , default_domain , const A0 , const A1 , const A2
1424 >::call(*this , a0 , a1 , a2);
1425 }
1426
1427
1428 template<typename A0 , typename A1 , typename A2 , typename A3>
1429 BOOST_FORCEINLINE
1430 typename result_of::funop4<
1431 expr const
1432 , default_domain , const A0 , const A1 , const A2 , const A3
1433 >::type const
1434 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
1435 {
1436 return result_of::funop4<
1437 expr const
1438 , default_domain , const A0 , const A1 , const A2 , const A3
1439 >::call(*this , a0 , a1 , a2 , a3);
1440 }
1441
1442
1443 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
1444 BOOST_FORCEINLINE
1445 typename result_of::funop5<
1446 expr const
1447 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
1448 >::type const
1449 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
1450 {
1451 return result_of::funop5<
1452 expr const
1453 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
1454 >::call(*this , a0 , a1 , a2 , a3 , a4);
1455 }
1456
1457
1458 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
1459 BOOST_FORCEINLINE
1460 typename result_of::funop6<
1461 expr const
1462 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
1463 >::type const
1464 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
1465 {
1466 return result_of::funop6<
1467 expr const
1468 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
1469 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
1470 }
1471
1472
1473 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
1474 BOOST_FORCEINLINE
1475 typename result_of::funop7<
1476 expr const
1477 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
1478 >::type const
1479 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
1480 {
1481 return result_of::funop7<
1482 expr const
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);
1485 }
1486
1487
1488 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
1489 BOOST_FORCEINLINE
1490 typename result_of::funop8<
1491 expr const
1492 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
1493 >::type const
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
1495 {
1496 return result_of::funop8<
1497 expr const
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);
1500 }
1501
1502
1503 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
1504 BOOST_FORCEINLINE
1505 typename result_of::funop9<
1506 expr const
1507 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
1508 >::type const
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
1510 {
1511 return result_of::funop9<
1512 expr const
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);
1515 }
1516 };
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544 template<typename Tag , typename Arg0 , typename Arg1 , typename Arg2 , typename Arg3>
1545 struct expr<Tag, list4<Arg0 , Arg1 , Arg2 , Arg3>, 4 >
1546 {
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;
1560
1561
1562 BOOST_FORCEINLINE
1563 expr const &proto_base() const
1564 {
1565 return *this;
1566 }
1567
1568
1569 BOOST_FORCEINLINE
1570 expr &proto_base()
1571 {
1572 return *this;
1573 }
1574
1575
1576
1577 template<typename A0 , typename A1 , typename A2 , typename A3>
1578 BOOST_FORCEINLINE
1579 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3)
1580 {
1581 expr that = {a0 , a1 , a2 , a3};
1582 return that;
1583 }
1584
1585
1586 typedef detail::not_a_valid_type address_of_hack_type_;
1587
1588
1589
1590
1591 BOOST_FORCEINLINE
1592 proto::expr<
1593 proto::tag::assign
1594 , list2<expr &, expr const &>
1595 , 2
1596 > const
1597 operator =(expr const &a)
1598 {
1599 proto::expr<
1600 proto::tag::assign
1601 , list2<expr &, expr const &>
1602 , 2
1603 > that = {*this, a};
1604 return that;
1605 }
1606
1607
1608
1609
1610 template<typename A>
1611 BOOST_FORCEINLINE
1612 proto::expr<
1613 proto::tag::assign
1614 , list2<expr const &, typename result_of::as_child<A>::type>
1615 , 2
1616 > const
1617 operator =(A &a) const
1618 {
1619 proto::expr<
1620 proto::tag::assign
1621 , list2<expr const &, typename result_of::as_child<A>::type>
1622 , 2
1623 > that = {*this, proto::as_child(a)};
1624 return that;
1625 }
1626
1627
1628 template<typename A>
1629 BOOST_FORCEINLINE
1630 proto::expr<
1631 proto::tag::assign
1632 , list2<expr const &, typename result_of::as_child<A const>::type>
1633 , 2
1634 > const
1635 operator =(A const &a) const
1636 {
1637 proto::expr<
1638 proto::tag::assign
1639 , list2<expr const &, typename result_of::as_child<A const>::type>
1640 , 2
1641 > that = {*this, proto::as_child(a)};
1642 return that;
1643 }
1644
1645
1646
1647
1648 template<typename A>
1649 BOOST_FORCEINLINE
1650 proto::expr<
1651 proto::tag::subscript
1652 , list2<expr const &, typename result_of::as_child<A>::type>
1653 , 2
1654 > const
1655 operator [](A &a) const
1656 {
1657 proto::expr<
1658 proto::tag::subscript
1659 , list2<expr const &, typename result_of::as_child<A>::type>
1660 , 2
1661 > that = {*this, proto::as_child(a)};
1662 return that;
1663 }
1664
1665
1666 template<typename A>
1667 BOOST_FORCEINLINE
1668 proto::expr<
1669 proto::tag::subscript
1670 , list2<expr const &, typename result_of::as_child<A const>::type>
1671 , 2
1672 > const
1673 operator [](A const &a) const
1674 {
1675 proto::expr<
1676 proto::tag::subscript
1677 , list2<expr const &, typename result_of::as_child<A const>::type>
1678 , 2
1679 > that = {*this, proto::as_child(a)};
1680 return that;
1681 }
1682
1683
1684 template<typename Sig>
1685 struct result
1686 {
1687 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
1688 };
1689
1690
1691
1692 BOOST_FORCEINLINE
1693 proto::expr<proto::tag::function, list1<expr const &>, 1> const
1694 operator ()() const
1695 {
1696 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
1697 return that;
1698 }
1699
1700
1701 template<typename A0>
1702 BOOST_FORCEINLINE
1703 typename result_of::funop1<
1704 expr const
1705 , default_domain , const A0
1706 >::type const
1707 operator ()(A0 const &a0) const
1708 {
1709 return result_of::funop1<
1710 expr const
1711 , default_domain , const A0
1712 >::call(*this , a0);
1713 }
1714
1715
1716 template<typename A0 , typename A1>
1717 BOOST_FORCEINLINE
1718 typename result_of::funop2<
1719 expr const
1720 , default_domain , const A0 , const A1
1721 >::type const
1722 operator ()(A0 const &a0 , A1 const &a1) const
1723 {
1724 return result_of::funop2<
1725 expr const
1726 , default_domain , const A0 , const A1
1727 >::call(*this , a0 , a1);
1728 }
1729
1730
1731 template<typename A0 , typename A1 , typename A2>
1732 BOOST_FORCEINLINE
1733 typename result_of::funop3<
1734 expr const
1735 , default_domain , const A0 , const A1 , const A2
1736 >::type const
1737 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
1738 {
1739 return result_of::funop3<
1740 expr const
1741 , default_domain , const A0 , const A1 , const A2
1742 >::call(*this , a0 , a1 , a2);
1743 }
1744
1745
1746 template<typename A0 , typename A1 , typename A2 , typename A3>
1747 BOOST_FORCEINLINE
1748 typename result_of::funop4<
1749 expr const
1750 , default_domain , const A0 , const A1 , const A2 , const A3
1751 >::type const
1752 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
1753 {
1754 return result_of::funop4<
1755 expr const
1756 , default_domain , const A0 , const A1 , const A2 , const A3
1757 >::call(*this , a0 , a1 , a2 , a3);
1758 }
1759
1760
1761 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
1762 BOOST_FORCEINLINE
1763 typename result_of::funop5<
1764 expr const
1765 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
1766 >::type const
1767 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
1768 {
1769 return result_of::funop5<
1770 expr const
1771 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
1772 >::call(*this , a0 , a1 , a2 , a3 , a4);
1773 }
1774
1775
1776 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
1777 BOOST_FORCEINLINE
1778 typename result_of::funop6<
1779 expr const
1780 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
1781 >::type const
1782 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
1783 {
1784 return result_of::funop6<
1785 expr const
1786 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
1787 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
1788 }
1789
1790
1791 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
1792 BOOST_FORCEINLINE
1793 typename result_of::funop7<
1794 expr const
1795 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
1796 >::type const
1797 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
1798 {
1799 return result_of::funop7<
1800 expr const
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);
1803 }
1804
1805
1806 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
1807 BOOST_FORCEINLINE
1808 typename result_of::funop8<
1809 expr const
1810 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
1811 >::type const
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
1813 {
1814 return result_of::funop8<
1815 expr const
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);
1818 }
1819
1820
1821 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
1822 BOOST_FORCEINLINE
1823 typename result_of::funop9<
1824 expr const
1825 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
1826 >::type const
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
1828 {
1829 return result_of::funop9<
1830 expr const
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);
1833 }
1834 };
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
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 >
1864 {
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;
1878
1879
1880 BOOST_FORCEINLINE
1881 expr const &proto_base() const
1882 {
1883 return *this;
1884 }
1885
1886
1887 BOOST_FORCEINLINE
1888 expr &proto_base()
1889 {
1890 return *this;
1891 }
1892
1893
1894
1895 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
1896 BOOST_FORCEINLINE
1897 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4)
1898 {
1899 expr that = {a0 , a1 , a2 , a3 , a4};
1900 return that;
1901 }
1902
1903
1904 typedef detail::not_a_valid_type address_of_hack_type_;
1905
1906
1907
1908
1909 BOOST_FORCEINLINE
1910 proto::expr<
1911 proto::tag::assign
1912 , list2<expr &, expr const &>
1913 , 2
1914 > const
1915 operator =(expr const &a)
1916 {
1917 proto::expr<
1918 proto::tag::assign
1919 , list2<expr &, expr const &>
1920 , 2
1921 > that = {*this, a};
1922 return that;
1923 }
1924
1925
1926
1927
1928 template<typename A>
1929 BOOST_FORCEINLINE
1930 proto::expr<
1931 proto::tag::assign
1932 , list2<expr const &, typename result_of::as_child<A>::type>
1933 , 2
1934 > const
1935 operator =(A &a) const
1936 {
1937 proto::expr<
1938 proto::tag::assign
1939 , list2<expr const &, typename result_of::as_child<A>::type>
1940 , 2
1941 > that = {*this, proto::as_child(a)};
1942 return that;
1943 }
1944
1945
1946 template<typename A>
1947 BOOST_FORCEINLINE
1948 proto::expr<
1949 proto::tag::assign
1950 , list2<expr const &, typename result_of::as_child<A const>::type>
1951 , 2
1952 > const
1953 operator =(A const &a) const
1954 {
1955 proto::expr<
1956 proto::tag::assign
1957 , list2<expr const &, typename result_of::as_child<A const>::type>
1958 , 2
1959 > that = {*this, proto::as_child(a)};
1960 return that;
1961 }
1962
1963
1964
1965
1966 template<typename A>
1967 BOOST_FORCEINLINE
1968 proto::expr<
1969 proto::tag::subscript
1970 , list2<expr const &, typename result_of::as_child<A>::type>
1971 , 2
1972 > const
1973 operator [](A &a) const
1974 {
1975 proto::expr<
1976 proto::tag::subscript
1977 , list2<expr const &, typename result_of::as_child<A>::type>
1978 , 2
1979 > that = {*this, proto::as_child(a)};
1980 return that;
1981 }
1982
1983
1984 template<typename A>
1985 BOOST_FORCEINLINE
1986 proto::expr<
1987 proto::tag::subscript
1988 , list2<expr const &, typename result_of::as_child<A const>::type>
1989 , 2
1990 > const
1991 operator [](A const &a) const
1992 {
1993 proto::expr<
1994 proto::tag::subscript
1995 , list2<expr const &, typename result_of::as_child<A const>::type>
1996 , 2
1997 > that = {*this, proto::as_child(a)};
1998 return that;
1999 }
2000
2001
2002 template<typename Sig>
2003 struct result
2004 {
2005 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
2006 };
2007
2008
2009
2010 BOOST_FORCEINLINE
2011 proto::expr<proto::tag::function, list1<expr const &>, 1> const
2012 operator ()() const
2013 {
2014 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
2015 return that;
2016 }
2017
2018
2019 template<typename A0>
2020 BOOST_FORCEINLINE
2021 typename result_of::funop1<
2022 expr const
2023 , default_domain , const A0
2024 >::type const
2025 operator ()(A0 const &a0) const
2026 {
2027 return result_of::funop1<
2028 expr const
2029 , default_domain , const A0
2030 >::call(*this , a0);
2031 }
2032
2033
2034 template<typename A0 , typename A1>
2035 BOOST_FORCEINLINE
2036 typename result_of::funop2<
2037 expr const
2038 , default_domain , const A0 , const A1
2039 >::type const
2040 operator ()(A0 const &a0 , A1 const &a1) const
2041 {
2042 return result_of::funop2<
2043 expr const
2044 , default_domain , const A0 , const A1
2045 >::call(*this , a0 , a1);
2046 }
2047
2048
2049 template<typename A0 , typename A1 , typename A2>
2050 BOOST_FORCEINLINE
2051 typename result_of::funop3<
2052 expr const
2053 , default_domain , const A0 , const A1 , const A2
2054 >::type const
2055 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
2056 {
2057 return result_of::funop3<
2058 expr const
2059 , default_domain , const A0 , const A1 , const A2
2060 >::call(*this , a0 , a1 , a2);
2061 }
2062
2063
2064 template<typename A0 , typename A1 , typename A2 , typename A3>
2065 BOOST_FORCEINLINE
2066 typename result_of::funop4<
2067 expr const
2068 , default_domain , const A0 , const A1 , const A2 , const A3
2069 >::type const
2070 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
2071 {
2072 return result_of::funop4<
2073 expr const
2074 , default_domain , const A0 , const A1 , const A2 , const A3
2075 >::call(*this , a0 , a1 , a2 , a3);
2076 }
2077
2078
2079 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
2080 BOOST_FORCEINLINE
2081 typename result_of::funop5<
2082 expr const
2083 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
2084 >::type const
2085 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
2086 {
2087 return result_of::funop5<
2088 expr const
2089 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
2090 >::call(*this , a0 , a1 , a2 , a3 , a4);
2091 }
2092
2093
2094 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
2095 BOOST_FORCEINLINE
2096 typename result_of::funop6<
2097 expr const
2098 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
2099 >::type const
2100 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
2101 {
2102 return result_of::funop6<
2103 expr const
2104 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
2105 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
2106 }
2107
2108
2109 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
2110 BOOST_FORCEINLINE
2111 typename result_of::funop7<
2112 expr const
2113 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
2114 >::type const
2115 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
2116 {
2117 return result_of::funop7<
2118 expr const
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);
2121 }
2122
2123
2124 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
2125 BOOST_FORCEINLINE
2126 typename result_of::funop8<
2127 expr const
2128 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
2129 >::type const
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
2131 {
2132 return result_of::funop8<
2133 expr const
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);
2136 }
2137
2138
2139 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
2140 BOOST_FORCEINLINE
2141 typename result_of::funop9<
2142 expr const
2143 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
2144 >::type const
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
2146 {
2147 return result_of::funop9<
2148 expr const
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);
2151 }
2152 };
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
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 >
2182 {
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;
2196
2197
2198 BOOST_FORCEINLINE
2199 expr const &proto_base() const
2200 {
2201 return *this;
2202 }
2203
2204
2205 BOOST_FORCEINLINE
2206 expr &proto_base()
2207 {
2208 return *this;
2209 }
2210
2211
2212
2213 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
2214 BOOST_FORCEINLINE
2215 static expr const make(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5)
2216 {
2217 expr that = {a0 , a1 , a2 , a3 , a4 , a5};
2218 return that;
2219 }
2220
2221
2222 typedef detail::not_a_valid_type address_of_hack_type_;
2223
2224
2225
2226
2227 BOOST_FORCEINLINE
2228 proto::expr<
2229 proto::tag::assign
2230 , list2<expr &, expr const &>
2231 , 2
2232 > const
2233 operator =(expr const &a)
2234 {
2235 proto::expr<
2236 proto::tag::assign
2237 , list2<expr &, expr const &>
2238 , 2
2239 > that = {*this, a};
2240 return that;
2241 }
2242
2243
2244
2245
2246 template<typename A>
2247 BOOST_FORCEINLINE
2248 proto::expr<
2249 proto::tag::assign
2250 , list2<expr const &, typename result_of::as_child<A>::type>
2251 , 2
2252 > const
2253 operator =(A &a) const
2254 {
2255 proto::expr<
2256 proto::tag::assign
2257 , list2<expr const &, typename result_of::as_child<A>::type>
2258 , 2
2259 > that = {*this, proto::as_child(a)};
2260 return that;
2261 }
2262
2263
2264 template<typename A>
2265 BOOST_FORCEINLINE
2266 proto::expr<
2267 proto::tag::assign
2268 , list2<expr const &, typename result_of::as_child<A const>::type>
2269 , 2
2270 > const
2271 operator =(A const &a) const
2272 {
2273 proto::expr<
2274 proto::tag::assign
2275 , list2<expr const &, typename result_of::as_child<A const>::type>
2276 , 2
2277 > that = {*this, proto::as_child(a)};
2278 return that;
2279 }
2280
2281
2282
2283
2284 template<typename A>
2285 BOOST_FORCEINLINE
2286 proto::expr<
2287 proto::tag::subscript
2288 , list2<expr const &, typename result_of::as_child<A>::type>
2289 , 2
2290 > const
2291 operator [](A &a) const
2292 {
2293 proto::expr<
2294 proto::tag::subscript
2295 , list2<expr const &, typename result_of::as_child<A>::type>
2296 , 2
2297 > that = {*this, proto::as_child(a)};
2298 return that;
2299 }
2300
2301
2302 template<typename A>
2303 BOOST_FORCEINLINE
2304 proto::expr<
2305 proto::tag::subscript
2306 , list2<expr const &, typename result_of::as_child<A const>::type>
2307 , 2
2308 > const
2309 operator [](A const &a) const
2310 {
2311 proto::expr<
2312 proto::tag::subscript
2313 , list2<expr const &, typename result_of::as_child<A const>::type>
2314 , 2
2315 > that = {*this, proto::as_child(a)};
2316 return that;
2317 }
2318
2319
2320 template<typename Sig>
2321 struct result
2322 {
2323 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
2324 };
2325
2326
2327
2328 BOOST_FORCEINLINE
2329 proto::expr<proto::tag::function, list1<expr const &>, 1> const
2330 operator ()() const
2331 {
2332 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
2333 return that;
2334 }
2335
2336
2337 template<typename A0>
2338 BOOST_FORCEINLINE
2339 typename result_of::funop1<
2340 expr const
2341 , default_domain , const A0
2342 >::type const
2343 operator ()(A0 const &a0) const
2344 {
2345 return result_of::funop1<
2346 expr const
2347 , default_domain , const A0
2348 >::call(*this , a0);
2349 }
2350
2351
2352 template<typename A0 , typename A1>
2353 BOOST_FORCEINLINE
2354 typename result_of::funop2<
2355 expr const
2356 , default_domain , const A0 , const A1
2357 >::type const
2358 operator ()(A0 const &a0 , A1 const &a1) const
2359 {
2360 return result_of::funop2<
2361 expr const
2362 , default_domain , const A0 , const A1
2363 >::call(*this , a0 , a1);
2364 }
2365
2366
2367 template<typename A0 , typename A1 , typename A2>
2368 BOOST_FORCEINLINE
2369 typename result_of::funop3<
2370 expr const
2371 , default_domain , const A0 , const A1 , const A2
2372 >::type const
2373 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
2374 {
2375 return result_of::funop3<
2376 expr const
2377 , default_domain , const A0 , const A1 , const A2
2378 >::call(*this , a0 , a1 , a2);
2379 }
2380
2381
2382 template<typename A0 , typename A1 , typename A2 , typename A3>
2383 BOOST_FORCEINLINE
2384 typename result_of::funop4<
2385 expr const
2386 , default_domain , const A0 , const A1 , const A2 , const A3
2387 >::type const
2388 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
2389 {
2390 return result_of::funop4<
2391 expr const
2392 , default_domain , const A0 , const A1 , const A2 , const A3
2393 >::call(*this , a0 , a1 , a2 , a3);
2394 }
2395
2396
2397 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
2398 BOOST_FORCEINLINE
2399 typename result_of::funop5<
2400 expr const
2401 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
2402 >::type const
2403 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
2404 {
2405 return result_of::funop5<
2406 expr const
2407 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
2408 >::call(*this , a0 , a1 , a2 , a3 , a4);
2409 }
2410
2411
2412 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
2413 BOOST_FORCEINLINE
2414 typename result_of::funop6<
2415 expr const
2416 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
2417 >::type const
2418 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
2419 {
2420 return result_of::funop6<
2421 expr const
2422 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
2423 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
2424 }
2425
2426
2427 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
2428 BOOST_FORCEINLINE
2429 typename result_of::funop7<
2430 expr const
2431 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
2432 >::type const
2433 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
2434 {
2435 return result_of::funop7<
2436 expr const
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);
2439 }
2440
2441
2442 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
2443 BOOST_FORCEINLINE
2444 typename result_of::funop8<
2445 expr const
2446 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
2447 >::type const
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
2449 {
2450 return result_of::funop8<
2451 expr const
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);
2454 }
2455
2456
2457 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
2458 BOOST_FORCEINLINE
2459 typename result_of::funop9<
2460 expr const
2461 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
2462 >::type const
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
2464 {
2465 return result_of::funop9<
2466 expr const
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);
2469 }
2470 };
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
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 >
2500 {
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;
2514
2515
2516 BOOST_FORCEINLINE
2517 expr const &proto_base() const
2518 {
2519 return *this;
2520 }
2521
2522
2523 BOOST_FORCEINLINE
2524 expr &proto_base()
2525 {
2526 return *this;
2527 }
2528
2529
2530
2531 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
2532 BOOST_FORCEINLINE
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)
2534 {
2535 expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6};
2536 return that;
2537 }
2538
2539
2540 typedef detail::not_a_valid_type address_of_hack_type_;
2541
2542
2543
2544
2545 BOOST_FORCEINLINE
2546 proto::expr<
2547 proto::tag::assign
2548 , list2<expr &, expr const &>
2549 , 2
2550 > const
2551 operator =(expr const &a)
2552 {
2553 proto::expr<
2554 proto::tag::assign
2555 , list2<expr &, expr const &>
2556 , 2
2557 > that = {*this, a};
2558 return that;
2559 }
2560
2561
2562
2563
2564 template<typename A>
2565 BOOST_FORCEINLINE
2566 proto::expr<
2567 proto::tag::assign
2568 , list2<expr const &, typename result_of::as_child<A>::type>
2569 , 2
2570 > const
2571 operator =(A &a) const
2572 {
2573 proto::expr<
2574 proto::tag::assign
2575 , list2<expr const &, typename result_of::as_child<A>::type>
2576 , 2
2577 > that = {*this, proto::as_child(a)};
2578 return that;
2579 }
2580
2581
2582 template<typename A>
2583 BOOST_FORCEINLINE
2584 proto::expr<
2585 proto::tag::assign
2586 , list2<expr const &, typename result_of::as_child<A const>::type>
2587 , 2
2588 > const
2589 operator =(A const &a) const
2590 {
2591 proto::expr<
2592 proto::tag::assign
2593 , list2<expr const &, typename result_of::as_child<A const>::type>
2594 , 2
2595 > that = {*this, proto::as_child(a)};
2596 return that;
2597 }
2598
2599
2600
2601
2602 template<typename A>
2603 BOOST_FORCEINLINE
2604 proto::expr<
2605 proto::tag::subscript
2606 , list2<expr const &, typename result_of::as_child<A>::type>
2607 , 2
2608 > const
2609 operator [](A &a) const
2610 {
2611 proto::expr<
2612 proto::tag::subscript
2613 , list2<expr const &, typename result_of::as_child<A>::type>
2614 , 2
2615 > that = {*this, proto::as_child(a)};
2616 return that;
2617 }
2618
2619
2620 template<typename A>
2621 BOOST_FORCEINLINE
2622 proto::expr<
2623 proto::tag::subscript
2624 , list2<expr const &, typename result_of::as_child<A const>::type>
2625 , 2
2626 > const
2627 operator [](A const &a) const
2628 {
2629 proto::expr<
2630 proto::tag::subscript
2631 , list2<expr const &, typename result_of::as_child<A const>::type>
2632 , 2
2633 > that = {*this, proto::as_child(a)};
2634 return that;
2635 }
2636
2637
2638 template<typename Sig>
2639 struct result
2640 {
2641 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
2642 };
2643
2644
2645
2646 BOOST_FORCEINLINE
2647 proto::expr<proto::tag::function, list1<expr const &>, 1> const
2648 operator ()() const
2649 {
2650 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
2651 return that;
2652 }
2653
2654
2655 template<typename A0>
2656 BOOST_FORCEINLINE
2657 typename result_of::funop1<
2658 expr const
2659 , default_domain , const A0
2660 >::type const
2661 operator ()(A0 const &a0) const
2662 {
2663 return result_of::funop1<
2664 expr const
2665 , default_domain , const A0
2666 >::call(*this , a0);
2667 }
2668
2669
2670 template<typename A0 , typename A1>
2671 BOOST_FORCEINLINE
2672 typename result_of::funop2<
2673 expr const
2674 , default_domain , const A0 , const A1
2675 >::type const
2676 operator ()(A0 const &a0 , A1 const &a1) const
2677 {
2678 return result_of::funop2<
2679 expr const
2680 , default_domain , const A0 , const A1
2681 >::call(*this , a0 , a1);
2682 }
2683
2684
2685 template<typename A0 , typename A1 , typename A2>
2686 BOOST_FORCEINLINE
2687 typename result_of::funop3<
2688 expr const
2689 , default_domain , const A0 , const A1 , const A2
2690 >::type const
2691 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
2692 {
2693 return result_of::funop3<
2694 expr const
2695 , default_domain , const A0 , const A1 , const A2
2696 >::call(*this , a0 , a1 , a2);
2697 }
2698
2699
2700 template<typename A0 , typename A1 , typename A2 , typename A3>
2701 BOOST_FORCEINLINE
2702 typename result_of::funop4<
2703 expr const
2704 , default_domain , const A0 , const A1 , const A2 , const A3
2705 >::type const
2706 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
2707 {
2708 return result_of::funop4<
2709 expr const
2710 , default_domain , const A0 , const A1 , const A2 , const A3
2711 >::call(*this , a0 , a1 , a2 , a3);
2712 }
2713
2714
2715 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
2716 BOOST_FORCEINLINE
2717 typename result_of::funop5<
2718 expr const
2719 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
2720 >::type const
2721 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
2722 {
2723 return result_of::funop5<
2724 expr const
2725 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
2726 >::call(*this , a0 , a1 , a2 , a3 , a4);
2727 }
2728
2729
2730 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
2731 BOOST_FORCEINLINE
2732 typename result_of::funop6<
2733 expr const
2734 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
2735 >::type const
2736 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
2737 {
2738 return result_of::funop6<
2739 expr const
2740 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
2741 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
2742 }
2743
2744
2745 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
2746 BOOST_FORCEINLINE
2747 typename result_of::funop7<
2748 expr const
2749 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
2750 >::type const
2751 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
2752 {
2753 return result_of::funop7<
2754 expr const
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);
2757 }
2758
2759
2760 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
2761 BOOST_FORCEINLINE
2762 typename result_of::funop8<
2763 expr const
2764 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
2765 >::type const
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
2767 {
2768 return result_of::funop8<
2769 expr const
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);
2772 }
2773
2774
2775 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
2776 BOOST_FORCEINLINE
2777 typename result_of::funop9<
2778 expr const
2779 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
2780 >::type const
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
2782 {
2783 return result_of::funop9<
2784 expr const
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);
2787 }
2788 };
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
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 >
2818 {
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;
2832
2833
2834 BOOST_FORCEINLINE
2835 expr const &proto_base() const
2836 {
2837 return *this;
2838 }
2839
2840
2841 BOOST_FORCEINLINE
2842 expr &proto_base()
2843 {
2844 return *this;
2845 }
2846
2847
2848
2849 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
2850 BOOST_FORCEINLINE
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)
2852 {
2853 expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
2854 return that;
2855 }
2856
2857
2858 typedef detail::not_a_valid_type address_of_hack_type_;
2859
2860
2861
2862
2863 BOOST_FORCEINLINE
2864 proto::expr<
2865 proto::tag::assign
2866 , list2<expr &, expr const &>
2867 , 2
2868 > const
2869 operator =(expr const &a)
2870 {
2871 proto::expr<
2872 proto::tag::assign
2873 , list2<expr &, expr const &>
2874 , 2
2875 > that = {*this, a};
2876 return that;
2877 }
2878
2879
2880
2881
2882 template<typename A>
2883 BOOST_FORCEINLINE
2884 proto::expr<
2885 proto::tag::assign
2886 , list2<expr const &, typename result_of::as_child<A>::type>
2887 , 2
2888 > const
2889 operator =(A &a) const
2890 {
2891 proto::expr<
2892 proto::tag::assign
2893 , list2<expr const &, typename result_of::as_child<A>::type>
2894 , 2
2895 > that = {*this, proto::as_child(a)};
2896 return that;
2897 }
2898
2899
2900 template<typename A>
2901 BOOST_FORCEINLINE
2902 proto::expr<
2903 proto::tag::assign
2904 , list2<expr const &, typename result_of::as_child<A const>::type>
2905 , 2
2906 > const
2907 operator =(A const &a) const
2908 {
2909 proto::expr<
2910 proto::tag::assign
2911 , list2<expr const &, typename result_of::as_child<A const>::type>
2912 , 2
2913 > that = {*this, proto::as_child(a)};
2914 return that;
2915 }
2916
2917
2918
2919
2920 template<typename A>
2921 BOOST_FORCEINLINE
2922 proto::expr<
2923 proto::tag::subscript
2924 , list2<expr const &, typename result_of::as_child<A>::type>
2925 , 2
2926 > const
2927 operator [](A &a) const
2928 {
2929 proto::expr<
2930 proto::tag::subscript
2931 , list2<expr const &, typename result_of::as_child<A>::type>
2932 , 2
2933 > that = {*this, proto::as_child(a)};
2934 return that;
2935 }
2936
2937
2938 template<typename A>
2939 BOOST_FORCEINLINE
2940 proto::expr<
2941 proto::tag::subscript
2942 , list2<expr const &, typename result_of::as_child<A const>::type>
2943 , 2
2944 > const
2945 operator [](A const &a) const
2946 {
2947 proto::expr<
2948 proto::tag::subscript
2949 , list2<expr const &, typename result_of::as_child<A const>::type>
2950 , 2
2951 > that = {*this, proto::as_child(a)};
2952 return that;
2953 }
2954
2955
2956 template<typename Sig>
2957 struct result
2958 {
2959 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
2960 };
2961
2962
2963
2964 BOOST_FORCEINLINE
2965 proto::expr<proto::tag::function, list1<expr const &>, 1> const
2966 operator ()() const
2967 {
2968 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
2969 return that;
2970 }
2971
2972
2973 template<typename A0>
2974 BOOST_FORCEINLINE
2975 typename result_of::funop1<
2976 expr const
2977 , default_domain , const A0
2978 >::type const
2979 operator ()(A0 const &a0) const
2980 {
2981 return result_of::funop1<
2982 expr const
2983 , default_domain , const A0
2984 >::call(*this , a0);
2985 }
2986
2987
2988 template<typename A0 , typename A1>
2989 BOOST_FORCEINLINE
2990 typename result_of::funop2<
2991 expr const
2992 , default_domain , const A0 , const A1
2993 >::type const
2994 operator ()(A0 const &a0 , A1 const &a1) const
2995 {
2996 return result_of::funop2<
2997 expr const
2998 , default_domain , const A0 , const A1
2999 >::call(*this , a0 , a1);
3000 }
3001
3002
3003 template<typename A0 , typename A1 , typename A2>
3004 BOOST_FORCEINLINE
3005 typename result_of::funop3<
3006 expr const
3007 , default_domain , const A0 , const A1 , const A2
3008 >::type const
3009 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
3010 {
3011 return result_of::funop3<
3012 expr const
3013 , default_domain , const A0 , const A1 , const A2
3014 >::call(*this , a0 , a1 , a2);
3015 }
3016
3017
3018 template<typename A0 , typename A1 , typename A2 , typename A3>
3019 BOOST_FORCEINLINE
3020 typename result_of::funop4<
3021 expr const
3022 , default_domain , const A0 , const A1 , const A2 , const A3
3023 >::type const
3024 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
3025 {
3026 return result_of::funop4<
3027 expr const
3028 , default_domain , const A0 , const A1 , const A2 , const A3
3029 >::call(*this , a0 , a1 , a2 , a3);
3030 }
3031
3032
3033 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
3034 BOOST_FORCEINLINE
3035 typename result_of::funop5<
3036 expr const
3037 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
3038 >::type const
3039 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
3040 {
3041 return result_of::funop5<
3042 expr const
3043 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
3044 >::call(*this , a0 , a1 , a2 , a3 , a4);
3045 }
3046
3047
3048 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
3049 BOOST_FORCEINLINE
3050 typename result_of::funop6<
3051 expr const
3052 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
3053 >::type const
3054 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
3055 {
3056 return result_of::funop6<
3057 expr const
3058 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
3059 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
3060 }
3061
3062
3063 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
3064 BOOST_FORCEINLINE
3065 typename result_of::funop7<
3066 expr const
3067 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
3068 >::type const
3069 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
3070 {
3071 return result_of::funop7<
3072 expr const
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);
3075 }
3076
3077
3078 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
3079 BOOST_FORCEINLINE
3080 typename result_of::funop8<
3081 expr const
3082 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
3083 >::type const
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
3085 {
3086 return result_of::funop8<
3087 expr const
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);
3090 }
3091
3092
3093 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
3094 BOOST_FORCEINLINE
3095 typename result_of::funop9<
3096 expr const
3097 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
3098 >::type const
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
3100 {
3101 return result_of::funop9<
3102 expr const
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);
3105 }
3106 };
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
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 >
3136 {
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;
3150
3151
3152 BOOST_FORCEINLINE
3153 expr const &proto_base() const
3154 {
3155 return *this;
3156 }
3157
3158
3159 BOOST_FORCEINLINE
3160 expr &proto_base()
3161 {
3162 return *this;
3163 }
3164
3165
3166
3167 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
3168 BOOST_FORCEINLINE
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)
3170 {
3171 expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
3172 return that;
3173 }
3174
3175
3176 typedef detail::not_a_valid_type address_of_hack_type_;
3177
3178
3179
3180
3181 BOOST_FORCEINLINE
3182 proto::expr<
3183 proto::tag::assign
3184 , list2<expr &, expr const &>
3185 , 2
3186 > const
3187 operator =(expr const &a)
3188 {
3189 proto::expr<
3190 proto::tag::assign
3191 , list2<expr &, expr const &>
3192 , 2
3193 > that = {*this, a};
3194 return that;
3195 }
3196
3197
3198
3199
3200 template<typename A>
3201 BOOST_FORCEINLINE
3202 proto::expr<
3203 proto::tag::assign
3204 , list2<expr const &, typename result_of::as_child<A>::type>
3205 , 2
3206 > const
3207 operator =(A &a) const
3208 {
3209 proto::expr<
3210 proto::tag::assign
3211 , list2<expr const &, typename result_of::as_child<A>::type>
3212 , 2
3213 > that = {*this, proto::as_child(a)};
3214 return that;
3215 }
3216
3217
3218 template<typename A>
3219 BOOST_FORCEINLINE
3220 proto::expr<
3221 proto::tag::assign
3222 , list2<expr const &, typename result_of::as_child<A const>::type>
3223 , 2
3224 > const
3225 operator =(A const &a) const
3226 {
3227 proto::expr<
3228 proto::tag::assign
3229 , list2<expr const &, typename result_of::as_child<A const>::type>
3230 , 2
3231 > that = {*this, proto::as_child(a)};
3232 return that;
3233 }
3234
3235
3236
3237
3238 template<typename A>
3239 BOOST_FORCEINLINE
3240 proto::expr<
3241 proto::tag::subscript
3242 , list2<expr const &, typename result_of::as_child<A>::type>
3243 , 2
3244 > const
3245 operator [](A &a) const
3246 {
3247 proto::expr<
3248 proto::tag::subscript
3249 , list2<expr const &, typename result_of::as_child<A>::type>
3250 , 2
3251 > that = {*this, proto::as_child(a)};
3252 return that;
3253 }
3254
3255
3256 template<typename A>
3257 BOOST_FORCEINLINE
3258 proto::expr<
3259 proto::tag::subscript
3260 , list2<expr const &, typename result_of::as_child<A const>::type>
3261 , 2
3262 > const
3263 operator [](A const &a) const
3264 {
3265 proto::expr<
3266 proto::tag::subscript
3267 , list2<expr const &, typename result_of::as_child<A const>::type>
3268 , 2
3269 > that = {*this, proto::as_child(a)};
3270 return that;
3271 }
3272
3273
3274 template<typename Sig>
3275 struct result
3276 {
3277 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
3278 };
3279
3280
3281
3282 BOOST_FORCEINLINE
3283 proto::expr<proto::tag::function, list1<expr const &>, 1> const
3284 operator ()() const
3285 {
3286 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
3287 return that;
3288 }
3289
3290
3291 template<typename A0>
3292 BOOST_FORCEINLINE
3293 typename result_of::funop1<
3294 expr const
3295 , default_domain , const A0
3296 >::type const
3297 operator ()(A0 const &a0) const
3298 {
3299 return result_of::funop1<
3300 expr const
3301 , default_domain , const A0
3302 >::call(*this , a0);
3303 }
3304
3305
3306 template<typename A0 , typename A1>
3307 BOOST_FORCEINLINE
3308 typename result_of::funop2<
3309 expr const
3310 , default_domain , const A0 , const A1
3311 >::type const
3312 operator ()(A0 const &a0 , A1 const &a1) const
3313 {
3314 return result_of::funop2<
3315 expr const
3316 , default_domain , const A0 , const A1
3317 >::call(*this , a0 , a1);
3318 }
3319
3320
3321 template<typename A0 , typename A1 , typename A2>
3322 BOOST_FORCEINLINE
3323 typename result_of::funop3<
3324 expr const
3325 , default_domain , const A0 , const A1 , const A2
3326 >::type const
3327 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
3328 {
3329 return result_of::funop3<
3330 expr const
3331 , default_domain , const A0 , const A1 , const A2
3332 >::call(*this , a0 , a1 , a2);
3333 }
3334
3335
3336 template<typename A0 , typename A1 , typename A2 , typename A3>
3337 BOOST_FORCEINLINE
3338 typename result_of::funop4<
3339 expr const
3340 , default_domain , const A0 , const A1 , const A2 , const A3
3341 >::type const
3342 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
3343 {
3344 return result_of::funop4<
3345 expr const
3346 , default_domain , const A0 , const A1 , const A2 , const A3
3347 >::call(*this , a0 , a1 , a2 , a3);
3348 }
3349
3350
3351 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
3352 BOOST_FORCEINLINE
3353 typename result_of::funop5<
3354 expr const
3355 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
3356 >::type const
3357 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
3358 {
3359 return result_of::funop5<
3360 expr const
3361 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
3362 >::call(*this , a0 , a1 , a2 , a3 , a4);
3363 }
3364
3365
3366 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
3367 BOOST_FORCEINLINE
3368 typename result_of::funop6<
3369 expr const
3370 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
3371 >::type const
3372 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
3373 {
3374 return result_of::funop6<
3375 expr const
3376 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
3377 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
3378 }
3379
3380
3381 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
3382 BOOST_FORCEINLINE
3383 typename result_of::funop7<
3384 expr const
3385 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
3386 >::type const
3387 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
3388 {
3389 return result_of::funop7<
3390 expr const
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);
3393 }
3394
3395
3396 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
3397 BOOST_FORCEINLINE
3398 typename result_of::funop8<
3399 expr const
3400 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
3401 >::type const
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
3403 {
3404 return result_of::funop8<
3405 expr const
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);
3408 }
3409
3410
3411 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
3412 BOOST_FORCEINLINE
3413 typename result_of::funop9<
3414 expr const
3415 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
3416 >::type const
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
3418 {
3419 return result_of::funop9<
3420 expr const
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);
3423 }
3424 };
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
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 >
3454 {
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;
3467
3468
3469
3470 BOOST_FORCEINLINE
3471 expr const &proto_base() const
3472 {
3473 return *this;
3474 }
3475
3476
3477 BOOST_FORCEINLINE
3478 expr &proto_base()
3479 {
3480 return *this;
3481 }
3482
3483
3484
3485 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
3486 BOOST_FORCEINLINE
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)
3488 {
3489 expr that = {a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
3490 return that;
3491 }
3492
3493
3494 typedef detail::not_a_valid_type address_of_hack_type_;
3495
3496
3497
3498
3499 BOOST_FORCEINLINE
3500 proto::expr<
3501 proto::tag::assign
3502 , list2<expr &, expr const &>
3503 , 2
3504 > const
3505 operator =(expr const &a)
3506 {
3507 proto::expr<
3508 proto::tag::assign
3509 , list2<expr &, expr const &>
3510 , 2
3511 > that = {*this, a};
3512 return that;
3513 }
3514
3515
3516
3517
3518 template<typename A>
3519 BOOST_FORCEINLINE
3520 proto::expr<
3521 proto::tag::assign
3522 , list2<expr const &, typename result_of::as_child<A>::type>
3523 , 2
3524 > const
3525 operator =(A &a) const
3526 {
3527 proto::expr<
3528 proto::tag::assign
3529 , list2<expr const &, typename result_of::as_child<A>::type>
3530 , 2
3531 > that = {*this, proto::as_child(a)};
3532 return that;
3533 }
3534
3535
3536 template<typename A>
3537 BOOST_FORCEINLINE
3538 proto::expr<
3539 proto::tag::assign
3540 , list2<expr const &, typename result_of::as_child<A const>::type>
3541 , 2
3542 > const
3543 operator =(A const &a) const
3544 {
3545 proto::expr<
3546 proto::tag::assign
3547 , list2<expr const &, typename result_of::as_child<A const>::type>
3548 , 2
3549 > that = {*this, proto::as_child(a)};
3550 return that;
3551 }
3552
3553
3554
3555
3556 template<typename A>
3557 BOOST_FORCEINLINE
3558 proto::expr<
3559 proto::tag::subscript
3560 , list2<expr const &, typename result_of::as_child<A>::type>
3561 , 2
3562 > const
3563 operator [](A &a) const
3564 {
3565 proto::expr<
3566 proto::tag::subscript
3567 , list2<expr const &, typename result_of::as_child<A>::type>
3568 , 2
3569 > that = {*this, proto::as_child(a)};
3570 return that;
3571 }
3572
3573
3574 template<typename A>
3575 BOOST_FORCEINLINE
3576 proto::expr<
3577 proto::tag::subscript
3578 , list2<expr const &, typename result_of::as_child<A const>::type>
3579 , 2
3580 > const
3581 operator [](A const &a) const
3582 {
3583 proto::expr<
3584 proto::tag::subscript
3585 , list2<expr const &, typename result_of::as_child<A const>::type>
3586 , 2
3587 > that = {*this, proto::as_child(a)};
3588 return that;
3589 }
3590
3591
3592 template<typename Sig>
3593 struct result
3594 {
3595 typedef typename result_of::funop<Sig, expr, default_domain>::type const type;
3596 };
3597
3598
3599
3600 BOOST_FORCEINLINE
3601 proto::expr<proto::tag::function, list1<expr const &>, 1> const
3602 operator ()() const
3603 {
3604 proto::expr<proto::tag::function, list1<expr const &>, 1> that = {*this};
3605 return that;
3606 }
3607
3608
3609 template<typename A0>
3610 BOOST_FORCEINLINE
3611 typename result_of::funop1<
3612 expr const
3613 , default_domain , const A0
3614 >::type const
3615 operator ()(A0 const &a0) const
3616 {
3617 return result_of::funop1<
3618 expr const
3619 , default_domain , const A0
3620 >::call(*this , a0);
3621 }
3622
3623
3624 template<typename A0 , typename A1>
3625 BOOST_FORCEINLINE
3626 typename result_of::funop2<
3627 expr const
3628 , default_domain , const A0 , const A1
3629 >::type const
3630 operator ()(A0 const &a0 , A1 const &a1) const
3631 {
3632 return result_of::funop2<
3633 expr const
3634 , default_domain , const A0 , const A1
3635 >::call(*this , a0 , a1);
3636 }
3637
3638
3639 template<typename A0 , typename A1 , typename A2>
3640 BOOST_FORCEINLINE
3641 typename result_of::funop3<
3642 expr const
3643 , default_domain , const A0 , const A1 , const A2
3644 >::type const
3645 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2) const
3646 {
3647 return result_of::funop3<
3648 expr const
3649 , default_domain , const A0 , const A1 , const A2
3650 >::call(*this , a0 , a1 , a2);
3651 }
3652
3653
3654 template<typename A0 , typename A1 , typename A2 , typename A3>
3655 BOOST_FORCEINLINE
3656 typename result_of::funop4<
3657 expr const
3658 , default_domain , const A0 , const A1 , const A2 , const A3
3659 >::type const
3660 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3) const
3661 {
3662 return result_of::funop4<
3663 expr const
3664 , default_domain , const A0 , const A1 , const A2 , const A3
3665 >::call(*this , a0 , a1 , a2 , a3);
3666 }
3667
3668
3669 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
3670 BOOST_FORCEINLINE
3671 typename result_of::funop5<
3672 expr const
3673 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
3674 >::type const
3675 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4) const
3676 {
3677 return result_of::funop5<
3678 expr const
3679 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4
3680 >::call(*this , a0 , a1 , a2 , a3 , a4);
3681 }
3682
3683
3684 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
3685 BOOST_FORCEINLINE
3686 typename result_of::funop6<
3687 expr const
3688 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
3689 >::type const
3690 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5) const
3691 {
3692 return result_of::funop6<
3693 expr const
3694 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5
3695 >::call(*this , a0 , a1 , a2 , a3 , a4 , a5);
3696 }
3697
3698
3699 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
3700 BOOST_FORCEINLINE
3701 typename result_of::funop7<
3702 expr const
3703 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6
3704 >::type const
3705 operator ()(A0 const &a0 , A1 const &a1 , A2 const &a2 , A3 const &a3 , A4 const &a4 , A5 const &a5 , A6 const &a6) const
3706 {
3707 return result_of::funop7<
3708 expr const
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);
3711 }
3712
3713
3714 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
3715 BOOST_FORCEINLINE
3716 typename result_of::funop8<
3717 expr const
3718 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7
3719 >::type const
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
3721 {
3722 return result_of::funop8<
3723 expr const
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);
3726 }
3727
3728
3729 template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
3730 BOOST_FORCEINLINE
3731 typename result_of::funop9<
3732 expr const
3733 , default_domain , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8
3734 >::type const
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
3736 {
3737 return result_of::funop9<
3738 expr const
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);
3741 }
3742 };