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
Then, we match y==x against this and we convert y to X (first param of #2).
What bothers me a bit is that the property "implicit object param" (which prevents conversions on that operand) is not explicitly mentioned as being swapped in 16.3.1.2p6.2.
The text was updated successfully, but these errors were encountered:
Would the following note suffice in [over.match.oper]/6.2.?
[Note: For this synthesized candidate, reversing the parameters includes reversing all their attributes, so that for a member function the implicit object parameter will be the second parameter. --end note]
x == x
(obviously) works.x == y
gets us(x <=> y) == 0
which works (conversion on second param)y == x
: We check whether0 == (x <=> y)
works (yes, it does), so we add thesynthesized candidate
to the candidate set for
==
. The total candidate set fory==x
isop<=>(const X& implicit_obj_param, const X&);
op<=>(const X&, const X& implicit_obj_param); // #2
Then, we match
y==x
against this and we converty
toX
(first param of #2).What bothers me a bit is that the property "implicit object param" (which prevents conversions on that operand) is not explicitly mentioned as being swapped in 16.3.1.2p6.2.
The text was updated successfully, but these errors were encountered: