Thread overview
How to call other variadic function with the same arguments?
Feb 24, 2019
Victor Porton
Feb 24, 2019
JN
Feb 24, 2019
Bastiaan Veelo
Feb 25, 2019
Paul Backus
February 24, 2019
Let f be a variadic function:

Result f(...);

How to implement variadic function g which calls f with the same arguments as one it receives?

Result g(...) {
  // ...
}
February 24, 2019
On Sunday, 24 February 2019 at 13:09:15 UTC, Victor Porton wrote:
> Let f be a variadic function:
>
> Result f(...);
>
> How to implement variadic function g which calls f with the same arguments as one it receives?
>
> Result g(...) {
>   // ...
> }

void f(A...)(A a)
{
    foreach(t; a)
        writeln(t);
}

void g(A...)(A a)
{
    f(a);
}

g(1, 2, 3);
February 24, 2019
On Sunday, 24 February 2019 at 13:09:15 UTC, Victor Porton wrote:
> Let f be a variadic function:
>
> Result f(...);
>
> How to implement variadic function g which calls f with the same arguments as one it receives?
>
> Result g(...) {
>   // ...
> }

I don’t know if you can, but if at least g is a variadic template function, you can:
https://run.dlang.io/is/fhxZuV

Bastiaan.
February 25, 2019
On Sunday, 24 February 2019 at 13:09:15 UTC, Victor Porton wrote:
> Let f be a variadic function:
>
> Result f(...);
>
> How to implement variadic function g which calls f with the same arguments as one it receives?
>
> Result g(...) {
>   // ...
> }

If you must use C-style variadic arguments, then your only choice is to do it the same way you would in C: write a version of `g` that accepts a va_list (like vprintf(3)), and have `f` call that.