|
3441 | 3441 | integral promotions.
|
3442 | 3442 | \end{note}
|
3443 | 3443 |
|
| 3444 | +\pnum |
| 3445 | +In the remainder of this section, \cvqual{vq} represents either |
| 3446 | +\tcode{volatile} or no cv-qualifier. |
| 3447 | + |
3444 | 3448 | \pnum
|
3445 | 3449 | For every pair
|
3446 | 3450 | (\tcode{\placeholder{T}},
|
3447 |
| -\tcode{\placeholder{VQ}}), |
| 3451 | +\cvqual{vq}), |
3448 | 3452 | where
|
3449 | 3453 | \tcode{\placeholder{T}}
|
3450 |
| -is an arithmetic type other than \tcode{bool}, and |
3451 |
| -\tcode{\placeholder{VQ}} |
3452 |
| -is either |
3453 |
| -\tcode{volatile} |
3454 |
| -or empty, |
| 3454 | +is an arithmetic type other than \tcode{bool}, |
3455 | 3455 | there exist candidate operator functions of the form
|
3456 | 3456 |
|
3457 | 3457 | \begin{codeblock}
|
3458 |
| -@\placeholder{VQ T}@& operator++(@\placeholder{VQ T}@&); |
3459 |
| -@\placeholder{T}@ operator++(@\placeholder{VQ T}@&, int); |
| 3458 | +@\cvqual{vq} \placeholder{T}@& operator++(@\cvqual{vq} \placeholder{T}@&); |
| 3459 | +@\placeholder{T}@ operator++(@\cvqual{vq} \placeholder{T}@&, int); |
3460 | 3460 | \end{codeblock}
|
3461 | 3461 |
|
3462 | 3462 | \pnum
|
3463 | 3463 | For every pair
|
3464 | 3464 | (\tcode{\placeholder{T}},
|
3465 |
| -\tcode{\placeholder{VQ}}), |
| 3465 | +\cvqual{vq}), |
3466 | 3466 | where
|
3467 | 3467 | \tcode{\placeholder{T}}
|
3468 | 3468 | is an arithmetic type other than
|
3469 | 3469 | \tcode{bool},
|
3470 |
| -and |
3471 |
| -\tcode{\placeholder{VQ}} |
3472 |
| -is either |
3473 |
| -\tcode{volatile} |
3474 |
| -or empty, |
3475 | 3470 | there exist candidate operator functions of the form
|
3476 | 3471 |
|
3477 | 3472 | \begin{codeblock}
|
3478 |
| -@\placeholder{VQ T}@& operator--(@\placeholder{VQ T}@&); |
3479 |
| -@\placeholder{T}@ operator--(@\placeholder{VQ T}@&, int); |
| 3473 | +@\cvqual{vq} \placeholder{T}@& operator--(@\cvqual{vq} \placeholder{T}@&); |
| 3474 | +@\placeholder{T}@ operator--(@\cvqual{vq} \placeholder{T}@&, int); |
3480 | 3475 | \end{codeblock}
|
3481 | 3476 |
|
3482 | 3477 | \pnum
|
3483 | 3478 | For every pair
|
3484 | 3479 | (\tcode{\placeholder{T}},
|
3485 |
| -\tcode{\placeholder{VQ}}), |
| 3480 | +\cvqual{vq}), |
3486 | 3481 | where
|
3487 | 3482 | \tcode{\placeholder{T}}
|
3488 |
| -is a cv-qualified or cv-unqualified object type, and |
3489 |
| -\tcode{\placeholder{VQ}} |
3490 |
| -is either |
3491 |
| -\tcode{volatile} |
3492 |
| -or empty, |
| 3483 | +is a cv-qualified or cv-unqualified object type, |
3493 | 3484 | there exist candidate operator functions of the form
|
3494 | 3485 |
|
3495 | 3486 | \begin{codeblock}
|
3496 |
| -@\placeholder{T}@*@\placeholder{VQ}@& operator++(@\placeholder{T}@*@\placeholder{VQ}@&); |
3497 |
| -@\placeholder{T}@*@\placeholder{VQ}@& operator--(@\placeholder{T}@*@\placeholder{VQ}@&); |
3498 |
| -@\placeholder{T}@* operator++(@\placeholder{T}@*@\placeholder{VQ}@&, int); |
3499 |
| -@\placeholder{T}@* operator--(@\placeholder{T}@*@\placeholder{VQ}@&, int); |
| 3487 | +@\placeholder{T}@*@\cvqual{vq}@& operator++(@\placeholder{T}@*@\cvqual{vq}@&); |
| 3488 | +@\placeholder{T}@*@\cvqual{vq}@& operator--(@\placeholder{T}@*@\cvqual{vq}@&); |
| 3489 | +@\placeholder{T}@* operator++(@\placeholder{T}@*@\cvqual{vq}@&, int); |
| 3490 | +@\placeholder{T}@* operator--(@\placeholder{T}@*@\cvqual{vq}@&, int); |
3500 | 3491 | \end{codeblock}
|
3501 | 3492 |
|
3502 | 3493 | \pnum
|
|
3667 | 3658 | \pnum
|
3668 | 3659 | For every triple
|
3669 | 3660 | (\tcode{\placeholder{L}},
|
3670 |
| -\tcode{\placeholder{VQ}}, |
| 3661 | +\cvqual{vq}, |
3671 | 3662 | \tcode{\placeholder{R}}),
|
3672 | 3663 | where
|
3673 | 3664 | \tcode{\placeholder{L}}
|
3674 | 3665 | is an arithmetic type,
|
3675 |
| -\tcode{\placeholder{VQ}} |
3676 |
| -is either |
3677 |
| -\tcode{volatile} |
3678 |
| -or empty, |
3679 | 3666 | and
|
3680 | 3667 | \tcode{\placeholder{R}}
|
3681 | 3668 | is a promoted arithmetic type,
|
3682 | 3669 | there exist candidate operator functions of the form
|
3683 | 3670 |
|
3684 | 3671 | \begin{codeblock}
|
3685 |
| -@\placeholder{VQ L}@& operator=(@\placeholder{VQ L}@&, @\placeholder{R}@); |
3686 |
| -@\placeholder{VQ L}@& operator*=(@\placeholder{VQ L}@&, @\placeholder{R}@); |
3687 |
| -@\placeholder{VQ L}@& operator/=(@\placeholder{VQ L}@&, @\placeholder{R}@); |
3688 |
| -@\placeholder{VQ L}@& operator+=(@\placeholder{VQ L}@&, @\placeholder{R}@); |
3689 |
| -@\placeholder{VQ L}@& operator-=(@\placeholder{VQ L}@&, @\placeholder{R}@); |
| 3672 | +@\cvqual{vq} \placeholder{L}@& operator=(@\cvqual{vq} \placeholder{L}@&, @\placeholder{R}@); |
| 3673 | +@\cvqual{vq} \placeholder{L}@& operator*=(@\cvqual{vq} \placeholder{L}@&, @\placeholder{R}@); |
| 3674 | +@\cvqual{vq} \placeholder{L}@& operator/=(@\cvqual{vq} \placeholder{L}@&, @\placeholder{R}@); |
| 3675 | +@\cvqual{vq} \placeholder{L}@& operator+=(@\cvqual{vq} \placeholder{L}@&, @\placeholder{R}@); |
| 3676 | +@\cvqual{vq} \placeholder{L}@& operator-=(@\cvqual{vq} \placeholder{L}@&, @\placeholder{R}@); |
3690 | 3677 | \end{codeblock}
|
3691 | 3678 |
|
3692 | 3679 | \pnum
|
3693 |
| -For every pair (\tcode{\placeholder{T}}, \tcode{\placeholder{VQ}}), where \tcode{\placeholder{T}} is any type and \tcode{\placeholder{VQ}} is either |
3694 |
| -\tcode{volatile} or empty, there exist candidate operator functions of the form |
| 3680 | +For every pair (\tcode{\placeholder{T}}, \cvqual{vq}), |
| 3681 | +where \tcode{\placeholder{T}} is any type, |
| 3682 | +there exist candidate operator functions of the form |
3695 | 3683 |
|
3696 | 3684 | \begin{codeblock}
|
3697 |
| -@\placeholder{T}@*@\placeholder{VQ}@& operator=(@\placeholder{T}@*@\placeholder{VQ}@&, @\placeholder{T}@*); |
| 3685 | +@\placeholder{T}@*@\cvqual{vq}@& operator=(@\placeholder{T}@*@\cvqual{vq}@&, @\placeholder{T}@*); |
3698 | 3686 | \end{codeblock}
|
3699 | 3687 |
|
3700 | 3688 | \pnum
|
3701 | 3689 | For every pair
|
3702 | 3690 | (\tcode{\placeholder{T}},
|
3703 |
| -\tcode{\placeholder{VQ}}), |
| 3691 | +\cvqual{vq}), |
3704 | 3692 | where
|
3705 | 3693 | \tcode{\placeholder{T}}
|
3706 |
| -is an enumeration or pointer to member type and |
3707 |
| -\tcode{\placeholder{VQ}} |
3708 |
| -is either |
3709 |
| -\tcode{volatile} |
3710 |
| -or empty, |
| 3694 | +is an enumeration or pointer to member type, |
3711 | 3695 | there exist candidate operator functions of the form
|
3712 | 3696 |
|
3713 | 3697 | \begin{codeblock}
|
3714 |
| -@\placeholder{VQ} \placeholder{T}@& operator=(@\placeholder{VQ} \placeholder{T}@&, @\placeholder{T}@); |
| 3698 | +@\cvqual{vq} \placeholder{T}@& operator=(@\cvqual{vq} \placeholder{T}@&, @\placeholder{T}@); |
3715 | 3699 | \end{codeblock}
|
3716 | 3700 |
|
3717 | 3701 | \pnum
|
3718 | 3702 | For every pair
|
3719 | 3703 | (\tcode{\placeholder{T}},
|
3720 |
| -\tcode{\placeholder{VQ}}), |
| 3704 | +\cvqual{vq}), |
3721 | 3705 | where
|
3722 | 3706 | \tcode{\placeholder{T}}
|
3723 |
| -is a cv-qualified or cv-unqualified object type and |
3724 |
| -\tcode{\placeholder{VQ}} |
3725 |
| -is either |
3726 |
| -\tcode{volatile} |
3727 |
| -or empty, |
| 3707 | +is a cv-qualified or cv-unqualified object type, |
3728 | 3708 | there exist candidate operator functions of the form
|
3729 | 3709 |
|
3730 | 3710 | \begin{codeblock}
|
3731 |
| -@\placeholder{T}@*@\placeholder{VQ}@& operator+=(@\placeholder{T}@*@\placeholder{VQ}@&, std::ptrdiff_t); |
3732 |
| -@\placeholder{T}@*@\placeholder{VQ}@& operator-=(@\placeholder{T}@*@\placeholder{VQ}@&, std::ptrdiff_t); |
| 3711 | +@\placeholder{T}@*@\cvqual{vq}@& operator+=(@\placeholder{T}@*@\cvqual{vq}@&, std::ptrdiff_t); |
| 3712 | +@\placeholder{T}@*@\cvqual{vq}@& operator-=(@\placeholder{T}@*@\cvqual{vq}@&, std::ptrdiff_t); |
3733 | 3713 | \end{codeblock}
|
3734 | 3714 |
|
3735 | 3715 | \pnum
|
3736 | 3716 | For every triple
|
3737 | 3717 | (\tcode{\placeholder{L}},
|
3738 |
| -\tcode{\placeholder{VQ}}, |
| 3718 | +\cvqual{vq}, |
3739 | 3719 | \tcode{\placeholder{R}}),
|
3740 | 3720 | where
|
3741 | 3721 | \tcode{\placeholder{L}}
|
3742 |
| -is an integral type, |
3743 |
| -\tcode{\placeholder{VQ}} |
3744 |
| -is either |
3745 |
| -\tcode{volatile} |
3746 |
| -or empty, |
3747 |
| -and |
| 3722 | +is an integral type, and |
3748 | 3723 | \tcode{\placeholder{R}}
|
3749 | 3724 | is a promoted integral type,
|
3750 | 3725 | there exist candidate operator functions of the form
|
3751 | 3726 |
|
3752 | 3727 | \begin{codeblock}
|
3753 |
| -@\placeholder{VQ L}@& operator%=(@\placeholder{VQ L}@&, @\placeholder{R}@); |
3754 |
| -@\placeholder{VQ L}@& operator<<=(@\placeholder{VQ L}@&, @\placeholder{R}@); |
3755 |
| -@\placeholder{VQ L}@& operator>>=(@\placeholder{VQ L}@&, @\placeholder{R}@); |
3756 |
| -@\placeholder{VQ L}@& operator&=(@\placeholder{VQ L}@&, @\placeholder{R}@); |
3757 |
| -@\placeholder{VQ L}@& operator^=(@\placeholder{VQ L}@&, @\placeholder{R}@); |
3758 |
| -@\placeholder{VQ L}@& operator|=(@\placeholder{VQ L}@&, @\placeholder{R}@); |
| 3728 | +@\cvqual{vq} \placeholder{L}@& operator%=(@\cvqual{vq} \placeholder{L}@&, @\placeholder{R}@); |
| 3729 | +@\cvqual{vq} \placeholder{L}@& operator<<=(@\cvqual{vq} \placeholder{L}@&, @\placeholder{R}@); |
| 3730 | +@\cvqual{vq} \placeholder{L}@& operator>>=(@\cvqual{vq} \placeholder{L}@&, @\placeholder{R}@); |
| 3731 | +@\cvqual{vq} \placeholder{L}@& operator&=(@\cvqual{vq} \placeholder{L}@&, @\placeholder{R}@); |
| 3732 | +@\cvqual{vq} \placeholder{L}@& operator^=(@\cvqual{vq} \placeholder{L}@&, @\placeholder{R}@); |
| 3733 | +@\cvqual{vq} \placeholder{L}@& operator|=(@\cvqual{vq} \placeholder{L}@&, @\placeholder{R}@); |
3759 | 3734 | \end{codeblock}
|
3760 | 3735 |
|
3761 | 3736 | \pnum
|
|
0 commit comments