Jarrett Billingsley wrote:
On Sun, Apr 26, 2009 at 12:23 PM, Jacob Carlborg <d...@me.com> wrote:
Is it possible to get the name of a function and the names of the function
parameters?
Name of a function? Yes.
public template NameOfFunc(alias f)
{
version(LDC)
const char[] NameOfFunc = (&f).stringof[1 .. $];
else
const char[] NameOfFunc = (&f).stringof[2 .. $];
}
debug
{
private void _foo_(){}
static assert(NameOfFunc!(_foo_) == "_foo_", "Oh noes, NameOfFunc
needs to be updated.");
}
It has to be used at compile time with an alias of course, but it works.
Name of params? No, not that I've found. Sometimes the compiler will
give parameter names of functions declared with tuple parameters in
error messages; I wonder if that could be abused.
Don't you love it? "Most C++ template features are discovered." So are D's.
You can get the name of a local variable from within a scope that
variable is active at compile-time. Pass it as an alias parameter and
then start demangling in there; it's usually towards the end.