Re: what is equivalent to template template
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); Works. Thanks!
Re: what is equivalent to template template
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);
Re: what is equivalent to template template
On 03.05.2016 23:31, Erik Smith wrote: void myVaridatic(A...)(A a) {} Aside: I think it's "variadic", not "varidatic". static void call(alias F,A...)(F f,A a) { static void call(alias f, A...)(A a) { f(a); } void foo() { call(myVaridatic,1,2,3); call!myVaridatic(1, 2, 3); }
what is equivalent to template template
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); }