detect implicitly convertible typeid's?

bitwise bitwise.pvt at gmail.com
Mon Sep 25 14:43:16 UTC 2017


On Monday, 25 September 2017 at 13:20:03 UTC, Steven 
Schveighoffer wrote:
> On 9/23/17 11:52 AM, bitwise wrote:
>> Is it possible to tell if two objects represented by 
>> TypeInfo's are convertible to each other?
>> 
>> Basically, is there a built in way to do this?
>> 
>> int x;
>> long y;
>> assert(typeid(x).isImplicitlyConvertibleTo(typeid(y));
>
> I would say no. There isn't any function/data to detect that.
>
> Keep in mind that TypeInfo is generated by the compiler, and 
> only contains what the developers of the runtime have wanted it 
> to contain. It's not a full-fledged reflection system.

Something like this along side TypeInfo.postblit and 
TypeInfo.destroy would actually be useful:

TypeInfo.cast(void* src, void** dst, TypeInfo dstType);

I wonder though...does a cast even resolve to a single function 
call at compile time, or is there scattered context-dependent 
code throughout the compiler to insert the appropriate logic?

Based on current trends though, it seems like 
TypeInfo.postblit/destroy may be on the chopping block...any idea?

> However, you COULD build something in RTInfo that could place 
> that inside the TypeInfo. That is what RTInfo was added for.

The comments say it's for precise GC:

https://github.com/dlang/druntime/blob/cc8edc611fa1d753ebb6a5fabbc3f37d8564bda3/src/object.d#L312-L314

Doesn't that mean my code could some day get clobbered if I put 
it there and precise GC is implemented?

Also, don't I need to compile a custom runtime for that?

   Thanks



More information about the Digitalmars-d-learn mailing list