digitalmars.D.learn - Forwarding varadic function arguments
- Nicholas Wilson (11/11) Mar 03 2016 //f is a File*
- =?UTF-8?Q?Ali_=c3=87ehreli?= (19/30) Mar 03 2016 I think so. Also noting that C-style varargs can only work with
- Nicholas Wilson (3/24) Mar 03 2016 The template works great.
//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
Mar 03 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 _argptrI 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
Mar 03 2016
On Friday, 4 March 2016 at 01:13:37 UTC, Ali Çehreli wrote:On 03/03/2016 04:50 PM, Nicholas Wilson wrote:The template works great. Thanks![...]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
Mar 03 2016