digitalmars.D.learn - how to pass multiple arguments via a mixin
- Timothee Cour (16/16) Oct 15 2013 is there a general solution to pass multiple arguments to a function via...
- Dicebot (7/8) Oct 15 2013 Have you tried run-time tuple?
- Timothee Cour (13/21) Oct 15 2013 doesn't work with ref args:
is there a general solution to pass multiple arguments to a function via a mixin? see below for a partial solution using Alias, which fails for the last case below: void main(){ import std.stdio; string a="A"; string b="B"; writeln(a,b);// OK (prints "AB") writeln(&a,&b);//OK (prints both addresses) writeln(mixin(`a,b`));//prints "B" import std.typetuple; writeln(mixin(`Alias!(a,b)`));//OK:prints "AB" //writeln(mixin(`Alias!(&a,&b)`));//CT Error: expression & a is not a valid template value argument }
Oct 15 2013
On Wednesday, 16 October 2013 at 00:36:46 UTC, Timothee Cour wrote:...Have you tried run-time tuple? ``` import std.typecons; writeln(mixin("tuple(&a,&b).expand")); ```
Oct 15 2013
doesn't work with ref args: void fun(ref int a,ref int b){ a=1; } void main(){ int a,b; import std.typecons; fun(mixin("tuple(a,b).expand")); assert(a==1);//fails } and we can't do a logic such as: if there's ref args use Alias, otherwise use tuple().expand because there could be a mix of the two On Tue, Oct 15, 2013 at 5:56 PM, Dicebot <public dicebot.lv> wrote:On Wednesday, 16 October 2013 at 00:36:46 UTC, Timothee Cour wrote:...Have you tried run-time tuple? ``` import std.typecons; writeln(mixin("tuple(&a,&b).**expand")); ```
Oct 15 2013