Denis Koroskin wrote: > On Thu, 15 Oct 2009 18:22:37 +0400, dsimcha <dsim...@yahoo.com> wrote: > >> Jacob Carlborg Wrote: >> >>> On 10/14/09 06:36, dsimcha wrote: >>> > Is there a way to get the name of an alias parameter at compile >>> time? For >>> > example: >>> > >>> > void doStuff() { >>> > // Do stuff. >>> > } >>> > >>> > void templ(alias fun)() { >>> > writeln(fun.stringof); // Prints doStuff. >>> > } >>> >>> Do you want that to print "fun" instead of "doStuff"? >> >> No, the whole point is that I want to print "doStuff". > > What's the big deal? > > import std.stdio; > > void doStuff() { > } > > void templ(alias fun)() { > writeln(fun.stringof); // prints "main()" > } > > void main() > { > templ!(main); > } > > Works for both D1 and D2
I was a bit surprised too since the code dsimcha posted did exactly that. However, change void doStuff() to void doStuff(int a) and you got an error. I remembered hacking around that one, if anybody knows how to do it better it would be good to know: void doStuff(int a) { // Do stuff. } void templ(T...)() if (T.length==1) { writeln( T.stringof[6..$-1] ); } void main() { templ!doStuff(); }