How do I obtain the default hash of a user-defined struct
dnspies
dspies at ualberta.ca
Wed Apr 2 13:53:47 PDT 2014
Thanks,
Actually I'm realizing there's a lot I'm unclear about when it
comes to default comparison, equality, hashing, etc.
If my struct contains a dynamic array, are the contents of the
array compared by default, or just the pointers/lengths?
Also, when two arrays are compared for content, are their
pointers compared first in case they happen to be the same so the
deep comparison can be shortcut?
Also, how do I obtain the default hash of a dynamic array ('s
contents)? Is there one? I assume there must be since
associative arrays can take string as a key-type.
To make a struct a valid key type, do I need to implement both
opCmp and opEquals or just one or the other. It says on the page
about Associative Arrays: "The implementation may use either
opEquals or opCmp or both." Does that mean it uses whichever one
is user-defined (or both if they're both user-defined)? Or does
it mean the user is responsible for defining both?
Also, it says "Care should be taken so that the results of
opEquals and opCmp are consistent with each other when the
struct/union objects are the same or not.", certainly this means
that if a.opEquals(b), then a.opCmp(b) should be 0, but does the
converse have to be true?
Is there somewhere I can find information about default operator
implementations and consistency?
More information about the Digitalmars-d-learn
mailing list