Forwarding varadic function arguments
Ali Çehreli via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Mar 3 17:13:37 PST 2016
On 03/03/2016 04:50 PM, Nicholas Wilson wrote:
> //f is a File*
> void fwrite(int line = __LINE__)(...)
> {
> f.write("/*",line,"*/ ");
> f.write(_argptr); //prints e.g 7FFF5B055440
> }
> basically i want
> fwrite("1 ","2\t","3\n");
> to print
> /*7*/ 1 2 3
>
> do I have to iterate through _argptr
I think so. Also noting that C-style varargs can only work with
fundamental types (Am I correct there? I am carrying this assumption
from C++.), you may be happier with a template-parameter solution:
import std.stdio;
File f;
static this() {
f = File("hello_world.txt", "w");
}
//f is a File*
void fwrite(int line = __LINE__, Args...)(Args args)
{
f.write("/*",line,"*/ ");
f.write(args);
}
void main() {
fwrite("1 ","2\t","3\n");
}
Ali
More information about the Digitalmars-d-learn
mailing list