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.



Reply via email to