On Friday, 29 June 2018 at 20:08:56 UTC, Robert M. Münch wrote:
On 2018-06-29 18:05:00 +0000, Ali ‡ehreli said:

On 06/29/2018 09:44 AM, Robert M. Münch wrote:
void handler(alias func)(C[] cs) {
     foreach (c; cs) {
         func(c);
     }
}

Is it possible to make C[] a template type so that I can use different classes and lambdas?

My guess would be:

void handler(alias func, T)(T[] ts) {
    ....
}


Ok, the "strange" syntax for me is the handler(alias func) or handler(string func) ... I'm alway thinkin in lines of a parameter... which of course doesn't work.

Looking at the D grammer for functions these things should be the FuncDeclaratorSuffix, is this right? And then, which part does this fall into?

FuncDeclaratorSuffix:
   Parameters MemberFunctionAttributesopt
   TemplateParameters Parameters MemberFunctionAttributesop

It's definitely the "TemplateParameters" one:

void func(<template params>)(<params>) { ... }

is the short form of

template(<template params>)
{
    void func(<params>) { ... }
}

https://dlang.org/spec/template.html

Reply via email to