Created on 2020-06-15.00:00:00 last changed 17 months ago
Proposed resolution (approved by CWG 2023-02-09):
Change in 7.6.9 [expr.rel] paragraph 5 as follows:
... Otherwise, the result of each of the operators is unspecified. [ Note: A relational operator applied to unequal function pointers or to unequal pointers to void yields an unspecified result. -- end note ]
CWG 2022-11-11
Paper N3624 erroneously removed support for void* and function pointer relational comparisons. That ought to be restored.
[Accepted as a DR at the February, 2023 meeting.]
Prior to the adoption of paper N3624 (resolving issue 1512), comparison of void* pointers was explicitly unspecified. The current wording of 7.6.9 [expr.rel], however, describes only comparison of “pointers to objects” (paragraphs 4 and 5), but a pointer to void is not a pointer to an object, only an object pointer type (as opposed to a function pointer type). Formally, that means that comparing void* pointers is undefined behavior, which seems undesirable.
As a related note, there is implementation divergence over whether relational comparisons of void* pointers are accepted in constant expressions (when the void* values are converted from pointers that would otherwise be comparable in constant expressions).
History | |||
---|---|---|---|
Date | User | Action | Args |
2023-07-16 13:00:43 | admin | set | status: open -> c++23 |
2023-07-16 13:00:43 | admin | set | status: dr -> open |
2023-02-18 18:43:04 | admin | set | status: ready -> dr |
2023-02-10 23:01:52 | admin | set | status: tentatively ready -> ready |
2023-02-10 06:31:35 | admin | set | messages: + msg7185 |
2023-02-10 06:31:35 | admin | set | status: review -> tentatively ready |
2023-01-01 20:37:36 | admin | set | status: drafting -> review |
2022-11-20 07:54:16 | admin | set | messages: + msg7050 |
2022-11-20 07:54:16 | admin | set | status: open -> drafting |
2020-06-15 00:00:00 | admin | create |