You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The return value V of a defaulted == operator function with parameters x and y is determined by comparing corresponding elements $x_i$ and $y_i$ in the expanded lists of subobjects for x and y (in increasing index order) until the first index $i$ where $x_i == y_i$ yields a result value which, when contextually converted to bool, yields false.
If no such index exists, V is true.
Otherwise, V is false.
The first long sentence describes the side effects of calling a defaulted operator==, while the other two sentences describe the return value.
This is unambiguous, but I think the wording could be improved.
Problem
At first glance this might be interpreted in a way that describes three distinct cases. In that case it's hard to make sense of the "Otherwise, V is false." sentence, as seemingly the previous sentences cover all cases.
...when contextually converted to bool, yields false; V is false.
If no such index exists, V is true.
Switch around the last two sentences:
..when contextually converted to bool, yields false.
If such index exists, V is false.
Otherwise, V is true.
Some other considerations
Even though the first long sentence describes the side effects of calling a defaulted operator==, it leads in with "The return value V of a defaulted == operator function with parameters x and y is determined...". It might be better to reword the first sentence in a way that doesn't mention the return value yet. One such wording would be, combined with the second suggestion above:
When a defaulted == operator function is called with parameters x and y then the corresponding elemnts $x_i$ and $y_i$ in the expanded lists of subobjects for x and y (in increasing index order) are compared until the first index $i$ where $x_i == y_i$ yields a result value which, when contextually converted to bool, yields false.
If such index exists, the return value is false.
Otherwise, the return value is true.
[class.spaceship] can have similar treatment.
The text was updated successfully, but these errors were encountered:
Background
[class.eq] currently reads:
The first long sentence describes the side effects of calling a defaulted
operator==
, while the other two sentences describe the return value.This is unambiguous, but I think the wording could be improved.
Problem
At first glance this might be interpreted in a way that describes three distinct cases. In that case it's hard to make sense of the "Otherwise,
V
isfalse.
" sentence, as seemingly the previous sentences cover all cases.This came up on the std-discussion mailing list: https://lists.isocpp.org/std-discussion/2022/12/1927.php
Some proposals for rewording
Some other considerations
Even though the first long sentence describes the side effects of calling a defaulted
operator==
, it leads in with "The return valueV
of a defaulted==
operator function with parametersx
andy
is determined...". It might be better to reword the first sentence in a way that doesn't mention the return value yet. One such wording would be, combined with the second suggestion above:[class.spaceship] can have similar treatment.
The text was updated successfully, but these errors were encountered: