<div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Ryan Joseph via fpc-pascal <<a href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a>> schrieb am Mi., 16. Feb. 2022, 07:59:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
> On Feb 16, 2022, at 2:46 AM, Sven Barth via fpc-pascal <<a href="mailto:fpc-pascal@lists.freepascal.org" target="_blank" rel="noreferrer">fpc-pascal@lists.freepascal.org</a>> wrote:<br>
> <br>
> // nested function/procedure/routine variable<br>
> type<br>
>   TFoobarNested = function: LongInt is nested;<br>
> <br>
> var<br>
>    f: TFoobarFuncRef;<br>
> begin<br>
>   // anonymous function/procedure/routine<br>
>   f := function: LongInt<br>
>         begin<br>
>         end;<br>
> end;<br>
<br>
"However assigning a nested function variable to a function reference is much harder.<br>
Assigning a function reference to a nested function variable is hard as well. "<br>
<br>
This means if you expanded your example with:<br>
<br>
var<br>
  n: TFoobarNested;<br>
begin<br>
  f := n;<br>
<br>
THAT would be hard? I've never passed around nested function vars before so I don't really know the limitations of this. The important thing is the primary use case works.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Correct. In addition to that the general assumption for function references is that they can be called even after the function they were assigned to has been left. For a nested function itself this can hold true as well (cause the compiler simply needs to transform the nested function correctly when generating the implementation for the capture object), but for a nested function variable this assumption would be wrong. </div><div dir="auto"><br></div><div dir="auto">Regards, </div><div dir="auto">Sven </div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div></div></div>