Should this be possible? I admit to not being fully clear on the way delegates are handled, but maybe someone can shed some light? As an example I use a snippet Ali uses to demonstrate opApply:

struct NumberRange {
  int begin;
  int end;

int opApply(int delegate(ref int) @nogc operations) @nogc const {
    int result = 0;

    for (int number = begin; number != end; ++number) {
      result = operations(number);

      if (result) {
        break;
      }
    }
    return result;
  }
}

void main() {
  import std.stdio;
  foreach (element; NumberRange(3, 7)) { // line 21
    write(element, ' ');
  }
}

When I compile this with 2.066.0 I get

opapply.d(21): Error: function opapply.NumberRange.opApply (int delegate(ref int) @nogc operations) const is not callable using argument types (int delegate(ref int __applyArg0) @system)

It doesn't actually complain about anything gc, just about the signature, so I was wondering if there is some restriction inside the foreach implementation that can be lifted? Thanks in advance for any hints!

Reply via email to