On Monday, 14 October 2013 at 10:45:26 UTC, Maurice wrote:
On Monday, 14 October 2013 at 09:32:15 UTC, Maxim Fomin wrote:
On Monday, 14 October 2013 at 09:17:12 UTC, John Colvin wrote:
Everything is working fine except for the error on [2] when
xxx == true, which I think is a bug.
minimised test:
struct A
{
void opAssign(A a) {}
}
struct B {
A a;
alias a this;
}
void main() {
A a;
B b;
b = a;
}
Error: function assign.B.opAssign (B p) is not callable using
argument types (A)
This does not work (and need not) because compiler generates
default function B.opAssign(B) which is really not callable
using argument types (A).
Then why does it work when replacing "opAssign(A a)" with
"opAssign(int)"?
struct A {
void opAssign(int) {}
}
struct B {
A a;
alias a this;
}
void main() {
A a;
B b;
b = a; // This now compiles fine...
}
Or when just not defining any opAssign: struct A {}, that also
works. I don't get how adding a opAssign(A) disables 'b = a'.