Object.opEquals, opCmp, toHash

Walter Bright newshound2 at digitalmars.com
Thu Feb 16 00:35:20 PST 2012


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.).


More information about the Digitalmars-d mailing list