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

           Summary: With DList of pointers, insertBack matches multiple
                    templates.
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Phobos
        AssignedTo: [email protected]
        ReportedBy: [email protected]


--- Comment #0 from [email protected] 2013-02-16 05:46:31 PST ---
For example:

struct STRUCT {
   int field;
}

DList!(STRUCT*) list;

STRUCT struct;

//This works:
list.insertBack(null);
list.back=struct;

//This doesn't:
list.insertBack(&struct);

The error is along the lines of:

Error: template std.container.DList!(STRUCT*).DList.insertBeforeNode matches
more than one template declaration,
C:\D\dmd2\windows\bin\..\..\src\phobos\std\container.d(2054):insertBeforeNode(Stuff)(Node*
n, Stuff stuff) if (isInputRange!(Stuff) &&
isImplicitlyConvertible!(ElementType!(Stuff), T)) and
C:\D\dmd2\windows\bin\..\..\src\phobos\std\container.d(2113):insertBeforeNode(Stuff)(Node*
n, Stuff stuff) if (isImplicitlyConvertible!(Stuff, T))

Looks as if it accidentally matches the range-adding insertBack function as
well as the single-entry-adding function.

(I haven't directly tested this example - I just encountered it in a bigger
project. Apologies if I've got something wrong in the example.)

I don't know enough about the stuff involved to fix this. Hopefully someone who
knows D better can figure out a good fix, either in the compiler or in Phobos.
:)

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

Reply via email to