On Monday, 20 November 2023 at 16:09:33 UTC, Antonio wrote:

Is there any way to force D compiler to treat this "createCounter" declaration as **delegate** instead of **function**?

```d
  auto createCounter = (int nextValue) => () => nextValue++;
```

generally there is a way to tell the compiler specifically that you want a delegate or a function, and additionally there is `toDelegate` function from std.functional that could be useful in some cases.

https://dlang.org/phobos/std_functional.html#toDelegate


the syntax for specifying delegate/function is smth like this, IIRC return type can be omitted but for reference I write it here as auto.

```d
// this is a function returning a delegate
auto createCounter(int nextValue) => auto delegate() => nextValue++;

// this is a function returning a function
auto createCounter(int nextValue) => auto function() => nextValue++;
```

Reply via email to