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

Reply via email to