No implicit opOpAssign for structs with basic types?
    Steven Schveighoffer 
    schveiguy at gmail.com
       
    Sat Apr  4 15:47:24 UTC 2020
    
    
  
On 4/4/20 8:14 AM, Robert M. Münch wrote:
> On 2020-04-04 10:32:32 +0000, Ferhat Kurtulmuş said:
> 
>> 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;
>>      }
>> }
> 
> If the struct is from some 3rd party source, how can I add such an 
> operator overloading to it? Is it possible to "extend" a struct later?
> 
No. operators must be implemented by the type itself. That is 
intentional (so types always act the same no matter where you import 
them). The only exception is UFCS, which doesn't cover operator overloading.
However, you can make a wrapper and use alias this.
-Steve
    
    
More information about the Digitalmars-d-learn
mailing list