From: Gavin Lambert (boost_at_[hidden])
Date: 2023-02-20 05:47:26


On 20/02/2023 18:25, Peter Dimov wrote:
> Whatever your definition of equivalence, X is neither equivalent to an int,
> nor to a 'none', and 'none' doesn't even have operator==.

Regarding this point specifically, the author of X has indeed declared
that X has an equivalence to int, by implementing that operator.

Being able to ask if `x == 4` inherently implies that `x` can somehow be
equivalent to `4`. If that equivalence is not intended to be implied,
then it shouldn't have been defined. (or perhaps a different type from
`int` should have been used)

This does *not* mean that an X is-a int, or even that it can be
converted from or to an int -- those are separate operations. But it is
-- somehow -- able to answer if it is currently equivalent to an int or
not. That is precisely what defining the operator means.