1
<?xml version=
"1.0" encoding=
"utf-8"?>
3 Copyright 2012 Eric Niebler
5 Distributed under the Boost
6 Software License, Version 1.0. (See accompanying
7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 <header name=
"boost/proto/operators.hpp">
10 <para>Contains all the overloaded operators that make it possible to build Proto expression trees.
</para>
11 <namespace name=
"boost">
12 <namespace name=
"proto">
13 <struct name=
"is_extension">
15 <template-type-parameter name=
"T"/>
17 <inherit><type><classname>is_expr
</classname>< T
></type></inherit>
18 <purpose>Boolean metafunction that can be used to enable the operator overloads in the
19 <computeroutput>exops
</computeroutput> namespace for the specified non-Proto terminal type.
</purpose>
21 <function name=
"operator+">
22 <type><emphasis>unspecified
</emphasis></type>
24 <template-type-parameter name=
"Arg"/>
26 <parameter name=
"arg">
27 <paramtype>Arg
&</paramtype>
30 <function name=
"operator+">
31 <type><emphasis>unspecified
</emphasis></type>
33 <template-type-parameter name=
"Arg"/>
35 <parameter name=
"arg">
36 <paramtype>Arg const
&</paramtype>
39 <function name=
"operator-">
40 <type><emphasis>unspecified
</emphasis></type>
42 <template-type-parameter name=
"Arg"/>
44 <parameter name=
"arg">
45 <paramtype>Arg
&</paramtype>
48 <function name=
"operator-">
49 <type><emphasis>unspecified
</emphasis></type>
51 <template-type-parameter name=
"Arg"/>
53 <parameter name=
"arg">
54 <paramtype>Arg const
&</paramtype>
57 <function name=
"operator*">
58 <type><emphasis>unspecified
</emphasis></type>
60 <template-type-parameter name=
"Arg"/>
62 <parameter name=
"arg">
63 <paramtype>Arg
&</paramtype>
66 <function name=
"operator*">
67 <type><emphasis>unspecified
</emphasis></type>
69 <template-type-parameter name=
"Arg"/>
71 <parameter name=
"arg">
72 <paramtype>Arg const
&</paramtype>
75 <function name=
"operator~">
76 <type><emphasis>unspecified
</emphasis></type>
78 <template-type-parameter name=
"Arg"/>
80 <parameter name=
"arg">
81 <paramtype>Arg
&</paramtype>
84 <function name=
"operator~">
85 <type><emphasis>unspecified
</emphasis></type>
87 <template-type-parameter name=
"Arg"/>
89 <parameter name=
"arg">
90 <paramtype>Arg const
&</paramtype>
93 <function name=
"operator&">
94 <type><emphasis>unspecified
</emphasis></type>
96 <template-type-parameter name=
"Arg"/>
98 <parameter name=
"arg">
99 <paramtype>Arg
&</paramtype>
102 <function name=
"operator&">
103 <type><emphasis>unspecified
</emphasis></type>
105 <template-type-parameter name=
"Arg"/>
107 <parameter name=
"arg">
108 <paramtype>Arg const
&</paramtype>
111 <function name=
"operator!">
112 <type><emphasis>unspecified
</emphasis></type>
114 <template-type-parameter name=
"Arg"/>
116 <parameter name=
"arg">
117 <paramtype>Arg
&</paramtype>
120 <function name=
"operator!">
121 <type><emphasis>unspecified
</emphasis></type>
123 <template-type-parameter name=
"Arg"/>
125 <parameter name=
"arg">
126 <paramtype>Arg const
&</paramtype>
129 <function name=
"operator++">
130 <type><emphasis>unspecified
</emphasis></type>
132 <template-type-parameter name=
"Arg"/>
134 <parameter name=
"arg">
135 <paramtype>Arg
&</paramtype>
138 <function name=
"operator++">
139 <type><emphasis>unspecified
</emphasis></type>
141 <template-type-parameter name=
"Arg"/>
143 <parameter name=
"arg">
144 <paramtype>Arg const
&</paramtype>
147 <function name=
"operator--">
148 <type><emphasis>unspecified
</emphasis></type>
150 <template-type-parameter name=
"Arg"/>
152 <parameter name=
"arg">
153 <paramtype>Arg
&</paramtype>
156 <function name=
"operator--">
157 <type><emphasis>unspecified
</emphasis></type>
159 <template-type-parameter name=
"Arg"/>
161 <parameter name=
"arg">
162 <paramtype>Arg const
&</paramtype>
165 <function name=
"operator++">
166 <type><emphasis>unspecified
</emphasis></type>
168 <template-type-parameter name=
"Arg"/>
170 <parameter name=
"arg">
171 <paramtype>Arg
&</paramtype>
174 <paramtype>int
</paramtype>
177 <function name=
"operator++">
178 <type><emphasis>unspecified
</emphasis></type>
180 <template-type-parameter name=
"Arg"/>
182 <parameter name=
"arg">
183 <paramtype>Arg const
&</paramtype>
186 <paramtype>int
</paramtype>
189 <function name=
"operator--">
190 <type><emphasis>unspecified
</emphasis></type>
192 <template-type-parameter name=
"Arg"/>
194 <parameter name=
"arg">
195 <paramtype>Arg
&</paramtype>
198 <paramtype>int
</paramtype>
201 <function name=
"operator--">
202 <type><emphasis>unspecified
</emphasis></type>
204 <template-type-parameter name=
"Arg"/>
206 <parameter name=
"arg">
207 <paramtype>Arg const
&</paramtype>
210 <paramtype>int
</paramtype>
213 <function name=
"operator<<">
214 <type><emphasis>unspecified
</emphasis></type>
216 <template-type-parameter name=
"Left"/>
217 <template-type-parameter name=
"Right"/>
219 <parameter name=
"left">
220 <paramtype>Left
&</paramtype>
222 <parameter name=
"right">
223 <paramtype>Right
&</paramtype>
226 <function name=
"operator<<">
227 <type><emphasis>unspecified
</emphasis></type>
229 <template-type-parameter name=
"Left"/>
230 <template-type-parameter name=
"Right"/>
232 <parameter name=
"left">
233 <paramtype>Left
&</paramtype>
235 <parameter name=
"right">
236 <paramtype>Right const
&</paramtype>
239 <function name=
"operator<<">
240 <type><emphasis>unspecified
</emphasis></type>
242 <template-type-parameter name=
"Left"/>
243 <template-type-parameter name=
"Right"/>
245 <parameter name=
"left">
246 <paramtype>Left const
&</paramtype>
248 <parameter name=
"right">
249 <paramtype>Right
&</paramtype>
252 <function name=
"operator<<">
253 <type><emphasis>unspecified
</emphasis></type>
255 <template-type-parameter name=
"Left"/>
256 <template-type-parameter name=
"Right"/>
258 <parameter name=
"left">
259 <paramtype>Left const
&</paramtype>
261 <parameter name=
"right">
262 <paramtype>Right const
&</paramtype>
265 <function name=
"operator>>">
266 <type><emphasis>unspecified
</emphasis></type>
268 <template-type-parameter name=
"Left"/>
269 <template-type-parameter name=
"Right"/>
271 <parameter name=
"left">
272 <paramtype>Left
&</paramtype>
274 <parameter name=
"right">
275 <paramtype>Right
&</paramtype>
278 <function name=
"operator>>">
279 <type><emphasis>unspecified
</emphasis></type>
281 <template-type-parameter name=
"Left"/>
282 <template-type-parameter name=
"Right"/>
284 <parameter name=
"left">
285 <paramtype>Left
&</paramtype>
287 <parameter name=
"right">
288 <paramtype>Right const
&</paramtype>
291 <function name=
"operator>>">
292 <type><emphasis>unspecified
</emphasis></type>
294 <template-type-parameter name=
"Left"/>
295 <template-type-parameter name=
"Right"/>
297 <parameter name=
"left">
298 <paramtype>Left const
&</paramtype>
300 <parameter name=
"right">
301 <paramtype>Right
&</paramtype>
304 <function name=
"operator>>">
305 <type><emphasis>unspecified
</emphasis></type>
307 <template-type-parameter name=
"Left"/>
308 <template-type-parameter name=
"Right"/>
310 <parameter name=
"left">
311 <paramtype>Left const
&</paramtype>
313 <parameter name=
"right">
314 <paramtype>Right const
&</paramtype>
317 <function name=
"operator*">
318 <type><emphasis>unspecified
</emphasis></type>
320 <template-type-parameter name=
"Left"/>
321 <template-type-parameter name=
"Right"/>
323 <parameter name=
"left">
324 <paramtype>Left
&</paramtype>
326 <parameter name=
"right">
327 <paramtype>Right
&</paramtype>
330 <function name=
"operator*">
331 <type><emphasis>unspecified
</emphasis></type>
333 <template-type-parameter name=
"Left"/>
334 <template-type-parameter name=
"Right"/>
336 <parameter name=
"left">
337 <paramtype>Left
&</paramtype>
339 <parameter name=
"right">
340 <paramtype>Right const
&</paramtype>
343 <function name=
"operator*">
344 <type><emphasis>unspecified
</emphasis></type>
346 <template-type-parameter name=
"Left"/>
347 <template-type-parameter name=
"Right"/>
349 <parameter name=
"left">
350 <paramtype>Left const
&</paramtype>
352 <parameter name=
"right">
353 <paramtype>Right
&</paramtype>
356 <function name=
"operator*">
357 <type><emphasis>unspecified
</emphasis></type>
359 <template-type-parameter name=
"Left"/>
360 <template-type-parameter name=
"Right"/>
362 <parameter name=
"left">
363 <paramtype>Left const
&</paramtype>
365 <parameter name=
"right">
366 <paramtype>Right const
&</paramtype>
369 <function name=
"operator/">
370 <type><emphasis>unspecified
</emphasis></type>
372 <template-type-parameter name=
"Left"/>
373 <template-type-parameter name=
"Right"/>
375 <parameter name=
"left">
376 <paramtype>Left
&</paramtype>
378 <parameter name=
"right">
379 <paramtype>Right
&</paramtype>
382 <function name=
"operator/">
383 <type><emphasis>unspecified
</emphasis></type>
385 <template-type-parameter name=
"Left"/>
386 <template-type-parameter name=
"Right"/>
388 <parameter name=
"left">
389 <paramtype>Left
&</paramtype>
391 <parameter name=
"right">
392 <paramtype>Right const
&</paramtype>
395 <function name=
"operator/">
396 <type><emphasis>unspecified
</emphasis></type>
398 <template-type-parameter name=
"Left"/>
399 <template-type-parameter name=
"Right"/>
401 <parameter name=
"left">
402 <paramtype>Left const
&</paramtype>
404 <parameter name=
"right">
405 <paramtype>Right
&</paramtype>
408 <function name=
"operator/">
409 <type><emphasis>unspecified
</emphasis></type>
411 <template-type-parameter name=
"Left"/>
412 <template-type-parameter name=
"Right"/>
414 <parameter name=
"left">
415 <paramtype>Left const
&</paramtype>
417 <parameter name=
"right">
418 <paramtype>Right const
&</paramtype>
421 <function name=
"operator%">
422 <type><emphasis>unspecified
</emphasis></type>
424 <template-type-parameter name=
"Left"/>
425 <template-type-parameter name=
"Right"/>
427 <parameter name=
"left">
428 <paramtype>Left
&</paramtype>
430 <parameter name=
"right">
431 <paramtype>Right
&</paramtype>
434 <function name=
"operator%">
435 <type><emphasis>unspecified
</emphasis></type>
437 <template-type-parameter name=
"Left"/>
438 <template-type-parameter name=
"Right"/>
440 <parameter name=
"left">
441 <paramtype>Left
&</paramtype>
443 <parameter name=
"right">
444 <paramtype>Right const
&</paramtype>
447 <function name=
"operator%">
448 <type><emphasis>unspecified
</emphasis></type>
450 <template-type-parameter name=
"Left"/>
451 <template-type-parameter name=
"Right"/>
453 <parameter name=
"left">
454 <paramtype>Left const
&</paramtype>
456 <parameter name=
"right">
457 <paramtype>Right
&</paramtype>
460 <function name=
"operator%">
461 <type><emphasis>unspecified
</emphasis></type>
463 <template-type-parameter name=
"Left"/>
464 <template-type-parameter name=
"Right"/>
466 <parameter name=
"left">
467 <paramtype>Left const
&</paramtype>
469 <parameter name=
"right">
470 <paramtype>Right const
&</paramtype>
473 <function name=
"operator+">
474 <type><emphasis>unspecified
</emphasis></type>
476 <template-type-parameter name=
"Left"/>
477 <template-type-parameter name=
"Right"/>
479 <parameter name=
"left">
480 <paramtype>Left
&</paramtype>
482 <parameter name=
"right">
483 <paramtype>Right
&</paramtype>
486 <function name=
"operator+">
487 <type><emphasis>unspecified
</emphasis></type>
489 <template-type-parameter name=
"Left"/>
490 <template-type-parameter name=
"Right"/>
492 <parameter name=
"left">
493 <paramtype>Left
&</paramtype>
495 <parameter name=
"right">
496 <paramtype>Right const
&</paramtype>
499 <function name=
"operator+">
500 <type><emphasis>unspecified
</emphasis></type>
502 <template-type-parameter name=
"Left"/>
503 <template-type-parameter name=
"Right"/>
505 <parameter name=
"left">
506 <paramtype>Left const
&</paramtype>
508 <parameter name=
"right">
509 <paramtype>Right
&</paramtype>
512 <function name=
"operator+">
513 <type><emphasis>unspecified
</emphasis></type>
515 <template-type-parameter name=
"Left"/>
516 <template-type-parameter name=
"Right"/>
518 <parameter name=
"left">
519 <paramtype>Left const
&</paramtype>
521 <parameter name=
"right">
522 <paramtype>Right const
&</paramtype>
525 <function name=
"operator-">
526 <type><emphasis>unspecified
</emphasis></type>
528 <template-type-parameter name=
"Left"/>
529 <template-type-parameter name=
"Right"/>
531 <parameter name=
"left">
532 <paramtype>Left
&</paramtype>
534 <parameter name=
"right">
535 <paramtype>Right
&</paramtype>
538 <function name=
"operator-">
539 <type><emphasis>unspecified
</emphasis></type>
541 <template-type-parameter name=
"Left"/>
542 <template-type-parameter name=
"Right"/>
544 <parameter name=
"left">
545 <paramtype>Left
&</paramtype>
547 <parameter name=
"right">
548 <paramtype>Right const
&</paramtype>
551 <function name=
"operator-">
552 <type><emphasis>unspecified
</emphasis></type>
554 <template-type-parameter name=
"Left"/>
555 <template-type-parameter name=
"Right"/>
557 <parameter name=
"left">
558 <paramtype>Left const
&</paramtype>
560 <parameter name=
"right">
561 <paramtype>Right
&</paramtype>
564 <function name=
"operator-">
565 <type><emphasis>unspecified
</emphasis></type>
567 <template-type-parameter name=
"Left"/>
568 <template-type-parameter name=
"Right"/>
570 <parameter name=
"left">
571 <paramtype>Left const
&</paramtype>
573 <parameter name=
"right">
574 <paramtype>Right const
&</paramtype>
577 <function name=
"operator<">
578 <type><emphasis>unspecified
</emphasis></type>
580 <template-type-parameter name=
"Left"/>
581 <template-type-parameter name=
"Right"/>
583 <parameter name=
"left">
584 <paramtype>Left
&</paramtype>
586 <parameter name=
"right">
587 <paramtype>Right
&</paramtype>
590 <function name=
"operator<">
591 <type><emphasis>unspecified
</emphasis></type>
593 <template-type-parameter name=
"Left"/>
594 <template-type-parameter name=
"Right"/>
596 <parameter name=
"left">
597 <paramtype>Left
&</paramtype>
599 <parameter name=
"right">
600 <paramtype>Right const
&</paramtype>
603 <function name=
"operator<">
604 <type><emphasis>unspecified
</emphasis></type>
606 <template-type-parameter name=
"Left"/>
607 <template-type-parameter name=
"Right"/>
609 <parameter name=
"left">
610 <paramtype>Left const
&</paramtype>
612 <parameter name=
"right">
613 <paramtype>Right
&</paramtype>
616 <function name=
"operator<">
617 <type><emphasis>unspecified
</emphasis></type>
619 <template-type-parameter name=
"Left"/>
620 <template-type-parameter name=
"Right"/>
622 <parameter name=
"left">
623 <paramtype>Left const
&</paramtype>
625 <parameter name=
"right">
626 <paramtype>Right const
&</paramtype>
629 <function name=
"operator>">
630 <type><emphasis>unspecified
</emphasis></type>
632 <template-type-parameter name=
"Left"/>
633 <template-type-parameter name=
"Right"/>
635 <parameter name=
"left">
636 <paramtype>Left
&</paramtype>
638 <parameter name=
"right">
639 <paramtype>Right
&</paramtype>
642 <function name=
"operator>">
643 <type><emphasis>unspecified
</emphasis></type>
645 <template-type-parameter name=
"Left"/>
646 <template-type-parameter name=
"Right"/>
648 <parameter name=
"left">
649 <paramtype>Left
&</paramtype>
651 <parameter name=
"right">
652 <paramtype>Right const
&</paramtype>
655 <function name=
"operator>">
656 <type><emphasis>unspecified
</emphasis></type>
658 <template-type-parameter name=
"Left"/>
659 <template-type-parameter name=
"Right"/>
661 <parameter name=
"left">
662 <paramtype>Left const
&</paramtype>
664 <parameter name=
"right">
665 <paramtype>Right
&</paramtype>
668 <function name=
"operator>">
669 <type><emphasis>unspecified
</emphasis></type>
671 <template-type-parameter name=
"Left"/>
672 <template-type-parameter name=
"Right"/>
674 <parameter name=
"left">
675 <paramtype>Left const
&</paramtype>
677 <parameter name=
"right">
678 <paramtype>Right const
&</paramtype>
681 <function name=
"operator<=">
682 <type><emphasis>unspecified
</emphasis></type>
684 <template-type-parameter name=
"Left"/>
685 <template-type-parameter name=
"Right"/>
687 <parameter name=
"left">
688 <paramtype>Left
&</paramtype>
690 <parameter name=
"right">
691 <paramtype>Right
&</paramtype>
694 <function name=
"operator<=">
695 <type><emphasis>unspecified
</emphasis></type>
697 <template-type-parameter name=
"Left"/>
698 <template-type-parameter name=
"Right"/>
700 <parameter name=
"left">
701 <paramtype>Left
&</paramtype>
703 <parameter name=
"right">
704 <paramtype>Right const
&</paramtype>
707 <function name=
"operator<=">
708 <type><emphasis>unspecified
</emphasis></type>
710 <template-type-parameter name=
"Left"/>
711 <template-type-parameter name=
"Right"/>
713 <parameter name=
"left">
714 <paramtype>Left const
&</paramtype>
716 <parameter name=
"right">
717 <paramtype>Right
&</paramtype>
720 <function name=
"operator<=">
721 <type><emphasis>unspecified
</emphasis></type>
723 <template-type-parameter name=
"Left"/>
724 <template-type-parameter name=
"Right"/>
726 <parameter name=
"left">
727 <paramtype>Left const
&</paramtype>
729 <parameter name=
"right">
730 <paramtype>Right const
&</paramtype>
733 <function name=
"operator>=">
734 <type><emphasis>unspecified
</emphasis></type>
736 <template-type-parameter name=
"Left"/>
737 <template-type-parameter name=
"Right"/>
739 <parameter name=
"left">
740 <paramtype>Left
&</paramtype>
742 <parameter name=
"right">
743 <paramtype>Right
&</paramtype>
746 <function name=
"operator>=">
747 <type><emphasis>unspecified
</emphasis></type>
749 <template-type-parameter name=
"Left"/>
750 <template-type-parameter name=
"Right"/>
752 <parameter name=
"left">
753 <paramtype>Left
&</paramtype>
755 <parameter name=
"right">
756 <paramtype>Right const
&</paramtype>
759 <function name=
"operator>=">
760 <type><emphasis>unspecified
</emphasis></type>
762 <template-type-parameter name=
"Left"/>
763 <template-type-parameter name=
"Right"/>
765 <parameter name=
"left">
766 <paramtype>Left const
&</paramtype>
768 <parameter name=
"right">
769 <paramtype>Right
&</paramtype>
772 <function name=
"operator>=">
773 <type><emphasis>unspecified
</emphasis></type>
775 <template-type-parameter name=
"Left"/>
776 <template-type-parameter name=
"Right"/>
778 <parameter name=
"left">
779 <paramtype>Left const
&</paramtype>
781 <parameter name=
"right">
782 <paramtype>Right const
&</paramtype>
785 <function name=
"operator==">
786 <type><emphasis>unspecified
</emphasis></type>
788 <template-type-parameter name=
"Left"/>
789 <template-type-parameter name=
"Right"/>
791 <parameter name=
"left">
792 <paramtype>Left
&</paramtype>
794 <parameter name=
"right">
795 <paramtype>Right
&</paramtype>
798 <function name=
"operator==">
799 <type><emphasis>unspecified
</emphasis></type>
801 <template-type-parameter name=
"Left"/>
802 <template-type-parameter name=
"Right"/>
804 <parameter name=
"left">
805 <paramtype>Left
&</paramtype>
807 <parameter name=
"right">
808 <paramtype>Right const
&</paramtype>
811 <function name=
"operator==">
812 <type><emphasis>unspecified
</emphasis></type>
814 <template-type-parameter name=
"Left"/>
815 <template-type-parameter name=
"Right"/>
817 <parameter name=
"left">
818 <paramtype>Left const
&</paramtype>
820 <parameter name=
"right">
821 <paramtype>Right
&</paramtype>
824 <function name=
"operator==">
825 <type><emphasis>unspecified
</emphasis></type>
827 <template-type-parameter name=
"Left"/>
828 <template-type-parameter name=
"Right"/>
830 <parameter name=
"left">
831 <paramtype>Left const
&</paramtype>
833 <parameter name=
"right">
834 <paramtype>Right const
&</paramtype>
837 <function name=
"operator!=">
838 <type><emphasis>unspecified
</emphasis></type>
840 <template-type-parameter name=
"Left"/>
841 <template-type-parameter name=
"Right"/>
843 <parameter name=
"left">
844 <paramtype>Left
&</paramtype>
846 <parameter name=
"right">
847 <paramtype>Right
&</paramtype>
850 <function name=
"operator!=">
851 <type><emphasis>unspecified
</emphasis></type>
853 <template-type-parameter name=
"Left"/>
854 <template-type-parameter name=
"Right"/>
856 <parameter name=
"left">
857 <paramtype>Left
&</paramtype>
859 <parameter name=
"right">
860 <paramtype>Right const
&</paramtype>
863 <function name=
"operator!=">
864 <type><emphasis>unspecified
</emphasis></type>
866 <template-type-parameter name=
"Left"/>
867 <template-type-parameter name=
"Right"/>
869 <parameter name=
"left">
870 <paramtype>Left const
&</paramtype>
872 <parameter name=
"right">
873 <paramtype>Right
&</paramtype>
876 <function name=
"operator!=">
877 <type><emphasis>unspecified
</emphasis></type>
879 <template-type-parameter name=
"Left"/>
880 <template-type-parameter name=
"Right"/>
882 <parameter name=
"left">
883 <paramtype>Left const
&</paramtype>
885 <parameter name=
"right">
886 <paramtype>Right const
&</paramtype>
889 <function name=
"operator||">
890 <type><emphasis>unspecified
</emphasis></type>
892 <template-type-parameter name=
"Left"/>
893 <template-type-parameter name=
"Right"/>
895 <parameter name=
"left">
896 <paramtype>Left
&</paramtype>
898 <parameter name=
"right">
899 <paramtype>Right
&</paramtype>
902 <function name=
"operator||">
903 <type><emphasis>unspecified
</emphasis></type>
905 <template-type-parameter name=
"Left"/>
906 <template-type-parameter name=
"Right"/>
908 <parameter name=
"left">
909 <paramtype>Left
&</paramtype>
911 <parameter name=
"right">
912 <paramtype>Right const
&</paramtype>
915 <function name=
"operator||">
916 <type><emphasis>unspecified
</emphasis></type>
918 <template-type-parameter name=
"Left"/>
919 <template-type-parameter name=
"Right"/>
921 <parameter name=
"left">
922 <paramtype>Left const
&</paramtype>
924 <parameter name=
"right">
925 <paramtype>Right
&</paramtype>
928 <function name=
"operator||">
929 <type><emphasis>unspecified
</emphasis></type>
931 <template-type-parameter name=
"Left"/>
932 <template-type-parameter name=
"Right"/>
934 <parameter name=
"left">
935 <paramtype>Left const
&</paramtype>
937 <parameter name=
"right">
938 <paramtype>Right const
&</paramtype>
941 <function name=
"operator&&">
942 <type><emphasis>unspecified
</emphasis></type>
944 <template-type-parameter name=
"Left"/>
945 <template-type-parameter name=
"Right"/>
947 <parameter name=
"left">
948 <paramtype>Left
&</paramtype>
950 <parameter name=
"right">
951 <paramtype>Right
&</paramtype>
954 <function name=
"operator&&">
955 <type><emphasis>unspecified
</emphasis></type>
957 <template-type-parameter name=
"Left"/>
958 <template-type-parameter name=
"Right"/>
960 <parameter name=
"left">
961 <paramtype>Left
&</paramtype>
963 <parameter name=
"right">
964 <paramtype>Right const
&</paramtype>
967 <function name=
"operator&&">
968 <type><emphasis>unspecified
</emphasis></type>
970 <template-type-parameter name=
"Left"/>
971 <template-type-parameter name=
"Right"/>
973 <parameter name=
"left">
974 <paramtype>Left const
&</paramtype>
976 <parameter name=
"right">
977 <paramtype>Right
&</paramtype>
980 <function name=
"operator&&">
981 <type><emphasis>unspecified
</emphasis></type>
983 <template-type-parameter name=
"Left"/>
984 <template-type-parameter name=
"Right"/>
986 <parameter name=
"left">
987 <paramtype>Left const
&</paramtype>
989 <parameter name=
"right">
990 <paramtype>Right const
&</paramtype>
993 <function name=
"operator&">
994 <type><emphasis>unspecified
</emphasis></type>
996 <template-type-parameter name=
"Left"/>
997 <template-type-parameter name=
"Right"/>
999 <parameter name=
"left">
1000 <paramtype>Left
&</paramtype>
1002 <parameter name=
"right">
1003 <paramtype>Right
&</paramtype>
1006 <function name=
"operator&">
1007 <type><emphasis>unspecified
</emphasis></type>
1009 <template-type-parameter name=
"Left"/>
1010 <template-type-parameter name=
"Right"/>
1012 <parameter name=
"left">
1013 <paramtype>Left
&</paramtype>
1015 <parameter name=
"right">
1016 <paramtype>Right const
&</paramtype>
1019 <function name=
"operator&">
1020 <type><emphasis>unspecified
</emphasis></type>
1022 <template-type-parameter name=
"Left"/>
1023 <template-type-parameter name=
"Right"/>
1025 <parameter name=
"left">
1026 <paramtype>Left const
&</paramtype>
1028 <parameter name=
"right">
1029 <paramtype>Right
&</paramtype>
1032 <function name=
"operator&">
1033 <type><emphasis>unspecified
</emphasis></type>
1035 <template-type-parameter name=
"Left"/>
1036 <template-type-parameter name=
"Right"/>
1038 <parameter name=
"left">
1039 <paramtype>Left const
&</paramtype>
1041 <parameter name=
"right">
1042 <paramtype>Right const
&</paramtype>
1045 <function name=
"operator|">
1046 <type><emphasis>unspecified
</emphasis></type>
1048 <template-type-parameter name=
"Left"/>
1049 <template-type-parameter name=
"Right"/>
1051 <parameter name=
"left">
1052 <paramtype>Left
&</paramtype>
1054 <parameter name=
"right">
1055 <paramtype>Right
&</paramtype>
1058 <function name=
"operator|">
1059 <type><emphasis>unspecified
</emphasis></type>
1061 <template-type-parameter name=
"Left"/>
1062 <template-type-parameter name=
"Right"/>
1064 <parameter name=
"left">
1065 <paramtype>Left
&</paramtype>
1067 <parameter name=
"right">
1068 <paramtype>Right const
&</paramtype>
1071 <function name=
"operator|">
1072 <type><emphasis>unspecified
</emphasis></type>
1074 <template-type-parameter name=
"Left"/>
1075 <template-type-parameter name=
"Right"/>
1077 <parameter name=
"left">
1078 <paramtype>Left const
&</paramtype>
1080 <parameter name=
"right">
1081 <paramtype>Right
&</paramtype>
1084 <function name=
"operator|">
1085 <type><emphasis>unspecified
</emphasis></type>
1087 <template-type-parameter name=
"Left"/>
1088 <template-type-parameter name=
"Right"/>
1090 <parameter name=
"left">
1091 <paramtype>Left const
&</paramtype>
1093 <parameter name=
"right">
1094 <paramtype>Right const
&</paramtype>
1097 <function name=
"operator^">
1098 <type><emphasis>unspecified
</emphasis></type>
1100 <template-type-parameter name=
"Left"/>
1101 <template-type-parameter name=
"Right"/>
1103 <parameter name=
"left">
1104 <paramtype>Left
&</paramtype>
1106 <parameter name=
"right">
1107 <paramtype>Right
&</paramtype>
1110 <function name=
"operator^">
1111 <type><emphasis>unspecified
</emphasis></type>
1113 <template-type-parameter name=
"Left"/>
1114 <template-type-parameter name=
"Right"/>
1116 <parameter name=
"left">
1117 <paramtype>Left
&</paramtype>
1119 <parameter name=
"right">
1120 <paramtype>Right const
&</paramtype>
1123 <function name=
"operator^">
1124 <type><emphasis>unspecified
</emphasis></type>
1126 <template-type-parameter name=
"Left"/>
1127 <template-type-parameter name=
"Right"/>
1129 <parameter name=
"left">
1130 <paramtype>Left const
&</paramtype>
1132 <parameter name=
"right">
1133 <paramtype>Right
&</paramtype>
1136 <function name=
"operator^">
1137 <type><emphasis>unspecified
</emphasis></type>
1139 <template-type-parameter name=
"Left"/>
1140 <template-type-parameter name=
"Right"/>
1142 <parameter name=
"left">
1143 <paramtype>Left const
&</paramtype>
1145 <parameter name=
"right">
1146 <paramtype>Right const
&</paramtype>
1149 <function name=
"operator,">
1150 <type><emphasis>unspecified
</emphasis></type>
1152 <template-type-parameter name=
"Left"/>
1153 <template-type-parameter name=
"Right"/>
1155 <parameter name=
"left">
1156 <paramtype>Left
&</paramtype>
1158 <parameter name=
"right">
1159 <paramtype>Right
&</paramtype>
1162 <function name=
"operator,">
1163 <type><emphasis>unspecified
</emphasis></type>
1165 <template-type-parameter name=
"Left"/>
1166 <template-type-parameter name=
"Right"/>
1168 <parameter name=
"left">
1169 <paramtype>Left
&</paramtype>
1171 <parameter name=
"right">
1172 <paramtype>Right const
&</paramtype>
1175 <function name=
"operator,">
1176 <type><emphasis>unspecified
</emphasis></type>
1178 <template-type-parameter name=
"Left"/>
1179 <template-type-parameter name=
"Right"/>
1181 <parameter name=
"left">
1182 <paramtype>Left const
&</paramtype>
1184 <parameter name=
"right">
1185 <paramtype>Right
&</paramtype>
1188 <function name=
"operator,">
1189 <type><emphasis>unspecified
</emphasis></type>
1191 <template-type-parameter name=
"Left"/>
1192 <template-type-parameter name=
"Right"/>
1194 <parameter name=
"left">
1195 <paramtype>Left const
&</paramtype>
1197 <parameter name=
"right">
1198 <paramtype>Right const
&</paramtype>
1201 <function name=
"operator->*">
1202 <type><emphasis>unspecified
</emphasis></type>
1204 <template-type-parameter name=
"Left"/>
1205 <template-type-parameter name=
"Right"/>
1207 <parameter name=
"left">
1208 <paramtype>Left
&</paramtype>
1210 <parameter name=
"right">
1211 <paramtype>Right
&</paramtype>
1214 <function name=
"operator->*">
1215 <type><emphasis>unspecified
</emphasis></type>
1217 <template-type-parameter name=
"Left"/>
1218 <template-type-parameter name=
"Right"/>
1220 <parameter name=
"left">
1221 <paramtype>Left
&</paramtype>
1223 <parameter name=
"right">
1224 <paramtype>Right const
&</paramtype>
1227 <function name=
"operator->*">
1228 <type><emphasis>unspecified
</emphasis></type>
1230 <template-type-parameter name=
"Left"/>
1231 <template-type-parameter name=
"Right"/>
1233 <parameter name=
"left">
1234 <paramtype>Left const
&</paramtype>
1236 <parameter name=
"right">
1237 <paramtype>Right
&</paramtype>
1240 <function name=
"operator->*">
1241 <type><emphasis>unspecified
</emphasis></type>
1243 <template-type-parameter name=
"Left"/>
1244 <template-type-parameter name=
"Right"/>
1246 <parameter name=
"left">
1247 <paramtype>Left const
&</paramtype>
1249 <parameter name=
"right">
1250 <paramtype>Right const
&</paramtype>
1253 <function name=
"operator<<=">
1254 <type><emphasis>unspecified
</emphasis></type>
1256 <template-type-parameter name=
"Left"/>
1257 <template-type-parameter name=
"Right"/>
1259 <parameter name=
"left">
1260 <paramtype>Left
&</paramtype>
1262 <parameter name=
"right">
1263 <paramtype>Right
&</paramtype>
1266 <function name=
"operator<<=">
1267 <type><emphasis>unspecified
</emphasis></type>
1269 <template-type-parameter name=
"Left"/>
1270 <template-type-parameter name=
"Right"/>
1272 <parameter name=
"left">
1273 <paramtype>Left
&</paramtype>
1275 <parameter name=
"right">
1276 <paramtype>Right const
&</paramtype>
1279 <function name=
"operator<<=">
1280 <type><emphasis>unspecified
</emphasis></type>
1282 <template-type-parameter name=
"Left"/>
1283 <template-type-parameter name=
"Right"/>
1285 <parameter name=
"left">
1286 <paramtype>Left const
&</paramtype>
1288 <parameter name=
"right">
1289 <paramtype>Right
&</paramtype>
1292 <function name=
"operator<<=">
1293 <type><emphasis>unspecified
</emphasis></type>
1295 <template-type-parameter name=
"Left"/>
1296 <template-type-parameter name=
"Right"/>
1298 <parameter name=
"left">
1299 <paramtype>Left const
&</paramtype>
1301 <parameter name=
"right">
1302 <paramtype>Right const
&</paramtype>
1305 <function name=
"operator>>=">
1306 <type><emphasis>unspecified
</emphasis></type>
1308 <template-type-parameter name=
"Left"/>
1309 <template-type-parameter name=
"Right"/>
1311 <parameter name=
"left">
1312 <paramtype>Left
&</paramtype>
1314 <parameter name=
"right">
1315 <paramtype>Right
&</paramtype>
1318 <function name=
"operator>>=">
1319 <type><emphasis>unspecified
</emphasis></type>
1321 <template-type-parameter name=
"Left"/>
1322 <template-type-parameter name=
"Right"/>
1324 <parameter name=
"left">
1325 <paramtype>Left
&</paramtype>
1327 <parameter name=
"right">
1328 <paramtype>Right const
&</paramtype>
1331 <function name=
"operator>>=">
1332 <type><emphasis>unspecified
</emphasis></type>
1334 <template-type-parameter name=
"Left"/>
1335 <template-type-parameter name=
"Right"/>
1337 <parameter name=
"left">
1338 <paramtype>Left const
&</paramtype>
1340 <parameter name=
"right">
1341 <paramtype>Right
&</paramtype>
1344 <function name=
"operator>>=">
1345 <type><emphasis>unspecified
</emphasis></type>
1347 <template-type-parameter name=
"Left"/>
1348 <template-type-parameter name=
"Right"/>
1350 <parameter name=
"left">
1351 <paramtype>Left const
&</paramtype>
1353 <parameter name=
"right">
1354 <paramtype>Right const
&</paramtype>
1357 <function name=
"operator*=">
1358 <type><emphasis>unspecified
</emphasis></type>
1360 <template-type-parameter name=
"Left"/>
1361 <template-type-parameter name=
"Right"/>
1363 <parameter name=
"left">
1364 <paramtype>Left
&</paramtype>
1366 <parameter name=
"right">
1367 <paramtype>Right
&</paramtype>
1370 <function name=
"operator*=">
1371 <type><emphasis>unspecified
</emphasis></type>
1373 <template-type-parameter name=
"Left"/>
1374 <template-type-parameter name=
"Right"/>
1376 <parameter name=
"left">
1377 <paramtype>Left
&</paramtype>
1379 <parameter name=
"right">
1380 <paramtype>Right const
&</paramtype>
1383 <function name=
"operator*=">
1384 <type><emphasis>unspecified
</emphasis></type>
1386 <template-type-parameter name=
"Left"/>
1387 <template-type-parameter name=
"Right"/>
1389 <parameter name=
"left">
1390 <paramtype>Left const
&</paramtype>
1392 <parameter name=
"right">
1393 <paramtype>Right
&</paramtype>
1396 <function name=
"operator*=">
1397 <type><emphasis>unspecified
</emphasis></type>
1399 <template-type-parameter name=
"Left"/>
1400 <template-type-parameter name=
"Right"/>
1402 <parameter name=
"left">
1403 <paramtype>Left const
&</paramtype>
1405 <parameter name=
"right">
1406 <paramtype>Right const
&</paramtype>
1409 <function name=
"operator/=">
1410 <type><emphasis>unspecified
</emphasis></type>
1412 <template-type-parameter name=
"Left"/>
1413 <template-type-parameter name=
"Right"/>
1415 <parameter name=
"left">
1416 <paramtype>Left
&</paramtype>
1418 <parameter name=
"right">
1419 <paramtype>Right
&</paramtype>
1422 <function name=
"operator/=">
1423 <type><emphasis>unspecified
</emphasis></type>
1425 <template-type-parameter name=
"Left"/>
1426 <template-type-parameter name=
"Right"/>
1428 <parameter name=
"left">
1429 <paramtype>Left
&</paramtype>
1431 <parameter name=
"right">
1432 <paramtype>Right const
&</paramtype>
1435 <function name=
"operator/=">
1436 <type><emphasis>unspecified
</emphasis></type>
1438 <template-type-parameter name=
"Left"/>
1439 <template-type-parameter name=
"Right"/>
1441 <parameter name=
"left">
1442 <paramtype>Left const
&</paramtype>
1444 <parameter name=
"right">
1445 <paramtype>Right
&</paramtype>
1448 <function name=
"operator/=">
1449 <type><emphasis>unspecified
</emphasis></type>
1451 <template-type-parameter name=
"Left"/>
1452 <template-type-parameter name=
"Right"/>
1454 <parameter name=
"left">
1455 <paramtype>Left const
&</paramtype>
1457 <parameter name=
"right">
1458 <paramtype>Right const
&</paramtype>
1461 <function name=
"operator%=">
1462 <type><emphasis>unspecified
</emphasis></type>
1464 <template-type-parameter name=
"Left"/>
1465 <template-type-parameter name=
"Right"/>
1467 <parameter name=
"left">
1468 <paramtype>Left
&</paramtype>
1470 <parameter name=
"right">
1471 <paramtype>Right
&</paramtype>
1474 <function name=
"operator%=">
1475 <type><emphasis>unspecified
</emphasis></type>
1477 <template-type-parameter name=
"Left"/>
1478 <template-type-parameter name=
"Right"/>
1480 <parameter name=
"left">
1481 <paramtype>Left
&</paramtype>
1483 <parameter name=
"right">
1484 <paramtype>Right const
&</paramtype>
1487 <function name=
"operator%=">
1488 <type><emphasis>unspecified
</emphasis></type>
1490 <template-type-parameter name=
"Left"/>
1491 <template-type-parameter name=
"Right"/>
1493 <parameter name=
"left">
1494 <paramtype>Left const
&</paramtype>
1496 <parameter name=
"right">
1497 <paramtype>Right
&</paramtype>
1500 <function name=
"operator%=">
1501 <type><emphasis>unspecified
</emphasis></type>
1503 <template-type-parameter name=
"Left"/>
1504 <template-type-parameter name=
"Right"/>
1506 <parameter name=
"left">
1507 <paramtype>Left const
&</paramtype>
1509 <parameter name=
"right">
1510 <paramtype>Right const
&</paramtype>
1513 <function name=
"operator+=">
1514 <type><emphasis>unspecified
</emphasis></type>
1516 <template-type-parameter name=
"Left"/>
1517 <template-type-parameter name=
"Right"/>
1519 <parameter name=
"left">
1520 <paramtype>Left
&</paramtype>
1522 <parameter name=
"right">
1523 <paramtype>Right
&</paramtype>
1526 <function name=
"operator+=">
1527 <type><emphasis>unspecified
</emphasis></type>
1529 <template-type-parameter name=
"Left"/>
1530 <template-type-parameter name=
"Right"/>
1532 <parameter name=
"left">
1533 <paramtype>Left
&</paramtype>
1535 <parameter name=
"right">
1536 <paramtype>Right const
&</paramtype>
1539 <function name=
"operator+=">
1540 <type><emphasis>unspecified
</emphasis></type>
1542 <template-type-parameter name=
"Left"/>
1543 <template-type-parameter name=
"Right"/>
1545 <parameter name=
"left">
1546 <paramtype>Left const
&</paramtype>
1548 <parameter name=
"right">
1549 <paramtype>Right
&</paramtype>
1552 <function name=
"operator+=">
1553 <type><emphasis>unspecified
</emphasis></type>
1555 <template-type-parameter name=
"Left"/>
1556 <template-type-parameter name=
"Right"/>
1558 <parameter name=
"left">
1559 <paramtype>Left const
&</paramtype>
1561 <parameter name=
"right">
1562 <paramtype>Right const
&</paramtype>
1565 <function name=
"operator-=">
1566 <type><emphasis>unspecified
</emphasis></type>
1568 <template-type-parameter name=
"Left"/>
1569 <template-type-parameter name=
"Right"/>
1571 <parameter name=
"left">
1572 <paramtype>Left
&</paramtype>
1574 <parameter name=
"right">
1575 <paramtype>Right
&</paramtype>
1578 <function name=
"operator-=">
1579 <type><emphasis>unspecified
</emphasis></type>
1581 <template-type-parameter name=
"Left"/>
1582 <template-type-parameter name=
"Right"/>
1584 <parameter name=
"left">
1585 <paramtype>Left
&</paramtype>
1587 <parameter name=
"right">
1588 <paramtype>Right const
&</paramtype>
1591 <function name=
"operator-=">
1592 <type><emphasis>unspecified
</emphasis></type>
1594 <template-type-parameter name=
"Left"/>
1595 <template-type-parameter name=
"Right"/>
1597 <parameter name=
"left">
1598 <paramtype>Left const
&</paramtype>
1600 <parameter name=
"right">
1601 <paramtype>Right
&</paramtype>
1604 <function name=
"operator-=">
1605 <type><emphasis>unspecified
</emphasis></type>
1607 <template-type-parameter name=
"Left"/>
1608 <template-type-parameter name=
"Right"/>
1610 <parameter name=
"left">
1611 <paramtype>Left const
&</paramtype>
1613 <parameter name=
"right">
1614 <paramtype>Right const
&</paramtype>
1617 <function name=
"operator&=">
1618 <type><emphasis>unspecified
</emphasis></type>
1620 <template-type-parameter name=
"Left"/>
1621 <template-type-parameter name=
"Right"/>
1623 <parameter name=
"left">
1624 <paramtype>Left
&</paramtype>
1626 <parameter name=
"right">
1627 <paramtype>Right
&</paramtype>
1630 <function name=
"operator&=">
1631 <type><emphasis>unspecified
</emphasis></type>
1633 <template-type-parameter name=
"Left"/>
1634 <template-type-parameter name=
"Right"/>
1636 <parameter name=
"left">
1637 <paramtype>Left
&</paramtype>
1639 <parameter name=
"right">
1640 <paramtype>Right const
&</paramtype>
1643 <function name=
"operator&=">
1644 <type><emphasis>unspecified
</emphasis></type>
1646 <template-type-parameter name=
"Left"/>
1647 <template-type-parameter name=
"Right"/>
1649 <parameter name=
"left">
1650 <paramtype>Left const
&</paramtype>
1652 <parameter name=
"right">
1653 <paramtype>Right
&</paramtype>
1656 <function name=
"operator&=">
1657 <type><emphasis>unspecified
</emphasis></type>
1659 <template-type-parameter name=
"Left"/>
1660 <template-type-parameter name=
"Right"/>
1662 <parameter name=
"left">
1663 <paramtype>Left const
&</paramtype>
1665 <parameter name=
"right">
1666 <paramtype>Right const
&</paramtype>
1669 <function name=
"operator|=">
1670 <type><emphasis>unspecified
</emphasis></type>
1672 <template-type-parameter name=
"Left"/>
1673 <template-type-parameter name=
"Right"/>
1675 <parameter name=
"left">
1676 <paramtype>Left
&</paramtype>
1678 <parameter name=
"right">
1679 <paramtype>Right
&</paramtype>
1682 <function name=
"operator|=">
1683 <type><emphasis>unspecified
</emphasis></type>
1685 <template-type-parameter name=
"Left"/>
1686 <template-type-parameter name=
"Right"/>
1688 <parameter name=
"left">
1689 <paramtype>Left
&</paramtype>
1691 <parameter name=
"right">
1692 <paramtype>Right const
&</paramtype>
1695 <function name=
"operator|=">
1696 <type><emphasis>unspecified
</emphasis></type>
1698 <template-type-parameter name=
"Left"/>
1699 <template-type-parameter name=
"Right"/>
1701 <parameter name=
"left">
1702 <paramtype>Left const
&</paramtype>
1704 <parameter name=
"right">
1705 <paramtype>Right
&</paramtype>
1708 <function name=
"operator|=">
1709 <type><emphasis>unspecified
</emphasis></type>
1711 <template-type-parameter name=
"Left"/>
1712 <template-type-parameter name=
"Right"/>
1714 <parameter name=
"left">
1715 <paramtype>Left const
&</paramtype>
1717 <parameter name=
"right">
1718 <paramtype>Right const
&</paramtype>
1721 <function name=
"operator^=">
1722 <type><emphasis>unspecified
</emphasis></type>
1724 <template-type-parameter name=
"Left"/>
1725 <template-type-parameter name=
"Right"/>
1727 <parameter name=
"left">
1728 <paramtype>Left
&</paramtype>
1730 <parameter name=
"right">
1731 <paramtype>Right
&</paramtype>
1734 <function name=
"operator^=">
1735 <type><emphasis>unspecified
</emphasis></type>
1737 <template-type-parameter name=
"Left"/>
1738 <template-type-parameter name=
"Right"/>
1740 <parameter name=
"left">
1741 <paramtype>Left
&</paramtype>
1743 <parameter name=
"right">
1744 <paramtype>Right const
&</paramtype>
1747 <function name=
"operator^=">
1748 <type><emphasis>unspecified
</emphasis></type>
1750 <template-type-parameter name=
"Left"/>
1751 <template-type-parameter name=
"Right"/>
1753 <parameter name=
"left">
1754 <paramtype>Left const
&</paramtype>
1756 <parameter name=
"right">
1757 <paramtype>Right
&</paramtype>
1760 <function name=
"operator^=">
1761 <type><emphasis>unspecified
</emphasis></type>
1763 <template-type-parameter name=
"Left"/>
1764 <template-type-parameter name=
"Right"/>
1766 <parameter name=
"left">
1767 <paramtype>Left const
&</paramtype>
1769 <parameter name=
"right">
1770 <paramtype>Right const
&</paramtype>
1773 <function name=
"if_else">
1774 <type>typename
<classname>proto::result_of::make_expr
</classname><
1775 <classname>proto::tag::if_else_
</classname>,
1776 <classname>proto::deduce_domain
</classname>,
1780 >::type const
</type>
1782 <template-type-parameter name=
"A0"/>
1783 <template-type-parameter name=
"A1"/>
1784 <template-type-parameter name=
"A2"/>
1786 <parameter name=
"a0">
1787 <paramtype>A0 const
&</paramtype>
1789 <parameter name=
"a1">
1790 <paramtype>A1 const
&</paramtype>
1792 <parameter name=
"a2">
1793 <paramtype>A2 const
&</paramtype>
1798 <macro name=
"BOOST_PROTO_DEFINE_OPERATORS" kind=
"functionlike">
1799 <macro-parameter name=
"Trait"/>
1800 <macro-parameter name=
"Domain"/>
1801 <purpose>Defines a complete set of expression template-building operator overloads for use
1802 with non-Proto terminal types.
</purpose>
1805 With
<computeroutput>BOOST_PROTO_DEFINE_OPERATORS()
</computeroutput>, it is possible to
1806 non-intrusively adapt an existing (non-Proto) type to be a Proto terminal.
1809 <computeroutput>Trait
</computeroutput> is the name of a unary Boolean metafunction that returns
1810 true for any types you would like to treat as Proto terminals.
1813 <computeroutput>Domain
</computeroutput> is the name of the Proto domain associated with
1814 these new Proto terminals. You may use
1815 <computeroutput><classname alt=
"boost::proto::default_domain">proto::default_domain
</classname></computeroutput>
1816 for the
<computeroutput>Domain
</computeroutput> if you do not wish to associate these terminals
1820 <emphasis role=
"bold">Example:
</emphasis>
1821 <programlisting>namespace My {
1822 // A non-Proto terminal type
1825 // A unary Boolean metafunction that returns true for type S
1826 template
<typename T
> struct IsS : mpl::false_ {};
1827 template
<> struct IsS
<S
> : mpl::true_ {};
1829 // Make S a Proto terminal non-intrusively by defining the
1830 // appropriate operator overloads. This should be in the same
1831 // namespace as S so that these overloads can be found by
1832 // argument-dependent lookup
1833 <macroname>BOOST_PROTO_DEFINE_OPERATORS
</macroname>(IsS, proto::default_domain)
1839 // OK, this builds a Proto expression template: