> The library refernce has the following text concerning the is expression: > > 5. is ( Type Identifier : TypeSpecialization ) > > The condition is satisfied if Type is the same as TypeSpecialization, or if > Type is a class and TypeSpecialization is a base class or base interface of > it. The Identifier is declared to be either an alias of the > TypeSpecialization or, if TypeSpecialization is dependent on Identifier, > the deduced type. > > However, the following code fragment will print "short is int" and "short" > which seems to contradict the above description. > > static if(is(short T: int)){ > writeln("short is int"); > writeln(typeid(T)); > }else{ > writeln("short is not int"); > } > > The observed behaviour is such that short T: int means that short can be > implicitely converted to int and T is defined to mean "short" rather than > "int". Thus T is not defined to mean TypeSpecialization but Type. This > discrepancy should be corrected.
Create a bug report for it: http://d.puremagic.com/issues/ - Jonathan M Davis