No implicit opOpAssign for structs with basic types?

Ferhat Kurtulmuş aferust at gmail.com
Sat Apr 4 10:32:32 UTC 2020


On Saturday, 4 April 2020 at 10:22:29 UTC, Robert M. Münch wrote:
> D doesn't have implicit operators for structs?
>
> struct S {float a, float b};
> S a = {1, 5};
> S b = {2, 5);
>
> a += b;
> Error: a is not a scalar, it is a S
>
> So I really have to write an overloaded operator for such cases?

Probably I didn't understand what you mean. Sorry if this is not 
the case, but this one is easy.
...
struct S {
     float a;
     float b;

     S opOpAssign(string op)(ref S rhs) if (op == "+"){
         this.a += rhs.a;
         this.b += rhs.b;
         return this;
     }
}


void main()
{
     S a = {1, 5};
     S b = {2, 5};

     a += b;

     writeln(a);
}
...


More information about the Digitalmars-d-learn mailing list