why is `typeid` only half baked?

Jacob Carlborg via Digitalmars-d digitalmars-d at puremagic.com
Fri Nov 6 09:51:29 PST 2015


On 2015-11-06 18:03, Adam D. Ruppe wrote:
> On Friday, 6 November 2015 at 16:38:04 UTC, Or Dahan wrote:
>> Any reasons why it inherently can't be improved to do so?
>
> You know, I was about to say no because interfaces can be objects from
> other languages... but the compiler is strict enough now that it can
> statically determine if that might be the case.
>
> If the interface derives from IUnknown, it might be a COM object so it
> can't be sure it is a D class. Similarly if it derives from extern(C++).
> In those cases, the cast to Object returns null, and attempting to get
> typeid() off it is liable to outright crash.
>
> But if it is a D interface... it should be ok doing an automatic cast to
> Object and trying to get typeinfo there.
>
> The only problem it might have is if the typeinfo is in a dll. But I
> think that has been basically solved too.

I had the same problem with "classinfo" [1], I guess that's basically 
the same as "typeid". The difference is that "classinfo" is specified in 
the spec that it will given information about the interface and not the 
class it might be an instance of [2].

[1] http://forum.dlang.org/post/mrl1uv$9ag$1@digitalmars.com
[2] http://dlang.org/property.html#classinfo

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list