[Issue 5721] New: dmd fails to properly differentiate between a function and an eponymous template with the same name

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Mar 8 16:24:03 PST 2011


http://d.puremagic.com/issues/show_bug.cgi?id=5721

           Summary: dmd fails to properly differentiate between a function
                    and an eponymous template with the same name
           Product: D
           Version: unspecified
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: jmdavisProg at gmx.com


--- Comment #0 from Jonathan M Davis <jmdavisProg at gmx.com> 2011-03-08 16:21:02 PST ---
This code:

import std.string;
import std.traits;

void main()
{
    isNumeric("hello world");
}


fails to compile, giving this error:

std/traits.d(2576): Error: template std.traits.isNumeric(T) is not a function
template


There should be no confusion between std.string.isNumeric (which is a normal
function - not even a templated function) and std.traits.isNumeric (which is an
eponymous template). The syntax for each is quite distinct. There shouldn't be
any confusion. One takes a variable as a function argument. The other takes a
type as a templated argument.

_Worst_ case, this should complain that you need to specify which of the two
isNumerics that you mean, but it should be quite clear which is meant, so
ideally, it should just work with no error at all. Regardless, the error given
really shouldn't be given. Either this needs to be fixed to work properly or a
better error message needs to be given (similar to what occurs when you have
ambiguity between overload sets).

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list