Going from TypeInfo of template to TypeInfo of template parameter/member

Christopher Wright dhasenan at gmail.com
Mon Nov 12 17:01:00 PST 2007


Bill Baxter wrote:
> I'm trying to get info about types from their TypeInfo.
> 
> Say I have a struct like
> 
> struct Container(T)
> {
>    T[] elems;
> }
> 
> And I have a TypeInfo for a Container!(float).  Is there any way to get 
> the TypeInfo for a float out of that?  Or a double, or int, or whatever 
> it happens to be.
> 
> TypeInfo get_container_element_type(TypeInfo container_typeinfo)
> {
>    ???
> }
> 
> The TypeInfo's .next and .offTi are both null, so that's no help.
> The toString includes the stringized version of the type "float", 
> though, so I could try to use that.  Seems unreliable though.
> 
> Thanks for any suggestions.
> --bb

Looks like everyone's doing the same things these days :)

My post a bit above yours is asking essentially the same question for 
classes and interfaces, so I'd guess there's no way to do that at 
compile time, and therefore probably no way to do that at runtime, in 
the general case.

If you only need it at runtime, you could do something like:

struct Container(T) {
    static TypeInfo containedType = typeid(T);
    //...
}

That assumes you're only dealing with code that you wrote.


More information about the Digitalmars-d-learn mailing list