digitalmars.D.learn - should 'template MyT (T : Object)' match interface-types?
- derick_eddington nospam.yashmoo.com (50/50) Jun 04 2005 I'm making an all-purpose isType!(AnyType)(anything) predicate and I enc...
I'm making an all-purpose isType!(AnyType)(anything) predicate and I encountered interface-types not matching my 'template isType (T : Object)' which is going to make it more complex... so I was wondering if interface-types shouldn't be matching (T : Object)? I.E.: : import std.stdio; : : template MyT (T : Object) : { : void MyT (Object o) : { : writefln("MyT!(T:Object)"); : writefln("typeid(T) : ", typeid(T)); : writefln("typeid(T) is a TypeInfo_Class : ", : (cast(TypeInfo_Class) typeid(T)) ? true : false); : } : } : : : template MyT (T) : { : void MyT (Object o) : { : writefln("MyT!(T) ...not what I wanted"); : writefln("typeid(T) : ", typeid(T)); : writefln("typeid(T) is a TypeInfo_Class : ", : (cast(TypeInfo_Class) typeid(T)) ? true : false); : } : } : : : interface MyInterface {} : class MyClass : MyInterface {} : : : void main () : { : MyClass c = new MyClass; : : MyT!(MyClass)(c); : writefln(); : MyT!(MyInterface)(c); : } $ ./tmpl_intf MyT!(T:Object) typeid(T) : MyClass typeid(T) is a TypeInfo_Class : true MyT!(T) ...not what I wanted typeid(T) : MyInterface typeid(T) is a TypeInfo_Class : true
Jun 04 2005