How do I the temlate parameter name as string?
Soulsbane
paul at acheronsoft.com
Tue Nov 27 03:00:10 UTC 2018
On Tuesday, 27 November 2018 at 02:00:44 UTC, PacMan wrote:
> ParameterIdentifierTuple from std.traits did work fine for
> regular functions but not for template functions:
>
>> Error: template instance
>> `std.traits.ParameterIdentifierTuple!(f)` does not match
>> template declaration `ParameterIdentifierTuple(func...) if
>> (func.length == 1 && isCallable!func)` (foo)
>
> f is defined as:
>
>> void f(T)(T t, string p)
>> if(is(T == A) || is(T == B))
>>{
>> // ...
>>}
>
> my goal is get "p" as string.
If I'm understanding right I need this quite frequently so I
wrote this:
template nameOf(alias nameType)
{
enum string nameOf = __traits(identifier, nameType);
}
unittest
{
immutable int name;
assert(nameOf!name == "name");
}
More information about the Digitalmars-d-learn
mailing list