Re: Get function argument name?

2018-03-04 Thread Timothee Cour via Digitalmars-d-learn
`printName(alias var)()` is not a great solution, eg: doesn't work with expressions, doesn't work with variadics, introduces template bloat. https://github.com/dlang/dmd/pull/7821 introduces __traits(getCallerSource, symbol) which will allow what you want. On Sun, Mar 4, 2018 at 1:53 PM, bauss

Re: Get function argument name?

2018-03-04 Thread bauss via Digitalmars-d-learn
On Sunday, 4 March 2018 at 21:48:53 UTC, JN wrote: On Sunday, 4 March 2018 at 21:12:44 UTC, arturg wrote: you can pass it by alias: import std.stdio; void main(string[] args) { int x; printName!(x); } void printName(alias var)() { writeln(__traits(identifier, var), " ", var); }

Re: Get function argument name?

2018-03-04 Thread JN via Digitalmars-d-learn
On Sunday, 4 March 2018 at 21:12:44 UTC, arturg wrote: you can pass it by alias: import std.stdio; void main(string[] args) { int x; printName!(x); } void printName(alias var)() { writeln(__traits(identifier, var), " ", var); } Well, it works. But I am confused now, why. Isn't

Re: Get function argument name?

2018-03-04 Thread arturg via Digitalmars-d-learn
On Sunday, 4 March 2018 at 21:03:04 UTC, JN wrote: Imagine a function like this: void printValue(T)(string name, T value) { writeln(name, " = ", value); } int x = 10; printValue("x", x); is it somehow possible to convert that printValue into a mixin or something, so I could do something

Get function argument name?

2018-03-04 Thread JN via Digitalmars-d-learn
Imagine a function like this: void printValue(T)(string name, T value) { writeln(name, " = ", value); } int x = 10; printValue("x", x); is it somehow possible to convert that printValue into a mixin or something, so I could do something like: printValue(x); and it will figure out the "x"