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 tell you if they are the same dynamic class type.


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.