1<?xml version="1.0" encoding="utf-8"?> 2<!-- 3 Copyright 2012 Eric Niebler 4 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) 8 --> 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"> 14 <template> 15 <template-type-parameter name="T"/> 16 </template> 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> 20 </struct> 21 <function name="operator+"> 22 <type><emphasis>unspecified</emphasis></type> 23 <template> 24 <template-type-parameter name="Arg"/> 25 </template> 26 <parameter name="arg"> 27 <paramtype>Arg &</paramtype> 28 </parameter> 29 </function> 30 <function name="operator+"> 31 <type><emphasis>unspecified</emphasis></type> 32 <template> 33 <template-type-parameter name="Arg"/> 34 </template> 35 <parameter name="arg"> 36 <paramtype>Arg const &</paramtype> 37 </parameter> 38 </function> 39 <function name="operator-"> 40 <type><emphasis>unspecified</emphasis></type> 41 <template> 42 <template-type-parameter name="Arg"/> 43 </template> 44 <parameter name="arg"> 45 <paramtype>Arg &</paramtype> 46 </parameter> 47 </function> 48 <function name="operator-"> 49 <type><emphasis>unspecified</emphasis></type> 50 <template> 51 <template-type-parameter name="Arg"/> 52 </template> 53 <parameter name="arg"> 54 <paramtype>Arg const &</paramtype> 55 </parameter> 56 </function> 57 <function name="operator*"> 58 <type><emphasis>unspecified</emphasis></type> 59 <template> 60 <template-type-parameter name="Arg"/> 61 </template> 62 <parameter name="arg"> 63 <paramtype>Arg &</paramtype> 64 </parameter> 65 </function> 66 <function name="operator*"> 67 <type><emphasis>unspecified</emphasis></type> 68 <template> 69 <template-type-parameter name="Arg"/> 70 </template> 71 <parameter name="arg"> 72 <paramtype>Arg const &</paramtype> 73 </parameter> 74 </function> 75 <function name="operator~"> 76 <type><emphasis>unspecified</emphasis></type> 77 <template> 78 <template-type-parameter name="Arg"/> 79 </template> 80 <parameter name="arg"> 81 <paramtype>Arg &</paramtype> 82 </parameter> 83 </function> 84 <function name="operator~"> 85 <type><emphasis>unspecified</emphasis></type> 86 <template> 87 <template-type-parameter name="Arg"/> 88 </template> 89 <parameter name="arg"> 90 <paramtype>Arg const &</paramtype> 91 </parameter> 92 </function> 93 <function name="operator&"> 94 <type><emphasis>unspecified</emphasis></type> 95 <template> 96 <template-type-parameter name="Arg"/> 97 </template> 98 <parameter name="arg"> 99 <paramtype>Arg &</paramtype> 100 </parameter> 101 </function> 102 <function name="operator&"> 103 <type><emphasis>unspecified</emphasis></type> 104 <template> 105 <template-type-parameter name="Arg"/> 106 </template> 107 <parameter name="arg"> 108 <paramtype>Arg const &</paramtype> 109 </parameter> 110 </function> 111 <function name="operator!"> 112 <type><emphasis>unspecified</emphasis></type> 113 <template> 114 <template-type-parameter name="Arg"/> 115 </template> 116 <parameter name="arg"> 117 <paramtype>Arg &</paramtype> 118 </parameter> 119 </function> 120 <function name="operator!"> 121 <type><emphasis>unspecified</emphasis></type> 122 <template> 123 <template-type-parameter name="Arg"/> 124 </template> 125 <parameter name="arg"> 126 <paramtype>Arg const &</paramtype> 127 </parameter> 128 </function> 129 <function name="operator++"> 130 <type><emphasis>unspecified</emphasis></type> 131 <template> 132 <template-type-parameter name="Arg"/> 133 </template> 134 <parameter name="arg"> 135 <paramtype>Arg &</paramtype> 136 </parameter> 137 </function> 138 <function name="operator++"> 139 <type><emphasis>unspecified</emphasis></type> 140 <template> 141 <template-type-parameter name="Arg"/> 142 </template> 143 <parameter name="arg"> 144 <paramtype>Arg const &</paramtype> 145 </parameter> 146 </function> 147 <function name="operator--"> 148 <type><emphasis>unspecified</emphasis></type> 149 <template> 150 <template-type-parameter name="Arg"/> 151 </template> 152 <parameter name="arg"> 153 <paramtype>Arg &</paramtype> 154 </parameter> 155 </function> 156 <function name="operator--"> 157 <type><emphasis>unspecified</emphasis></type> 158 <template> 159 <template-type-parameter name="Arg"/> 160 </template> 161 <parameter name="arg"> 162 <paramtype>Arg const &</paramtype> 163 </parameter> 164 </function> 165 <function name="operator++"> 166 <type><emphasis>unspecified</emphasis></type> 167 <template> 168 <template-type-parameter name="Arg"/> 169 </template> 170 <parameter name="arg"> 171 <paramtype>Arg &</paramtype> 172 </parameter> 173 <parameter name=""> 174 <paramtype>int</paramtype> 175 </parameter> 176 </function> 177 <function name="operator++"> 178 <type><emphasis>unspecified</emphasis></type> 179 <template> 180 <template-type-parameter name="Arg"/> 181 </template> 182 <parameter name="arg"> 183 <paramtype>Arg const &</paramtype> 184 </parameter> 185 <parameter name=""> 186 <paramtype>int</paramtype> 187 </parameter> 188 </function> 189 <function name="operator--"> 190 <type><emphasis>unspecified</emphasis></type> 191 <template> 192 <template-type-parameter name="Arg"/> 193 </template> 194 <parameter name="arg"> 195 <paramtype>Arg &</paramtype> 196 </parameter> 197 <parameter name=""> 198 <paramtype>int</paramtype> 199 </parameter> 200 </function> 201 <function name="operator--"> 202 <type><emphasis>unspecified</emphasis></type> 203 <template> 204 <template-type-parameter name="Arg"/> 205 </template> 206 <parameter name="arg"> 207 <paramtype>Arg const &</paramtype> 208 </parameter> 209 <parameter name=""> 210 <paramtype>int</paramtype> 211 </parameter> 212 </function> 213 <function name="operator<<"> 214 <type><emphasis>unspecified</emphasis></type> 215 <template> 216 <template-type-parameter name="Left"/> 217 <template-type-parameter name="Right"/> 218 </template> 219 <parameter name="left"> 220 <paramtype>Left &</paramtype> 221 </parameter> 222 <parameter name="right"> 223 <paramtype>Right &</paramtype> 224 </parameter> 225 </function> 226 <function name="operator<<"> 227 <type><emphasis>unspecified</emphasis></type> 228 <template> 229 <template-type-parameter name="Left"/> 230 <template-type-parameter name="Right"/> 231 </template> 232 <parameter name="left"> 233 <paramtype>Left &</paramtype> 234 </parameter> 235 <parameter name="right"> 236 <paramtype>Right const &</paramtype> 237 </parameter> 238 </function> 239 <function name="operator<<"> 240 <type><emphasis>unspecified</emphasis></type> 241 <template> 242 <template-type-parameter name="Left"/> 243 <template-type-parameter name="Right"/> 244 </template> 245 <parameter name="left"> 246 <paramtype>Left const &</paramtype> 247 </parameter> 248 <parameter name="right"> 249 <paramtype>Right &</paramtype> 250 </parameter> 251 </function> 252 <function name="operator<<"> 253 <type><emphasis>unspecified</emphasis></type> 254 <template> 255 <template-type-parameter name="Left"/> 256 <template-type-parameter name="Right"/> 257 </template> 258 <parameter name="left"> 259 <paramtype>Left const &</paramtype> 260 </parameter> 261 <parameter name="right"> 262 <paramtype>Right const &</paramtype> 263 </parameter> 264 </function> 265 <function name="operator>>"> 266 <type><emphasis>unspecified</emphasis></type> 267 <template> 268 <template-type-parameter name="Left"/> 269 <template-type-parameter name="Right"/> 270 </template> 271 <parameter name="left"> 272 <paramtype>Left &</paramtype> 273 </parameter> 274 <parameter name="right"> 275 <paramtype>Right &</paramtype> 276 </parameter> 277 </function> 278 <function name="operator>>"> 279 <type><emphasis>unspecified</emphasis></type> 280 <template> 281 <template-type-parameter name="Left"/> 282 <template-type-parameter name="Right"/> 283 </template> 284 <parameter name="left"> 285 <paramtype>Left &</paramtype> 286 </parameter> 287 <parameter name="right"> 288 <paramtype>Right const &</paramtype> 289 </parameter> 290 </function> 291 <function name="operator>>"> 292 <type><emphasis>unspecified</emphasis></type> 293 <template> 294 <template-type-parameter name="Left"/> 295 <template-type-parameter name="Right"/> 296 </template> 297 <parameter name="left"> 298 <paramtype>Left const &</paramtype> 299 </parameter> 300 <parameter name="right"> 301 <paramtype>Right &</paramtype> 302 </parameter> 303 </function> 304 <function name="operator>>"> 305 <type><emphasis>unspecified</emphasis></type> 306 <template> 307 <template-type-parameter name="Left"/> 308 <template-type-parameter name="Right"/> 309 </template> 310 <parameter name="left"> 311 <paramtype>Left const &</paramtype> 312 </parameter> 313 <parameter name="right"> 314 <paramtype>Right const &</paramtype> 315 </parameter> 316 </function> 317 <function name="operator*"> 318 <type><emphasis>unspecified</emphasis></type> 319 <template> 320 <template-type-parameter name="Left"/> 321 <template-type-parameter name="Right"/> 322 </template> 323 <parameter name="left"> 324 <paramtype>Left &</paramtype> 325 </parameter> 326 <parameter name="right"> 327 <paramtype>Right &</paramtype> 328 </parameter> 329 </function> 330 <function name="operator*"> 331 <type><emphasis>unspecified</emphasis></type> 332 <template> 333 <template-type-parameter name="Left"/> 334 <template-type-parameter name="Right"/> 335 </template> 336 <parameter name="left"> 337 <paramtype>Left &</paramtype> 338 </parameter> 339 <parameter name="right"> 340 <paramtype>Right const &</paramtype> 341 </parameter> 342 </function> 343 <function name="operator*"> 344 <type><emphasis>unspecified</emphasis></type> 345 <template> 346 <template-type-parameter name="Left"/> 347 <template-type-parameter name="Right"/> 348 </template> 349 <parameter name="left"> 350 <paramtype>Left const &</paramtype> 351 </parameter> 352 <parameter name="right"> 353 <paramtype>Right &</paramtype> 354 </parameter> 355 </function> 356 <function name="operator*"> 357 <type><emphasis>unspecified</emphasis></type> 358 <template> 359 <template-type-parameter name="Left"/> 360 <template-type-parameter name="Right"/> 361 </template> 362 <parameter name="left"> 363 <paramtype>Left const &</paramtype> 364 </parameter> 365 <parameter name="right"> 366 <paramtype>Right const &</paramtype> 367 </parameter> 368 </function> 369 <function name="operator/"> 370 <type><emphasis>unspecified</emphasis></type> 371 <template> 372 <template-type-parameter name="Left"/> 373 <template-type-parameter name="Right"/> 374 </template> 375 <parameter name="left"> 376 <paramtype>Left &</paramtype> 377 </parameter> 378 <parameter name="right"> 379 <paramtype>Right &</paramtype> 380 </parameter> 381 </function> 382 <function name="operator/"> 383 <type><emphasis>unspecified</emphasis></type> 384 <template> 385 <template-type-parameter name="Left"/> 386 <template-type-parameter name="Right"/> 387 </template> 388 <parameter name="left"> 389 <paramtype>Left &</paramtype> 390 </parameter> 391 <parameter name="right"> 392 <paramtype>Right const &</paramtype> 393 </parameter> 394 </function> 395 <function name="operator/"> 396 <type><emphasis>unspecified</emphasis></type> 397 <template> 398 <template-type-parameter name="Left"/> 399 <template-type-parameter name="Right"/> 400 </template> 401 <parameter name="left"> 402 <paramtype>Left const &</paramtype> 403 </parameter> 404 <parameter name="right"> 405 <paramtype>Right &</paramtype> 406 </parameter> 407 </function> 408 <function name="operator/"> 409 <type><emphasis>unspecified</emphasis></type> 410 <template> 411 <template-type-parameter name="Left"/> 412 <template-type-parameter name="Right"/> 413 </template> 414 <parameter name="left"> 415 <paramtype>Left const &</paramtype> 416 </parameter> 417 <parameter name="right"> 418 <paramtype>Right const &</paramtype> 419 </parameter> 420 </function> 421 <function name="operator%"> 422 <type><emphasis>unspecified</emphasis></type> 423 <template> 424 <template-type-parameter name="Left"/> 425 <template-type-parameter name="Right"/> 426 </template> 427 <parameter name="left"> 428 <paramtype>Left &</paramtype> 429 </parameter> 430 <parameter name="right"> 431 <paramtype>Right &</paramtype> 432 </parameter> 433 </function> 434 <function name="operator%"> 435 <type><emphasis>unspecified</emphasis></type> 436 <template> 437 <template-type-parameter name="Left"/> 438 <template-type-parameter name="Right"/> 439 </template> 440 <parameter name="left"> 441 <paramtype>Left &</paramtype> 442 </parameter> 443 <parameter name="right"> 444 <paramtype>Right const &</paramtype> 445 </parameter> 446 </function> 447 <function name="operator%"> 448 <type><emphasis>unspecified</emphasis></type> 449 <template> 450 <template-type-parameter name="Left"/> 451 <template-type-parameter name="Right"/> 452 </template> 453 <parameter name="left"> 454 <paramtype>Left const &</paramtype> 455 </parameter> 456 <parameter name="right"> 457 <paramtype>Right &</paramtype> 458 </parameter> 459 </function> 460 <function name="operator%"> 461 <type><emphasis>unspecified</emphasis></type> 462 <template> 463 <template-type-parameter name="Left"/> 464 <template-type-parameter name="Right"/> 465 </template> 466 <parameter name="left"> 467 <paramtype>Left const &</paramtype> 468 </parameter> 469 <parameter name="right"> 470 <paramtype>Right const &</paramtype> 471 </parameter> 472 </function> 473 <function name="operator+"> 474 <type><emphasis>unspecified</emphasis></type> 475 <template> 476 <template-type-parameter name="Left"/> 477 <template-type-parameter name="Right"/> 478 </template> 479 <parameter name="left"> 480 <paramtype>Left &</paramtype> 481 </parameter> 482 <parameter name="right"> 483 <paramtype>Right &</paramtype> 484 </parameter> 485 </function> 486 <function name="operator+"> 487 <type><emphasis>unspecified</emphasis></type> 488 <template> 489 <template-type-parameter name="Left"/> 490 <template-type-parameter name="Right"/> 491 </template> 492 <parameter name="left"> 493 <paramtype>Left &</paramtype> 494 </parameter> 495 <parameter name="right"> 496 <paramtype>Right const &</paramtype> 497 </parameter> 498 </function> 499 <function name="operator+"> 500 <type><emphasis>unspecified</emphasis></type> 501 <template> 502 <template-type-parameter name="Left"/> 503 <template-type-parameter name="Right"/> 504 </template> 505 <parameter name="left"> 506 <paramtype>Left const &</paramtype> 507 </parameter> 508 <parameter name="right"> 509 <paramtype>Right &</paramtype> 510 </parameter> 511 </function> 512 <function name="operator+"> 513 <type><emphasis>unspecified</emphasis></type> 514 <template> 515 <template-type-parameter name="Left"/> 516 <template-type-parameter name="Right"/> 517 </template> 518 <parameter name="left"> 519 <paramtype>Left const &</paramtype> 520 </parameter> 521 <parameter name="right"> 522 <paramtype>Right const &</paramtype> 523 </parameter> 524 </function> 525 <function name="operator-"> 526 <type><emphasis>unspecified</emphasis></type> 527 <template> 528 <template-type-parameter name="Left"/> 529 <template-type-parameter name="Right"/> 530 </template> 531 <parameter name="left"> 532 <paramtype>Left &</paramtype> 533 </parameter> 534 <parameter name="right"> 535 <paramtype>Right &</paramtype> 536 </parameter> 537 </function> 538 <function name="operator-"> 539 <type><emphasis>unspecified</emphasis></type> 540 <template> 541 <template-type-parameter name="Left"/> 542 <template-type-parameter name="Right"/> 543 </template> 544 <parameter name="left"> 545 <paramtype>Left &</paramtype> 546 </parameter> 547 <parameter name="right"> 548 <paramtype>Right const &</paramtype> 549 </parameter> 550 </function> 551 <function name="operator-"> 552 <type><emphasis>unspecified</emphasis></type> 553 <template> 554 <template-type-parameter name="Left"/> 555 <template-type-parameter name="Right"/> 556 </template> 557 <parameter name="left"> 558 <paramtype>Left const &</paramtype> 559 </parameter> 560 <parameter name="right"> 561 <paramtype>Right &</paramtype> 562 </parameter> 563 </function> 564 <function name="operator-"> 565 <type><emphasis>unspecified</emphasis></type> 566 <template> 567 <template-type-parameter name="Left"/> 568 <template-type-parameter name="Right"/> 569 </template> 570 <parameter name="left"> 571 <paramtype>Left const &</paramtype> 572 </parameter> 573 <parameter name="right"> 574 <paramtype>Right const &</paramtype> 575 </parameter> 576 </function> 577 <function name="operator<"> 578 <type><emphasis>unspecified</emphasis></type> 579 <template> 580 <template-type-parameter name="Left"/> 581 <template-type-parameter name="Right"/> 582 </template> 583 <parameter name="left"> 584 <paramtype>Left &</paramtype> 585 </parameter> 586 <parameter name="right"> 587 <paramtype>Right &</paramtype> 588 </parameter> 589 </function> 590 <function name="operator<"> 591 <type><emphasis>unspecified</emphasis></type> 592 <template> 593 <template-type-parameter name="Left"/> 594 <template-type-parameter name="Right"/> 595 </template> 596 <parameter name="left"> 597 <paramtype>Left &</paramtype> 598 </parameter> 599 <parameter name="right"> 600 <paramtype>Right const &</paramtype> 601 </parameter> 602 </function> 603 <function name="operator<"> 604 <type><emphasis>unspecified</emphasis></type> 605 <template> 606 <template-type-parameter name="Left"/> 607 <template-type-parameter name="Right"/> 608 </template> 609 <parameter name="left"> 610 <paramtype>Left const &</paramtype> 611 </parameter> 612 <parameter name="right"> 613 <paramtype>Right &</paramtype> 614 </parameter> 615 </function> 616 <function name="operator<"> 617 <type><emphasis>unspecified</emphasis></type> 618 <template> 619 <template-type-parameter name="Left"/> 620 <template-type-parameter name="Right"/> 621 </template> 622 <parameter name="left"> 623 <paramtype>Left const &</paramtype> 624 </parameter> 625 <parameter name="right"> 626 <paramtype>Right const &</paramtype> 627 </parameter> 628 </function> 629 <function name="operator>"> 630 <type><emphasis>unspecified</emphasis></type> 631 <template> 632 <template-type-parameter name="Left"/> 633 <template-type-parameter name="Right"/> 634 </template> 635 <parameter name="left"> 636 <paramtype>Left &</paramtype> 637 </parameter> 638 <parameter name="right"> 639 <paramtype>Right &</paramtype> 640 </parameter> 641 </function> 642 <function name="operator>"> 643 <type><emphasis>unspecified</emphasis></type> 644 <template> 645 <template-type-parameter name="Left"/> 646 <template-type-parameter name="Right"/> 647 </template> 648 <parameter name="left"> 649 <paramtype>Left &</paramtype> 650 </parameter> 651 <parameter name="right"> 652 <paramtype>Right const &</paramtype> 653 </parameter> 654 </function> 655 <function name="operator>"> 656 <type><emphasis>unspecified</emphasis></type> 657 <template> 658 <template-type-parameter name="Left"/> 659 <template-type-parameter name="Right"/> 660 </template> 661 <parameter name="left"> 662 <paramtype>Left const &</paramtype> 663 </parameter> 664 <parameter name="right"> 665 <paramtype>Right &</paramtype> 666 </parameter> 667 </function> 668 <function name="operator>"> 669 <type><emphasis>unspecified</emphasis></type> 670 <template> 671 <template-type-parameter name="Left"/> 672 <template-type-parameter name="Right"/> 673 </template> 674 <parameter name="left"> 675 <paramtype>Left const &</paramtype> 676 </parameter> 677 <parameter name="right"> 678 <paramtype>Right const &</paramtype> 679 </parameter> 680 </function> 681 <function name="operator<="> 682 <type><emphasis>unspecified</emphasis></type> 683 <template> 684 <template-type-parameter name="Left"/> 685 <template-type-parameter name="Right"/> 686 </template> 687 <parameter name="left"> 688 <paramtype>Left &</paramtype> 689 </parameter> 690 <parameter name="right"> 691 <paramtype>Right &</paramtype> 692 </parameter> 693 </function> 694 <function name="operator<="> 695 <type><emphasis>unspecified</emphasis></type> 696 <template> 697 <template-type-parameter name="Left"/> 698 <template-type-parameter name="Right"/> 699 </template> 700 <parameter name="left"> 701 <paramtype>Left &</paramtype> 702 </parameter> 703 <parameter name="right"> 704 <paramtype>Right const &</paramtype> 705 </parameter> 706 </function> 707 <function name="operator<="> 708 <type><emphasis>unspecified</emphasis></type> 709 <template> 710 <template-type-parameter name="Left"/> 711 <template-type-parameter name="Right"/> 712 </template> 713 <parameter name="left"> 714 <paramtype>Left const &</paramtype> 715 </parameter> 716 <parameter name="right"> 717 <paramtype>Right &</paramtype> 718 </parameter> 719 </function> 720 <function name="operator<="> 721 <type><emphasis>unspecified</emphasis></type> 722 <template> 723 <template-type-parameter name="Left"/> 724 <template-type-parameter name="Right"/> 725 </template> 726 <parameter name="left"> 727 <paramtype>Left const &</paramtype> 728 </parameter> 729 <parameter name="right"> 730 <paramtype>Right const &</paramtype> 731 </parameter> 732 </function> 733 <function name="operator>="> 734 <type><emphasis>unspecified</emphasis></type> 735 <template> 736 <template-type-parameter name="Left"/> 737 <template-type-parameter name="Right"/> 738 </template> 739 <parameter name="left"> 740 <paramtype>Left &</paramtype> 741 </parameter> 742 <parameter name="right"> 743 <paramtype>Right &</paramtype> 744 </parameter> 745 </function> 746 <function name="operator>="> 747 <type><emphasis>unspecified</emphasis></type> 748 <template> 749 <template-type-parameter name="Left"/> 750 <template-type-parameter name="Right"/> 751 </template> 752 <parameter name="left"> 753 <paramtype>Left &</paramtype> 754 </parameter> 755 <parameter name="right"> 756 <paramtype>Right const &</paramtype> 757 </parameter> 758 </function> 759 <function name="operator>="> 760 <type><emphasis>unspecified</emphasis></type> 761 <template> 762 <template-type-parameter name="Left"/> 763 <template-type-parameter name="Right"/> 764 </template> 765 <parameter name="left"> 766 <paramtype>Left const &</paramtype> 767 </parameter> 768 <parameter name="right"> 769 <paramtype>Right &</paramtype> 770 </parameter> 771 </function> 772 <function name="operator>="> 773 <type><emphasis>unspecified</emphasis></type> 774 <template> 775 <template-type-parameter name="Left"/> 776 <template-type-parameter name="Right"/> 777 </template> 778 <parameter name="left"> 779 <paramtype>Left const &</paramtype> 780 </parameter> 781 <parameter name="right"> 782 <paramtype>Right const &</paramtype> 783 </parameter> 784 </function> 785 <function name="operator=="> 786 <type><emphasis>unspecified</emphasis></type> 787 <template> 788 <template-type-parameter name="Left"/> 789 <template-type-parameter name="Right"/> 790 </template> 791 <parameter name="left"> 792 <paramtype>Left &</paramtype> 793 </parameter> 794 <parameter name="right"> 795 <paramtype>Right &</paramtype> 796 </parameter> 797 </function> 798 <function name="operator=="> 799 <type><emphasis>unspecified</emphasis></type> 800 <template> 801 <template-type-parameter name="Left"/> 802 <template-type-parameter name="Right"/> 803 </template> 804 <parameter name="left"> 805 <paramtype>Left &</paramtype> 806 </parameter> 807 <parameter name="right"> 808 <paramtype>Right const &</paramtype> 809 </parameter> 810 </function> 811 <function name="operator=="> 812 <type><emphasis>unspecified</emphasis></type> 813 <template> 814 <template-type-parameter name="Left"/> 815 <template-type-parameter name="Right"/> 816 </template> 817 <parameter name="left"> 818 <paramtype>Left const &</paramtype> 819 </parameter> 820 <parameter name="right"> 821 <paramtype>Right &</paramtype> 822 </parameter> 823 </function> 824 <function name="operator=="> 825 <type><emphasis>unspecified</emphasis></type> 826 <template> 827 <template-type-parameter name="Left"/> 828 <template-type-parameter name="Right"/> 829 </template> 830 <parameter name="left"> 831 <paramtype>Left const &</paramtype> 832 </parameter> 833 <parameter name="right"> 834 <paramtype>Right const &</paramtype> 835 </parameter> 836 </function> 837 <function name="operator!="> 838 <type><emphasis>unspecified</emphasis></type> 839 <template> 840 <template-type-parameter name="Left"/> 841 <template-type-parameter name="Right"/> 842 </template> 843 <parameter name="left"> 844 <paramtype>Left &</paramtype> 845 </parameter> 846 <parameter name="right"> 847 <paramtype>Right &</paramtype> 848 </parameter> 849 </function> 850 <function name="operator!="> 851 <type><emphasis>unspecified</emphasis></type> 852 <template> 853 <template-type-parameter name="Left"/> 854 <template-type-parameter name="Right"/> 855 </template> 856 <parameter name="left"> 857 <paramtype>Left &</paramtype> 858 </parameter> 859 <parameter name="right"> 860 <paramtype>Right const &</paramtype> 861 </parameter> 862 </function> 863 <function name="operator!="> 864 <type><emphasis>unspecified</emphasis></type> 865 <template> 866 <template-type-parameter name="Left"/> 867 <template-type-parameter name="Right"/> 868 </template> 869 <parameter name="left"> 870 <paramtype>Left const &</paramtype> 871 </parameter> 872 <parameter name="right"> 873 <paramtype>Right &</paramtype> 874 </parameter> 875 </function> 876 <function name="operator!="> 877 <type><emphasis>unspecified</emphasis></type> 878 <template> 879 <template-type-parameter name="Left"/> 880 <template-type-parameter name="Right"/> 881 </template> 882 <parameter name="left"> 883 <paramtype>Left const &</paramtype> 884 </parameter> 885 <parameter name="right"> 886 <paramtype>Right const &</paramtype> 887 </parameter> 888 </function> 889 <function name="operator||"> 890 <type><emphasis>unspecified</emphasis></type> 891 <template> 892 <template-type-parameter name="Left"/> 893 <template-type-parameter name="Right"/> 894 </template> 895 <parameter name="left"> 896 <paramtype>Left &</paramtype> 897 </parameter> 898 <parameter name="right"> 899 <paramtype>Right &</paramtype> 900 </parameter> 901 </function> 902 <function name="operator||"> 903 <type><emphasis>unspecified</emphasis></type> 904 <template> 905 <template-type-parameter name="Left"/> 906 <template-type-parameter name="Right"/> 907 </template> 908 <parameter name="left"> 909 <paramtype>Left &</paramtype> 910 </parameter> 911 <parameter name="right"> 912 <paramtype>Right const &</paramtype> 913 </parameter> 914 </function> 915 <function name="operator||"> 916 <type><emphasis>unspecified</emphasis></type> 917 <template> 918 <template-type-parameter name="Left"/> 919 <template-type-parameter name="Right"/> 920 </template> 921 <parameter name="left"> 922 <paramtype>Left const &</paramtype> 923 </parameter> 924 <parameter name="right"> 925 <paramtype>Right &</paramtype> 926 </parameter> 927 </function> 928 <function name="operator||"> 929 <type><emphasis>unspecified</emphasis></type> 930 <template> 931 <template-type-parameter name="Left"/> 932 <template-type-parameter name="Right"/> 933 </template> 934 <parameter name="left"> 935 <paramtype>Left const &</paramtype> 936 </parameter> 937 <parameter name="right"> 938 <paramtype>Right const &</paramtype> 939 </parameter> 940 </function> 941 <function name="operator&&"> 942 <type><emphasis>unspecified</emphasis></type> 943 <template> 944 <template-type-parameter name="Left"/> 945 <template-type-parameter name="Right"/> 946 </template> 947 <parameter name="left"> 948 <paramtype>Left &</paramtype> 949 </parameter> 950 <parameter name="right"> 951 <paramtype>Right &</paramtype> 952 </parameter> 953 </function> 954 <function name="operator&&"> 955 <type><emphasis>unspecified</emphasis></type> 956 <template> 957 <template-type-parameter name="Left"/> 958 <template-type-parameter name="Right"/> 959 </template> 960 <parameter name="left"> 961 <paramtype>Left &</paramtype> 962 </parameter> 963 <parameter name="right"> 964 <paramtype>Right const &</paramtype> 965 </parameter> 966 </function> 967 <function name="operator&&"> 968 <type><emphasis>unspecified</emphasis></type> 969 <template> 970 <template-type-parameter name="Left"/> 971 <template-type-parameter name="Right"/> 972 </template> 973 <parameter name="left"> 974 <paramtype>Left const &</paramtype> 975 </parameter> 976 <parameter name="right"> 977 <paramtype>Right &</paramtype> 978 </parameter> 979 </function> 980 <function name="operator&&"> 981 <type><emphasis>unspecified</emphasis></type> 982 <template> 983 <template-type-parameter name="Left"/> 984 <template-type-parameter name="Right"/> 985 </template> 986 <parameter name="left"> 987 <paramtype>Left const &</paramtype> 988 </parameter> 989 <parameter name="right"> 990 <paramtype>Right const &</paramtype> 991 </parameter> 992 </function> 993 <function name="operator&"> 994 <type><emphasis>unspecified</emphasis></type> 995 <template> 996 <template-type-parameter name="Left"/> 997 <template-type-parameter name="Right"/> 998 </template> 999 <parameter name="left"> 1000 <paramtype>Left &</paramtype> 1001 </parameter> 1002 <parameter name="right"> 1003 <paramtype>Right &</paramtype> 1004 </parameter> 1005 </function> 1006 <function name="operator&"> 1007 <type><emphasis>unspecified</emphasis></type> 1008 <template> 1009 <template-type-parameter name="Left"/> 1010 <template-type-parameter name="Right"/> 1011 </template> 1012 <parameter name="left"> 1013 <paramtype>Left &</paramtype> 1014 </parameter> 1015 <parameter name="right"> 1016 <paramtype>Right const &</paramtype> 1017 </parameter> 1018 </function> 1019 <function name="operator&"> 1020 <type><emphasis>unspecified</emphasis></type> 1021 <template> 1022 <template-type-parameter name="Left"/> 1023 <template-type-parameter name="Right"/> 1024 </template> 1025 <parameter name="left"> 1026 <paramtype>Left const &</paramtype> 1027 </parameter> 1028 <parameter name="right"> 1029 <paramtype>Right &</paramtype> 1030 </parameter> 1031 </function> 1032 <function name="operator&"> 1033 <type><emphasis>unspecified</emphasis></type> 1034 <template> 1035 <template-type-parameter name="Left"/> 1036 <template-type-parameter name="Right"/> 1037 </template> 1038 <parameter name="left"> 1039 <paramtype>Left const &</paramtype> 1040 </parameter> 1041 <parameter name="right"> 1042 <paramtype>Right const &</paramtype> 1043 </parameter> 1044 </function> 1045 <function name="operator|"> 1046 <type><emphasis>unspecified</emphasis></type> 1047 <template> 1048 <template-type-parameter name="Left"/> 1049 <template-type-parameter name="Right"/> 1050 </template> 1051 <parameter name="left"> 1052 <paramtype>Left &</paramtype> 1053 </parameter> 1054 <parameter name="right"> 1055 <paramtype>Right &</paramtype> 1056 </parameter> 1057 </function> 1058 <function name="operator|"> 1059 <type><emphasis>unspecified</emphasis></type> 1060 <template> 1061 <template-type-parameter name="Left"/> 1062 <template-type-parameter name="Right"/> 1063 </template> 1064 <parameter name="left"> 1065 <paramtype>Left &</paramtype> 1066 </parameter> 1067 <parameter name="right"> 1068 <paramtype>Right const &</paramtype> 1069 </parameter> 1070 </function> 1071 <function name="operator|"> 1072 <type><emphasis>unspecified</emphasis></type> 1073 <template> 1074 <template-type-parameter name="Left"/> 1075 <template-type-parameter name="Right"/> 1076 </template> 1077 <parameter name="left"> 1078 <paramtype>Left const &</paramtype> 1079 </parameter> 1080 <parameter name="right"> 1081 <paramtype>Right &</paramtype> 1082 </parameter> 1083 </function> 1084 <function name="operator|"> 1085 <type><emphasis>unspecified</emphasis></type> 1086 <template> 1087 <template-type-parameter name="Left"/> 1088 <template-type-parameter name="Right"/> 1089 </template> 1090 <parameter name="left"> 1091 <paramtype>Left const &</paramtype> 1092 </parameter> 1093 <parameter name="right"> 1094 <paramtype>Right const &</paramtype> 1095 </parameter> 1096 </function> 1097 <function name="operator^"> 1098 <type><emphasis>unspecified</emphasis></type> 1099 <template> 1100 <template-type-parameter name="Left"/> 1101 <template-type-parameter name="Right"/> 1102 </template> 1103 <parameter name="left"> 1104 <paramtype>Left &</paramtype> 1105 </parameter> 1106 <parameter name="right"> 1107 <paramtype>Right &</paramtype> 1108 </parameter> 1109 </function> 1110 <function name="operator^"> 1111 <type><emphasis>unspecified</emphasis></type> 1112 <template> 1113 <template-type-parameter name="Left"/> 1114 <template-type-parameter name="Right"/> 1115 </template> 1116 <parameter name="left"> 1117 <paramtype>Left &</paramtype> 1118 </parameter> 1119 <parameter name="right"> 1120 <paramtype>Right const &</paramtype> 1121 </parameter> 1122 </function> 1123 <function name="operator^"> 1124 <type><emphasis>unspecified</emphasis></type> 1125 <template> 1126 <template-type-parameter name="Left"/> 1127 <template-type-parameter name="Right"/> 1128 </template> 1129 <parameter name="left"> 1130 <paramtype>Left const &</paramtype> 1131 </parameter> 1132 <parameter name="right"> 1133 <paramtype>Right &</paramtype> 1134 </parameter> 1135 </function> 1136 <function name="operator^"> 1137 <type><emphasis>unspecified</emphasis></type> 1138 <template> 1139 <template-type-parameter name="Left"/> 1140 <template-type-parameter name="Right"/> 1141 </template> 1142 <parameter name="left"> 1143 <paramtype>Left const &</paramtype> 1144 </parameter> 1145 <parameter name="right"> 1146 <paramtype>Right const &</paramtype> 1147 </parameter> 1148 </function> 1149 <function name="operator,"> 1150 <type><emphasis>unspecified</emphasis></type> 1151 <template> 1152 <template-type-parameter name="Left"/> 1153 <template-type-parameter name="Right"/> 1154 </template> 1155 <parameter name="left"> 1156 <paramtype>Left &</paramtype> 1157 </parameter> 1158 <parameter name="right"> 1159 <paramtype>Right &</paramtype> 1160 </parameter> 1161 </function> 1162 <function name="operator,"> 1163 <type><emphasis>unspecified</emphasis></type> 1164 <template> 1165 <template-type-parameter name="Left"/> 1166 <template-type-parameter name="Right"/> 1167 </template> 1168 <parameter name="left"> 1169 <paramtype>Left &</paramtype> 1170 </parameter> 1171 <parameter name="right"> 1172 <paramtype>Right const &</paramtype> 1173 </parameter> 1174 </function> 1175 <function name="operator,"> 1176 <type><emphasis>unspecified</emphasis></type> 1177 <template> 1178 <template-type-parameter name="Left"/> 1179 <template-type-parameter name="Right"/> 1180 </template> 1181 <parameter name="left"> 1182 <paramtype>Left const &</paramtype> 1183 </parameter> 1184 <parameter name="right"> 1185 <paramtype>Right &</paramtype> 1186 </parameter> 1187 </function> 1188 <function name="operator,"> 1189 <type><emphasis>unspecified</emphasis></type> 1190 <template> 1191 <template-type-parameter name="Left"/> 1192 <template-type-parameter name="Right"/> 1193 </template> 1194 <parameter name="left"> 1195 <paramtype>Left const &</paramtype> 1196 </parameter> 1197 <parameter name="right"> 1198 <paramtype>Right const &</paramtype> 1199 </parameter> 1200 </function> 1201 <function name="operator->*"> 1202 <type><emphasis>unspecified</emphasis></type> 1203 <template> 1204 <template-type-parameter name="Left"/> 1205 <template-type-parameter name="Right"/> 1206 </template> 1207 <parameter name="left"> 1208 <paramtype>Left &</paramtype> 1209 </parameter> 1210 <parameter name="right"> 1211 <paramtype>Right &</paramtype> 1212 </parameter> 1213 </function> 1214 <function name="operator->*"> 1215 <type><emphasis>unspecified</emphasis></type> 1216 <template> 1217 <template-type-parameter name="Left"/> 1218 <template-type-parameter name="Right"/> 1219 </template> 1220 <parameter name="left"> 1221 <paramtype>Left &</paramtype> 1222 </parameter> 1223 <parameter name="right"> 1224 <paramtype>Right const &</paramtype> 1225 </parameter> 1226 </function> 1227 <function name="operator->*"> 1228 <type><emphasis>unspecified</emphasis></type> 1229 <template> 1230 <template-type-parameter name="Left"/> 1231 <template-type-parameter name="Right"/> 1232 </template> 1233 <parameter name="left"> 1234 <paramtype>Left const &</paramtype> 1235 </parameter> 1236 <parameter name="right"> 1237 <paramtype>Right &</paramtype> 1238 </parameter> 1239 </function> 1240 <function name="operator->*"> 1241 <type><emphasis>unspecified</emphasis></type> 1242 <template> 1243 <template-type-parameter name="Left"/> 1244 <template-type-parameter name="Right"/> 1245 </template> 1246 <parameter name="left"> 1247 <paramtype>Left const &</paramtype> 1248 </parameter> 1249 <parameter name="right"> 1250 <paramtype>Right const &</paramtype> 1251 </parameter> 1252 </function> 1253 <function name="operator<<="> 1254 <type><emphasis>unspecified</emphasis></type> 1255 <template> 1256 <template-type-parameter name="Left"/> 1257 <template-type-parameter name="Right"/> 1258 </template> 1259 <parameter name="left"> 1260 <paramtype>Left &</paramtype> 1261 </parameter> 1262 <parameter name="right"> 1263 <paramtype>Right &</paramtype> 1264 </parameter> 1265 </function> 1266 <function name="operator<<="> 1267 <type><emphasis>unspecified</emphasis></type> 1268 <template> 1269 <template-type-parameter name="Left"/> 1270 <template-type-parameter name="Right"/> 1271 </template> 1272 <parameter name="left"> 1273 <paramtype>Left &</paramtype> 1274 </parameter> 1275 <parameter name="right"> 1276 <paramtype>Right const &</paramtype> 1277 </parameter> 1278 </function> 1279 <function name="operator<<="> 1280 <type><emphasis>unspecified</emphasis></type> 1281 <template> 1282 <template-type-parameter name="Left"/> 1283 <template-type-parameter name="Right"/> 1284 </template> 1285 <parameter name="left"> 1286 <paramtype>Left const &</paramtype> 1287 </parameter> 1288 <parameter name="right"> 1289 <paramtype>Right &</paramtype> 1290 </parameter> 1291 </function> 1292 <function name="operator<<="> 1293 <type><emphasis>unspecified</emphasis></type> 1294 <template> 1295 <template-type-parameter name="Left"/> 1296 <template-type-parameter name="Right"/> 1297 </template> 1298 <parameter name="left"> 1299 <paramtype>Left const &</paramtype> 1300 </parameter> 1301 <parameter name="right"> 1302 <paramtype>Right const &</paramtype> 1303 </parameter> 1304 </function> 1305 <function name="operator>>="> 1306 <type><emphasis>unspecified</emphasis></type> 1307 <template> 1308 <template-type-parameter name="Left"/> 1309 <template-type-parameter name="Right"/> 1310 </template> 1311 <parameter name="left"> 1312 <paramtype>Left &</paramtype> 1313 </parameter> 1314 <parameter name="right"> 1315 <paramtype>Right &</paramtype> 1316 </parameter> 1317 </function> 1318 <function name="operator>>="> 1319 <type><emphasis>unspecified</emphasis></type> 1320 <template> 1321 <template-type-parameter name="Left"/> 1322 <template-type-parameter name="Right"/> 1323 </template> 1324 <parameter name="left"> 1325 <paramtype>Left &</paramtype> 1326 </parameter> 1327 <parameter name="right"> 1328 <paramtype>Right const &</paramtype> 1329 </parameter> 1330 </function> 1331 <function name="operator>>="> 1332 <type><emphasis>unspecified</emphasis></type> 1333 <template> 1334 <template-type-parameter name="Left"/> 1335 <template-type-parameter name="Right"/> 1336 </template> 1337 <parameter name="left"> 1338 <paramtype>Left const &</paramtype> 1339 </parameter> 1340 <parameter name="right"> 1341 <paramtype>Right &</paramtype> 1342 </parameter> 1343 </function> 1344 <function name="operator>>="> 1345 <type><emphasis>unspecified</emphasis></type> 1346 <template> 1347 <template-type-parameter name="Left"/> 1348 <template-type-parameter name="Right"/> 1349 </template> 1350 <parameter name="left"> 1351 <paramtype>Left const &</paramtype> 1352 </parameter> 1353 <parameter name="right"> 1354 <paramtype>Right const &</paramtype> 1355 </parameter> 1356 </function> 1357 <function name="operator*="> 1358 <type><emphasis>unspecified</emphasis></type> 1359 <template> 1360 <template-type-parameter name="Left"/> 1361 <template-type-parameter name="Right"/> 1362 </template> 1363 <parameter name="left"> 1364 <paramtype>Left &</paramtype> 1365 </parameter> 1366 <parameter name="right"> 1367 <paramtype>Right &</paramtype> 1368 </parameter> 1369 </function> 1370 <function name="operator*="> 1371 <type><emphasis>unspecified</emphasis></type> 1372 <template> 1373 <template-type-parameter name="Left"/> 1374 <template-type-parameter name="Right"/> 1375 </template> 1376 <parameter name="left"> 1377 <paramtype>Left &</paramtype> 1378 </parameter> 1379 <parameter name="right"> 1380 <paramtype>Right const &</paramtype> 1381 </parameter> 1382 </function> 1383 <function name="operator*="> 1384 <type><emphasis>unspecified</emphasis></type> 1385 <template> 1386 <template-type-parameter name="Left"/> 1387 <template-type-parameter name="Right"/> 1388 </template> 1389 <parameter name="left"> 1390 <paramtype>Left const &</paramtype> 1391 </parameter> 1392 <parameter name="right"> 1393 <paramtype>Right &</paramtype> 1394 </parameter> 1395 </function> 1396 <function name="operator*="> 1397 <type><emphasis>unspecified</emphasis></type> 1398 <template> 1399 <template-type-parameter name="Left"/> 1400 <template-type-parameter name="Right"/> 1401 </template> 1402 <parameter name="left"> 1403 <paramtype>Left const &</paramtype> 1404 </parameter> 1405 <parameter name="right"> 1406 <paramtype>Right const &</paramtype> 1407 </parameter> 1408 </function> 1409 <function name="operator/="> 1410 <type><emphasis>unspecified</emphasis></type> 1411 <template> 1412 <template-type-parameter name="Left"/> 1413 <template-type-parameter name="Right"/> 1414 </template> 1415 <parameter name="left"> 1416 <paramtype>Left &</paramtype> 1417 </parameter> 1418 <parameter name="right"> 1419 <paramtype>Right &</paramtype> 1420 </parameter> 1421 </function> 1422 <function name="operator/="> 1423 <type><emphasis>unspecified</emphasis></type> 1424 <template> 1425 <template-type-parameter name="Left"/> 1426 <template-type-parameter name="Right"/> 1427 </template> 1428 <parameter name="left"> 1429 <paramtype>Left &</paramtype> 1430 </parameter> 1431 <parameter name="right"> 1432 <paramtype>Right const &</paramtype> 1433 </parameter> 1434 </function> 1435 <function name="operator/="> 1436 <type><emphasis>unspecified</emphasis></type> 1437 <template> 1438 <template-type-parameter name="Left"/> 1439 <template-type-parameter name="Right"/> 1440 </template> 1441 <parameter name="left"> 1442 <paramtype>Left const &</paramtype> 1443 </parameter> 1444 <parameter name="right"> 1445 <paramtype>Right &</paramtype> 1446 </parameter> 1447 </function> 1448 <function name="operator/="> 1449 <type><emphasis>unspecified</emphasis></type> 1450 <template> 1451 <template-type-parameter name="Left"/> 1452 <template-type-parameter name="Right"/> 1453 </template> 1454 <parameter name="left"> 1455 <paramtype>Left const &</paramtype> 1456 </parameter> 1457 <parameter name="right"> 1458 <paramtype>Right const &</paramtype> 1459 </parameter> 1460 </function> 1461 <function name="operator%="> 1462 <type><emphasis>unspecified</emphasis></type> 1463 <template> 1464 <template-type-parameter name="Left"/> 1465 <template-type-parameter name="Right"/> 1466 </template> 1467 <parameter name="left"> 1468 <paramtype>Left &</paramtype> 1469 </parameter> 1470 <parameter name="right"> 1471 <paramtype>Right &</paramtype> 1472 </parameter> 1473 </function> 1474 <function name="operator%="> 1475 <type><emphasis>unspecified</emphasis></type> 1476 <template> 1477 <template-type-parameter name="Left"/> 1478 <template-type-parameter name="Right"/> 1479 </template> 1480 <parameter name="left"> 1481 <paramtype>Left &</paramtype> 1482 </parameter> 1483 <parameter name="right"> 1484 <paramtype>Right const &</paramtype> 1485 </parameter> 1486 </function> 1487 <function name="operator%="> 1488 <type><emphasis>unspecified</emphasis></type> 1489 <template> 1490 <template-type-parameter name="Left"/> 1491 <template-type-parameter name="Right"/> 1492 </template> 1493 <parameter name="left"> 1494 <paramtype>Left const &</paramtype> 1495 </parameter> 1496 <parameter name="right"> 1497 <paramtype>Right &</paramtype> 1498 </parameter> 1499 </function> 1500 <function name="operator%="> 1501 <type><emphasis>unspecified</emphasis></type> 1502 <template> 1503 <template-type-parameter name="Left"/> 1504 <template-type-parameter name="Right"/> 1505 </template> 1506 <parameter name="left"> 1507 <paramtype>Left const &</paramtype> 1508 </parameter> 1509 <parameter name="right"> 1510 <paramtype>Right const &</paramtype> 1511 </parameter> 1512 </function> 1513 <function name="operator+="> 1514 <type><emphasis>unspecified</emphasis></type> 1515 <template> 1516 <template-type-parameter name="Left"/> 1517 <template-type-parameter name="Right"/> 1518 </template> 1519 <parameter name="left"> 1520 <paramtype>Left &</paramtype> 1521 </parameter> 1522 <parameter name="right"> 1523 <paramtype>Right &</paramtype> 1524 </parameter> 1525 </function> 1526 <function name="operator+="> 1527 <type><emphasis>unspecified</emphasis></type> 1528 <template> 1529 <template-type-parameter name="Left"/> 1530 <template-type-parameter name="Right"/> 1531 </template> 1532 <parameter name="left"> 1533 <paramtype>Left &</paramtype> 1534 </parameter> 1535 <parameter name="right"> 1536 <paramtype>Right const &</paramtype> 1537 </parameter> 1538 </function> 1539 <function name="operator+="> 1540 <type><emphasis>unspecified</emphasis></type> 1541 <template> 1542 <template-type-parameter name="Left"/> 1543 <template-type-parameter name="Right"/> 1544 </template> 1545 <parameter name="left"> 1546 <paramtype>Left const &</paramtype> 1547 </parameter> 1548 <parameter name="right"> 1549 <paramtype>Right &</paramtype> 1550 </parameter> 1551 </function> 1552 <function name="operator+="> 1553 <type><emphasis>unspecified</emphasis></type> 1554 <template> 1555 <template-type-parameter name="Left"/> 1556 <template-type-parameter name="Right"/> 1557 </template> 1558 <parameter name="left"> 1559 <paramtype>Left const &</paramtype> 1560 </parameter> 1561 <parameter name="right"> 1562 <paramtype>Right const &</paramtype> 1563 </parameter> 1564 </function> 1565 <function name="operator-="> 1566 <type><emphasis>unspecified</emphasis></type> 1567 <template> 1568 <template-type-parameter name="Left"/> 1569 <template-type-parameter name="Right"/> 1570 </template> 1571 <parameter name="left"> 1572 <paramtype>Left &</paramtype> 1573 </parameter> 1574 <parameter name="right"> 1575 <paramtype>Right &</paramtype> 1576 </parameter> 1577 </function> 1578 <function name="operator-="> 1579 <type><emphasis>unspecified</emphasis></type> 1580 <template> 1581 <template-type-parameter name="Left"/> 1582 <template-type-parameter name="Right"/> 1583 </template> 1584 <parameter name="left"> 1585 <paramtype>Left &</paramtype> 1586 </parameter> 1587 <parameter name="right"> 1588 <paramtype>Right const &</paramtype> 1589 </parameter> 1590 </function> 1591 <function name="operator-="> 1592 <type><emphasis>unspecified</emphasis></type> 1593 <template> 1594 <template-type-parameter name="Left"/> 1595 <template-type-parameter name="Right"/> 1596 </template> 1597 <parameter name="left"> 1598 <paramtype>Left const &</paramtype> 1599 </parameter> 1600 <parameter name="right"> 1601 <paramtype>Right &</paramtype> 1602 </parameter> 1603 </function> 1604 <function name="operator-="> 1605 <type><emphasis>unspecified</emphasis></type> 1606 <template> 1607 <template-type-parameter name="Left"/> 1608 <template-type-parameter name="Right"/> 1609 </template> 1610 <parameter name="left"> 1611 <paramtype>Left const &</paramtype> 1612 </parameter> 1613 <parameter name="right"> 1614 <paramtype>Right const &</paramtype> 1615 </parameter> 1616 </function> 1617 <function name="operator&="> 1618 <type><emphasis>unspecified</emphasis></type> 1619 <template> 1620 <template-type-parameter name="Left"/> 1621 <template-type-parameter name="Right"/> 1622 </template> 1623 <parameter name="left"> 1624 <paramtype>Left &</paramtype> 1625 </parameter> 1626 <parameter name="right"> 1627 <paramtype>Right &</paramtype> 1628 </parameter> 1629 </function> 1630 <function name="operator&="> 1631 <type><emphasis>unspecified</emphasis></type> 1632 <template> 1633 <template-type-parameter name="Left"/> 1634 <template-type-parameter name="Right"/> 1635 </template> 1636 <parameter name="left"> 1637 <paramtype>Left &</paramtype> 1638 </parameter> 1639 <parameter name="right"> 1640 <paramtype>Right const &</paramtype> 1641 </parameter> 1642 </function> 1643 <function name="operator&="> 1644 <type><emphasis>unspecified</emphasis></type> 1645 <template> 1646 <template-type-parameter name="Left"/> 1647 <template-type-parameter name="Right"/> 1648 </template> 1649 <parameter name="left"> 1650 <paramtype>Left const &</paramtype> 1651 </parameter> 1652 <parameter name="right"> 1653 <paramtype>Right &</paramtype> 1654 </parameter> 1655 </function> 1656 <function name="operator&="> 1657 <type><emphasis>unspecified</emphasis></type> 1658 <template> 1659 <template-type-parameter name="Left"/> 1660 <template-type-parameter name="Right"/> 1661 </template> 1662 <parameter name="left"> 1663 <paramtype>Left const &</paramtype> 1664 </parameter> 1665 <parameter name="right"> 1666 <paramtype>Right const &</paramtype> 1667 </parameter> 1668 </function> 1669 <function name="operator|="> 1670 <type><emphasis>unspecified</emphasis></type> 1671 <template> 1672 <template-type-parameter name="Left"/> 1673 <template-type-parameter name="Right"/> 1674 </template> 1675 <parameter name="left"> 1676 <paramtype>Left &</paramtype> 1677 </parameter> 1678 <parameter name="right"> 1679 <paramtype>Right &</paramtype> 1680 </parameter> 1681 </function> 1682 <function name="operator|="> 1683 <type><emphasis>unspecified</emphasis></type> 1684 <template> 1685 <template-type-parameter name="Left"/> 1686 <template-type-parameter name="Right"/> 1687 </template> 1688 <parameter name="left"> 1689 <paramtype>Left &</paramtype> 1690 </parameter> 1691 <parameter name="right"> 1692 <paramtype>Right const &</paramtype> 1693 </parameter> 1694 </function> 1695 <function name="operator|="> 1696 <type><emphasis>unspecified</emphasis></type> 1697 <template> 1698 <template-type-parameter name="Left"/> 1699 <template-type-parameter name="Right"/> 1700 </template> 1701 <parameter name="left"> 1702 <paramtype>Left const &</paramtype> 1703 </parameter> 1704 <parameter name="right"> 1705 <paramtype>Right &</paramtype> 1706 </parameter> 1707 </function> 1708 <function name="operator|="> 1709 <type><emphasis>unspecified</emphasis></type> 1710 <template> 1711 <template-type-parameter name="Left"/> 1712 <template-type-parameter name="Right"/> 1713 </template> 1714 <parameter name="left"> 1715 <paramtype>Left const &</paramtype> 1716 </parameter> 1717 <parameter name="right"> 1718 <paramtype>Right const &</paramtype> 1719 </parameter> 1720 </function> 1721 <function name="operator^="> 1722 <type><emphasis>unspecified</emphasis></type> 1723 <template> 1724 <template-type-parameter name="Left"/> 1725 <template-type-parameter name="Right"/> 1726 </template> 1727 <parameter name="left"> 1728 <paramtype>Left &</paramtype> 1729 </parameter> 1730 <parameter name="right"> 1731 <paramtype>Right &</paramtype> 1732 </parameter> 1733 </function> 1734 <function name="operator^="> 1735 <type><emphasis>unspecified</emphasis></type> 1736 <template> 1737 <template-type-parameter name="Left"/> 1738 <template-type-parameter name="Right"/> 1739 </template> 1740 <parameter name="left"> 1741 <paramtype>Left &</paramtype> 1742 </parameter> 1743 <parameter name="right"> 1744 <paramtype>Right const &</paramtype> 1745 </parameter> 1746 </function> 1747 <function name="operator^="> 1748 <type><emphasis>unspecified</emphasis></type> 1749 <template> 1750 <template-type-parameter name="Left"/> 1751 <template-type-parameter name="Right"/> 1752 </template> 1753 <parameter name="left"> 1754 <paramtype>Left const &</paramtype> 1755 </parameter> 1756 <parameter name="right"> 1757 <paramtype>Right &</paramtype> 1758 </parameter> 1759 </function> 1760 <function name="operator^="> 1761 <type><emphasis>unspecified</emphasis></type> 1762 <template> 1763 <template-type-parameter name="Left"/> 1764 <template-type-parameter name="Right"/> 1765 </template> 1766 <parameter name="left"> 1767 <paramtype>Left const &</paramtype> 1768 </parameter> 1769 <parameter name="right"> 1770 <paramtype>Right const &</paramtype> 1771 </parameter> 1772 </function> 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>, 1777 A0 const &, 1778 A1 const &, 1779 A2 const & 1780 >::type const</type> 1781 <template> 1782 <template-type-parameter name="A0"/> 1783 <template-type-parameter name="A1"/> 1784 <template-type-parameter name="A2"/> 1785 </template> 1786 <parameter name="a0"> 1787 <paramtype>A0 const &</paramtype> 1788 </parameter> 1789 <parameter name="a1"> 1790 <paramtype>A1 const &</paramtype> 1791 </parameter> 1792 <parameter name="a2"> 1793 <paramtype>A2 const &</paramtype> 1794 </parameter> 1795 </function> 1796 </namespace> 1797 </namespace> 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> 1803 <description> 1804 <para> 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. 1807 </para> 1808 <para> 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. 1811 </para> 1812 <para> 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 1817 with any domain. 1818 </para> 1819 <para> 1820 <emphasis role="bold">Example:</emphasis> 1821 <programlisting>namespace My { 1822 // A non-Proto terminal type 1823 struct S {}; 1824 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_ {}; 1828 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) 1834} 1835 1836int main() { 1837 My::S s1, s2; 1838 1839 // OK, this builds a Proto expression template: 1840 s1 + s2; 1841}</programlisting> 1842 </para> 1843 </description> 1844 </macro> 1845</header> 1846