Object.opEquals, opCmp, toHash

H. S. Teoh hsteoh at quickfur.ath.cx
Thu Feb 16 09:38:54 PST 2012

On Thu, Feb 16, 2012 at 12:35:20AM -0800, Walter Bright wrote:
> These all need to be:
>     const pure nothrow @safe
> Unless this is done, the utility of const, pure, nothrow and @safe
> is rather crippled.
> Any reason why they shouldn't be?


> One reason is memoization, aka lazy initialization, aka logical
> const. I don't believe these are worth it. If you must do it inside
> those functions (and functions that override them), you're on your
> own to make it work right (use unsafe casts, etc.).

This is a non-problem once the compiler implements memoization as an
optimisation. Which it can't until we go ahead with this change. This is
the direction that we *should* be going anyway, so why not do it now
rather than later?


Latin's a dead language, as dead as can be; it killed off all the
Romans, and now it's killing me! -- Schoolboy

More information about the Digitalmars-d mailing list