digitalmars.D.bugs - [Issue 12447] New: variadic template functions hijack all eponymous enum and alias template overloads
- d-bugmail puremagic.com (47/47) Mar 23 2014 https://d.puremagic.com/issues/show_bug.cgi?id=12447
https://d.puremagic.com/issues/show_bug.cgi?id=12447 Summary: variadic template functions hijack all eponymous enum and alias template overloads Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: major Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: 2krnk gmx.net see following example code. the two 'test' templates work fine by themselves. if they are in the same module, however, the eponymous enum template does not work anymore. instead the compiler tries to instantiate the variadic template - and fails. same issue with eponymous alias templates. this should not happen as o the two templates have very different signatures, i.e. completely incompatible argument lists ( zero vs >0 arguments) o the string parameter is more specialized than the take-all tuple example code: ============= // cannot be used with function arguments: enum test(string str ) = "templated enum 'test' used with "~str; // cannot be called with less than 1 function arguments: string test (T ...)( T strs ) if( strs.length ) { return "templated function 'test' called with "~strs[0]; } // enum epo = test!("foo"); // use eponymous enum // if commented in: // Error: tuple T is used as a type // in line 5 = string test (T ...)( T strs ) enum vari = test("bar"); // use templated/variadic function void main(string[] args) { import std.stdio; // writeln( epo ); writeln( vari ); } -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 23 2014