Sorry, I sent the message prematurely :( Anyway, here's complete:
Is there a way to make compound assignment operators (-=, +=, *= and
friends) work with D's operator overload regime? I can't make them work.
struct Foo
{
this( int bar ) {
bar = bar;
}
Foo opBinary(string op)( in typeof(this) rhv )
if( op == "+=" )
{
_bar += rhv._bar;
return this;
}
private int _bar;
}
void main()
{
auto f1 = Foo(1);
auto f2 = Foo(2);
f2 += f1;
I get the following compiler error:
Error: 'f1' is not a scalar, it is a Foo
Error: 'f1' is not of arithmetic type, it is a Foo
Error: 'f2' is not of arithmetic type, it is a Foo
Is there a way to make this work? Even changing the operator string in
opBinary to "-" doesn't do nothing. Or those kind of operators can't be
overloaded?
--
Yao G.