Thanks for excellent explanation!

On Sunday, 28 October 2018 at 19:00:52 UTC, Jonathan M Davis wrote:

Because Object predats @safe (and most attributes), it really isn't compatible with them. In fact, it predates const (since it's basically the same as it was in D1) and it's only possible to compare const class objects because of a hack in the free function opEquals (which == lowers to) which casts away const (meaning that if you're not careful, you can actually violate the type system with == by mutating an object in a class'
...
So, unfortunately, for now, you're going to have to use @trusted with == on classes, as stupid as that is, though as a workaround, you could always create an @trusted wrapper function that just called ==. It would still be annoying, but it would be cleanly restricted the @trusted bits.

- Jonathan M Davis


Reply via email to