template this and traits getOverloads issue.

BBasile via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Nov 20 07:04:12 PST 2015


On Friday, 20 November 2015 at 14:39:29 UTC, Alex Parrill wrote:
> Alternatively, you can use a static method and pass in the 
> instance.

Initially this solution looked awesome but when `bug()` is 
static, `&dg` returns some functions, not some delegates, which 
is a problem: this implies that I have to find the matching 
delegate type, set `.funcptr` to the value of the `dg` function, 
set `.ptr` to the value of 't'...well not so hard I guess.

But then I have no way to detect when a function is really a 
function or something that might be delegate when instantiated:


{
     auto dg = &overload;
     if (member == "bar")
     writeln(member, " ", typeof(dg).stringof);
}

--> bar void function()
--> bar void function(uint a)


> Note that `new B` will print A's members twice, because A's 
> constructor is always called and `__traits(allMembers, B)` 
> includes A's members.

Not a problem, it was already the case anyway.

But thx much for the attempt.





More information about the Digitalmars-d-learn mailing list