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.