non-global template fix POC WIP
Jonathan Marler
johnnymarler at gmail.com
Sun Jan 27 18:13:49 UTC 2019
On Saturday, 26 January 2019 at 12:06:48 UTC, Suleyman wrote:
> I think it's ready for use. I would appreciate it if someone
> can break it and produce a test case.
I downloaded your branch and created this example that doesn't
work:
---------------------------------------------------------
import core.stdc.stdio : printf;
struct Adder
{
int base;
// works
uint addBaseCallFunc(alias func)(uint value)
{
return func(base + value);
}
// these 2 don't work
uint willNeedThreeContextPtrs(alias func)(uint value)
{
int localVar = func(value);
uint localFunc(uint subValue) { return localVar +
subValue; }
return addBaseCallFuncs!(func, localFunc)(value);
}
uint addBaseCallFuncs(alias func1, alias func2)(uint value)
{
return func2(func1(base + value));
}
}
void main()
{
auto adder = Adder(3);
int offset = 6;
uint doOffset(uint value) { return offset + value; }
// works
printf("%d\n", adder.addBaseCallFunc!doOffset(4));
// need 3 context pointers (doesn't work)
printf("%d\n", adder.willNeedThreeContextPtrs!doOffset(4));
}
More information about the Digitalmars-d
mailing list