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