what is equivalent to template template

Alex Parrill via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue May 3 14:37:39 PDT 2016


On Tuesday, 3 May 2016 at 21:31:35 UTC, Erik Smith wrote:
> C++ has template templates.  I'm not sure how to achieve the 
> same effect where (in example below) the template function 
> myVariadic is passed to another function.
>
>         void myVaridatic(A...)(A a) {}
>
>         static void call(alias F,A...)(F f,A a) {
>             f(a);
>         }
>
>         void foo() {
>             call(myVaridatic,1,2,3);
>         }

You're close.

An `alias` template parameter can be any symbol, including a 
template. But you can't pass in a template as a runtime 
parameter, so having `F f` in your parameters list is wrong 
(there's nothing to pass anyway; you already have the template, 
which is F).

static void call(alias F, A...)(A a) {
     F(a);
}

Then instantiate and call the `call` function with the template 
you want:

call!myVariadict(1,2,3);


More information about the Digitalmars-d-learn mailing list