Created on 2024-08-26.00:00:00 last changed 4 days ago
Proposed resolution (approved by CWG 2024-11-22):
Change in 12.4.1 [over.oper.general] paragraph 7 as follows, removing the bullets:
An operator function shalleither
be a member function orbe a non-member function that hashave at least onenon-objectfunction parameter or implicit object parameter whose type is a class, a reference to a class, an enumeration, or a reference to an enumeration.
[Accepted as a DR at the November, 2024 meeting.]
(From submission #600.)
With the introduction of explicit object member functions, the restrictions on operator functions became inconsistent. Subclause 12.4.1 [over.oper.general] paragraph 7 specifies:
An operator function shall either
- be a member function or
- be a non-member function that has at least one non-object parameter whose type is a class, a reference to a class, an enumeration, or a reference to an enumeration.
Talking about non-object parameters in a bullet discussing non-member functions makes no sense. The following example ought to be prohibited, for consistency with operator==(int, int):
struct B { bool operator==(this int, int); operator int() const; };
History | |||
---|---|---|---|
Date | User | Action | Args |
2024-12-17 09:54:02 | admin | set | status: ready -> dr |
2024-11-22 15:51:06 | admin | set | status: tentatively ready -> ready |
2024-10-11 20:31:34 | admin | set | status: review -> tentatively ready |
2024-09-27 21:20:46 | admin | set | status: open -> review |
2024-08-31 06:23:59 | admin | set | messages: + msg7812 |
2024-08-26 00:00:00 | admin | create |