Recursive delegate inside template?

drathier forum.dlang.org at fi.fo
Fri Jun 26 14:12:00 UTC 2020


I'm trying to get this to compile, without much luck:

```
bool foo()
{
     template fn(A)
     {
         A delegate(A) fn;
         fn = delegate A(A a)
         {
             return fn(a);
         };
     }

     return fn!(bool)(true);
}
```

What am I missing here? How can I define a recursive delegate 
inside another function like this? I even got a gold linker error 
from run.dlang.io at one point: "TLS relocation against invalid 
instruction".

Removing the template works fine:

```
bool foo()
{
     alias A = bool;
     A delegate(A) fn;
     fn = delegate A(A a) { return fn(a); };

     return fn(true);
}
```
but I need the function to be polymorphic, so I need the template.


More information about the Digitalmars-d-learn mailing list