On Friday, 20 November 2015 at 14:49:28 UTC, Adam D. Ruppe wrote:
On Friday, 20 November 2015 at 14:01:13 UTC, BBasile wrote:
everything that can be done to avoid the compilations errors
will also prevent "bar" to be written in the output (because a
B will never be analyzed). The "only" fix I see is like in the
stack overflow answer: statically check if the mixin methods
are already there and remix the mixin in each descendant, so
that the getOverloads traits works on the right 'this'.
Did you try using a template this parameter like I said in my
comment?
foreach(idx, overload; __traits(getOverloads, T,
member))
{
auto dg = &(__traits(getOverloads, this_,
member)[idx]);
Yes, using an index and a second call to getOverloads works,
"finally".
No need to remix. Thx. I hadn't understood what you meant on SO.
One last question: is it possible to nest the calls to functions
that take this kind of parameters ?
mixin template Bug()
{
void bug0(this T)(){}
void bug1(this T)(){}
void allbugs(this T)(){this.bug0(); this.bug1();}
}
I've tried different parameters and templates and it never works.