Am 31.07.2014 03:07, schrieb Andrei Alexandrescu:
A coworker asked about the idiomatic way to get the hash of a string in
D, and somewhat surprisingly the best answer I could find is: "to get
the hash of an lvalue x, call typeof(x).getHash(&x)."
That's admittedly quite clunky and indirect. Is it worth it to simplify
that by means of a template in object.di?
Andrei
I proposed something like the following in another thread and think it
would be really useful (to implement toHash() amongst other things):
hash_t createHash(T...)(T args)
{
// return a hash over all arguments
}
In that thread (I think it was "WAT: opCmp and opEquals woes") it was
implied that currently the compiler generates a toHash() automagically
by hashing all members (of a struct or class) - analogous to opEquals
that just compares all members.
I can't find any documentation on that behavior.. but if it indeed
exists there must already be a sensible hash algorithm for multiple
values of different types which could just be reused here.
Of course hashing a single value is just a special case of this.
Cheers,
Daniel