On Sunday, 10 July 2016 at 07:20:29 UTC, Meta wrote:
On Friday, 8 July 2016 at 09:01:10 UTC, Marc Schütz wrote:
`foo()` is effectively a delegate, therefore `const` applies to the context.

AFAIK const on a function can only ever refer to the `this` pointer, but there is no `this` pointer.

To the `this` pointer, or the context, in case of delegates. Here, `foo()` is a nested function that accesses a variable in the outer scope. This qualifies it as a delegate [1]:

"When comparing with nested functions, the function form is analogous to static or non-nested functions, and the delegate form is analogous to non-static nested functions. In other words, a delegate literal can access stack variables in its enclosing function, a function literal cannot."

[1] https://dlang.org/spec/expression.html#FunctionLiteral

Reply via email to