toHash => pure, nothrow, const, @safe

so so at so.so
Mon Mar 12 00:18:05 PDT 2012


On Sunday, 11 March 2012 at 23:54:10 UTC, Walter Bright wrote:
> Consider the toHash() function for struct key types:
>
> http://dlang.org/hash-map.html
>
> And of course the others:
>
> const hash_t toHash();
> const bool opEquals(ref const KeyType s);
> const int opCmp(ref const KeyType s);
>
> They need to be, as well as const, pure nothrow @safe.
>
> The problem is:
> 1. a lot of code must be retrofitted
> 2. it's just plain annoying to annotate them
>
> It's the same problem as for Object.toHash(). That was 
> addressed by making those attributes inheritable, but that 
> won't work for struct ones.
>
> So I propose instead a bit of a hack. toHash, opEquals, and 
> opCmp as struct members be automatically annotated with pure, 
> nothrow, and @safe (if not already marked as @trusted).

A pattern is emerging. Why not analyze it a bit and somehow try 
to find a common ground? Then we can generalize it to a single 
annotation.


More information about the Digitalmars-d mailing list