Thread overview
Displaying type of something
Mar 09, 2009
Georg Wrede
Mar 09, 2009
Lars Kyllingstad
Mar 09, 2009
bearophile
Mar 09, 2009
Georg Wrede
Mar 09, 2009
Christopher Wright
Mar 10, 2009
Georg Wrede
March 09, 2009
When creating templates, it is sometimes handy to print the type of something. Is there a trivial way to print it?

    writeln("Typeof T is: ", typeof(t));

This doesn't work, but you get the idea.
March 09, 2009
Georg Wrede wrote:
> When creating templates, it is sometimes handy to print the type of something. Is there a trivial way to print it?
> 
>     writeln("Typeof T is: ", typeof(t));
> 
> This doesn't work, but you get the idea.

typeof(t).stringof


-Lars
March 09, 2009
Georg Wrede:
> When creating templates, it is sometimes handy to print the type of something. Is there a trivial way to print it?

writeln("Typeof T is: ", typeid(typeof(t)));

(Try alternatives of that with a dynamic type, like a class).

Bye,
bearophile
March 09, 2009
bearophile wrote:
> Georg Wrede:
>> When creating templates, it is sometimes handy to print the type of something. Is there a trivial way to print it?
> 
> writeln("Typeof T is: ", typeid(typeof(t)));
> 
> (Try alternatives of that with a dynamic type, like a class).

Thanks!!!


    class A { }
    class B : A { }
    class C : B { }
    A a;
    B b;
    C c;
    A ac = new C;

Typeof ac is: A

So it's the variable, not its current contents. Kinda makes sense.
March 09, 2009
Georg Wrede wrote:
> When creating templates, it is sometimes handy to print the type of something. Is there a trivial way to print it?
> 
>     writeln("Typeof T is: ", typeof(t));
> 
> This doesn't work, but you get the idea.

For a class or interface:
writeln("Typeof T is: ", t.classinfo.name);
March 10, 2009
Christopher Wright wrote:
> Georg Wrede wrote:
>> When creating templates, it is sometimes handy to print the type of something. Is there a trivial way to print it?
>>
>>     writeln("Typeof T is: ", typeof(t));
>>
>> This doesn't work, but you get the idea.
> 
> For a class or interface:
> writeln("Typeof T is: ", t.classinfo.name);


    A a;
    B b;
    C c;
    A ac = new C;

    writeln("Typeof T is: ", ac.classinfo.name);

and the result is:

Typeof T is: C

so it really works!!!

Thaks, guys!!