Re: How to compare two types?

2014-09-01 Thread MarisaLovesUsAll via Digitalmars-d-learn
Thanks for the answers!

How to compare two types?

2014-08-31 Thread MarisaLovesUsAll via Digitalmars-d-learn
How to compare two types? Will I use T.stringof instead of this? void main() { if(One is Two) {} //Error: type One is not an expression //Error: type Two is not an expression } class One {} class Two {} Regards, MarisaLovesUsAll

Re: How to compare two types?

2014-08-31 Thread Adam D. Ruppe via Digitalmars-d-learn
There's two ways: static if(is(One == Two)) { } That compares the static types in a form of conditional compilation. http://dlang.org/expression.html#IsExpression If you want to compare the runtime type of a class object, you can do: if(typeid(obj_one) == typeid(obj_two)) that should

Re: How to compare two types?

2014-08-31 Thread bearophile via Digitalmars-d-learn
Adam D. Ruppe: If you want to compare the runtime type of a class object, you can do: if(typeid(obj_one) == typeid(obj_two)) that should tell you if they are the same dynamic class type. And what about: if (is(typeof(obj_one) == typeof(obj_two))) Bye, bearophile

Re: How to compare two types?

2014-08-31 Thread Adam D. Ruppe via Digitalmars-d-learn
typeof() always gets the static type, typeid() is needed if you want the dynamic type.

Re: How to compare two types?

2014-08-31 Thread Adam D. Ruppe via Digitalmars-d-learn
On Sunday, 31 August 2014 at 23:53:31 UTC, bearophile wrote: if (is(typeof(obj_one) == typeof(obj_two))) You could, but since it is static info you might as well use static if.