`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
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);
}
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
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
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"