bug? alias this <-> opDispatch interaction
"Luís
"Luís
Sat Nov 9 16:47:31 PST 2013
I'm experimenting with several designs and I think I might have
hit a bug, but I wanted to confirm it. Is this a bug?
class A
{
void opDispatch(string name, T...)(T msg) {}
}
class B : A
{
C obj;
alias obj this;
@disable void opDispatch(string name, T...)(T msg);
}
class C
{
void foo() {}
}
void main()
{
auto b = new B;
b.foo();
}
Output:
Error: no property 'foo' for type 'B'
Disabling the opDispatch that B inherits from A also seems to
disable B's alias this to C. The @disable works well in isolation
-- as does the alias this, of course.
My current workaround:
class B : A
{
C obj;
void opDispatch(string name, T...)(T msg)
{
mixin("obj." ~ name ~ "();");
}
}
(which now makes me wonder what actually are the differences
between those two...)
BTW, I was asking in the IRC channel (I should have discovered
that lovely place earlier!) about the following:
1: T[string] foo;
2: foo[""] = new T;
3: foo[null] = new T;
Lines 2 and 3 seem to do the same, apparently. People seemed to
agree that 3 should not be relied upon (should it?), but if I
recall/understand it was not totally clear to people why 2 and 3
*do* do the same thing, so feel free to clarify.
More information about the Digitalmars-d
mailing list