On 10/14/2013 10:44 PM, captaindet wrote:

> Classes can be used as the KeyType. For this to work, the class
> definition must override the following member functions of class Object:
> hash_t toHash()
> bool opEquals(Object)
> int opCmp(Object)

...

> it seems to work out of the box -
> without overriding any member functions. in my use case, i wouldn't be
> able to modify the class anyway.
>
> so my questions:
>
> why is it working, is it just syntactic sugar for using cast(void*)Obj
> as key?

To be pedantic, hash values are of type size_t.

> what is the danger of using objects as keys? when would it fail?
>
> as it seems to be working against language specs, will this 'feature'
> eventually be removed?
> (then maybe i should use cast(void*)Obj right away...)

I don't know the definitive answer but my experience was the same when I wrote the following chapter:

  http://ddili.org/ders/d.en/object.html

Contrary to your current need, I say "However, its default behavior is almost never what is desired." :)

>
>
> thanks, det
>

Ali

Reply via email to