March 01, 2009 [Issue 2699] New: template functions doesn't specialize types of arguments correctly. | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=2699 Summary: template functions doesn't specialize types of arguments correctly. Product: D Version: 2.025 Platform: PC OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla@digitalmars.com ReportedBy: kk_tnr@hotmail.com DMD 2.205 on Windows See this code. import std.stdio: writefln; void main( ){ int a = 1; funcA( [a] ); funcA!( typeof( [a] ))( [a] ); } void funcA( T )( T t ){ writefln( "funcA, T" ); } void funcA( T: T[] )( T[] t ){ writefln( "funcA, T: T[]" ); } It is compiled with no errors. Result: funcA, T funcA, T: T[] This means, 'funcA( [a] );' is not equal to 'funcA!( typeof( [a] ))( [a] );' Perhaps it is not a bug, but is not good spec. Thank you for your reading. -- |
February 20, 2012 [Issue 2699] template functions doesn't specialize types of arguments correctly. | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2699 yebblies <yebblies@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |yebblies@gmail.com Resolution| |INVALID --- Comment #1 from yebblies <yebblies@gmail.com> 2012-02-20 18:36:25 EST --- The problem is here: void funcA( T: T[] )( T[] t ) Calling with an int[] parameter infers T to be int, which does _not_ fit the specialization. void funcA( T: U[], U )( T t ) works. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation