www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 2442] New: opApply does not allow inferring parameter types when overloaded on const

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2442

           Summary: opApply does not allow inferring parameter types when
                    overloaded on const
           Product: D
           Version: 2.019
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Keywords: rejects-valid
          Severity: critical
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: schveiguy yahoo.com


If I have the following code:

struct S
{
   int[] arr;
   int opApply(int delegate(ref int v) dg)
   {
      int result = 0;
      foreach(ref x; arr)
      {
        if(result = dg(x))
           break;
      }
      return result;
   }

   int opApply(int delegate(ref const(int) v) dg) const
   {
      int result = 0;
      foreach(ref x; arr)
      {
        if(result = dg(x))
           break;
      }
      return result;
   }
}

This is a properly const-decorated struct.  I should be able to call
foreach(x; s)

Whether s is const or not.  However, the compiler currently gives me an error:

void main()
{
    S s;
    foreach(x; s)
    {
        x = 5;
    }
}

testit.d(32): Error: cannot uniquely infer foreach argument types


-- 
Nov 06 2008
parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2442





------- Comment #1 from schveiguy yahoo.com  2008-11-06 09:34 -------
Note that this is a blocker for Tango


-- 
Nov 06 2008