Aliasing current function template instance
Jean-Louis Leroy
jl at leroy.nyc
Fri May 1 20:52:34 UTC 2020
On Friday, 1 May 2020 at 20:43:05 UTC, Steven Schveighoffer wrote:
> On 5/1/20 4:28 PM, Jean-Louis Leroy wrote:
>
>> Something I have overlooked? Any ideas?
>>
>
> This trick works. No idea who came up with it:
>
> alias thisFunction = __traits(parent, {});
>
> -Steve
I think I get the idea. Alas it doesn't work inside a function
template, because it returns the template, not the instance:
void foo(T)(lazy T)
{
alias thisFunction = __traits(parent, {});
pragma(msg, thisFunction.stringof);
//pragma(msg, Parameters!thisFunction); // later
}
void main()
{
foo(0);
foo("");
}
prints:
foo(T)(lazy T)
foo(T)(lazy T)
Uncommenting the line that is (more or less) my real goal:
aliasthisfunction.d(7): Error: template instance
`std.traits.Parameters!(foo)` does not match template declaration
`Parameters(func...)`
with `func = (foo(T)(lazy T))`
must satisfy the following constraint:
` isCallable!func`
More information about the Digitalmars-d-learn
mailing list