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);