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.

I'd like to pass several functions at once. Is there a way to make this variadic? The obvious approach (writing "NameOfFunc(alias f...)") fails with a syntax error.

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.

Reply via email to