www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How to call other variadic function with the same arguments?

reply Victor Porton <porton narod.ru> writes:
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(...) {
   // ...
}
Feb 24 2019
next sibling parent JN <666total wp.pl> writes:
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);
Feb 24 2019
prev sibling next sibling parent Bastiaan Veelo <Bastiaan Veelo.net> writes:
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.
Feb 24 2019
prev sibling parent Paul Backus <snarwin gmail.com> writes:
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.
Feb 24 2019