Thread overview |
---|
December 14, 2006 [Issue 688] New: Implicit function template match doesn't work for classes | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=688 Summary: Implicit function template match doesn't work for classes Product: D Version: 0.177 Platform: All OS/Version: All Status: NEW Severity: major Priority: P2 Component: DMD AssignedTo: bugzilla@digitalmars.com ReportedBy: wbaxter@gmail.com IFTI works fine for structs in the case below, but doesn't work for classes. Here's the code: ----- // With DMD 0.177 // Error: // template xxx.bar_class(T) does not match any template declaration // template xxx.bar_class(T) cannot deduce template function from argument // types (FooClass,FooClass) class FooClass(T) { T data; } struct FooStruct(T) { T data; } void bar_struct(T)(FooStruct!(T) a) {} void bar_class(T)(FooClass!(T) a) {} void main() { auto C = new FooClass!(double); FooStruct!(double) S; bar_struct(S); // works bar_class!(double)(C); // works bar_class(C); // does not work } -- |
December 18, 2006 [Issue 688] Implicit function template match doesn't work for classes | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=688 wbaxter@gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |wbaxter@gmail.com ------- Comment #1 from wbaxter@gmail.com 2006-12-17 19:53 ------- Here's another manifestation of what is probably the same bug: is(Type id:specialization) doesn't work for classes either. Here's the previous example with the is test added too: ---------- class FooClass(T) { T data; } struct FooStruct(T) { T data; } void bar_struct(T)(FooStruct!(T) a) {} void bar_class(T)(FooClass!(T) a) {} template base_type(S) { static if ( is(S T : FooStruct!(T)) ) { alias T base_type; } else static if ( is(S T : FooClass!(T)) ) { alias T base_type; } else { static assert(0, "Unknown type"); } } void main() { auto C = new FooClass!(double); FooStruct!(double) S; bar_struct(S); // works bar_class!(double)(C); // works bar_class(C); // does not work alias base_type!(FooStruct!(double)) sbase;//good alias base_type!(FooClass!(double)) cbase;//no good } -- |
December 24, 2006 [Issue 688] Implicit function template match doesn't work for classes | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=688 wbaxter@gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Comment #2 from wbaxter@gmail.com 2006-12-24 00:27 ------- Confirmed fixed in DMD 0.178 -- |
December 27, 2006 [Issue 688] Implicit function template match doesn't work for classes | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=688 ------- Comment #3 from bugzilla@digitalmars.com 2006-12-27 02:05 ------- Fixed DMD 0.178 -- |
December 30, 2006 [Issue 688] Implicit function template match doesn't work for classes | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=688 ------- Comment #4 from thomas-dloop@kuehne.cn 2006-12-30 09:49 ------- Added to DStress as http://dstress.kuehne.cn/compile/t/template_53_A.d http://dstress.kuehne.cn/compile/t/template_53_B.d http://dstress.kuehne.cn/compile/t/template_53_C.d http://dstress.kuehne.cn/compile/t/template_53_D.d -- |
Copyright © 1999-2021 by the D Language Foundation