strange behavior in opApply

BCS ao at pathlink.com
Sat Jan 27 10:47:01 PST 2007


I think this is a bug. I am not sure, but it is really annoying.

The following code fails to compile:

struct Foo
{
  int opApply(int delegate(in int) dg)
  {
    for(int i = 0; i< 10; i++)
      if(int ret = dg(i>>2))
        return ret;
    return 0;
  }
}

void main()
{
  Foo f;
  int j=0;
  foreach(int i; f)
  {
    j+=i;
  }
}

The foreach body is turned into a delegate taking (inout int), but it is 
not marked as inout! I have a case where I'm trying to use opApply where 
it can't be inout. 

Is this a bug?




More information about the Digitalmars-d-bugs mailing list