[Issue 2347] opIs is missing
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Tue Jul 18 22:02:36 PDT 2017
https://issues.dlang.org/show_bug.cgi?id=2347
Vladimir Panteleev <dlang-bugzilla at thecybershadow.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Hardware|x86 |All
Resolution|--- |WONTFIX
OS|Linux |All
--- Comment #4 from Vladimir Panteleev <dlang-bugzilla at thecybershadow.net> ---
(In reply to Stewart Gordon from comment #1)
> I think that having opIs is philosophically wrong. The whole point of is is
> to override any type-defined equality operator by forcing a byte-for-byte
> comparison. There are probably plenty of template libraries and the like
> that rely on this.
Agreed. Currently `is` provides a guarantee that it compares bits and will
never invoke any other user-defined comparison mechanisms. This applies to
user-defined types (structs, classes) as well as floating-point types (where
x==x may not always be true due to NaNs). An opIs operator would break that
guarantee.
User-defined smart references and slices could instead expose identity
comparison via a ".ptr" property, which could then be compared using `==` or
`is`.
Also, I understand that such language additions would need to be done via a DIP
today.
@Andrei: I'll close this (also because this issue is close to a decade old),
but please reopen if you disagree.
--
More information about the Digitalmars-d-bugs
mailing list