Is there an alternative to "__FUNCTION__" that gives the actual function symbol and not the name as a string?

Simon simon.vanbernem at yahoo.de
Sat Oct 23 18:56:48 UTC 2021


On Saturday, 23 October 2021 at 18:36:27 UTC, Tim wrote:
> On Saturday, 23 October 2021 at 18:23:47 UTC, Simon wrote:
>> So what I am looking for then is the equivalent to 
>> __FUNCTION__ that evaluates to the actual symbol of the 
>> function instead of its name, so it can be used as a parameter 
>> to ParameterIdentifierTuple.
>
> You could use the following:
>
> alias F = __traits(parent, {});
>
> The lambda {} is a symbol inside the function. F will be its 
> parent, which is the function itself.

So before I had OUTPUT_REPRO_CASE defined like this:

enum OUTPUT_REPRO_CASE(alias func) = "build the actual code stuff 
with"~fullyQualifiedName!func~" and so on";

And I tried to use your suggestion like this:

enum OUTPUT_REPRO_CASE(alias func = __traits(parent, {})) = 
"build the actual code stuff with"~fullyQualifiedName!func~" and 
so on";

Which doesn't work. In that case func seems to become the parent 
namespace. If I substitute fullyQualifiedName!func with 
fullyQualifiedName!(__traits(parent, {}))) I get a circular 
dependecy error.

How do I have to use this exactly?





More information about the Digitalmars-d-learn mailing list