Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
May 15, 2015 UFCS | ||||
---|---|---|---|---|
| ||||
The following gives: "Error: 'a += b' is not a scalar, it is a C" although UFCS should engage. -manfred class C{} int main(){ void opOpAssign( string op)( C a, C b){ } C a, b; a+= b; } |
May 15, 2015 Re: UFCS | ||||
---|---|---|---|---|
| ||||
Posted in reply to Manfred Nowak | On 05/15/2015 11:31 PM, Manfred Nowak wrote: > class C{} > int main(){ > void opOpAssign( string op)( C a, C b){ > } > C a, b; > a+= b; > } https://issues.dlang.org/show_bug.cgi?id=8062 |
May 16, 2015 Re: UFCS | ||||
---|---|---|---|---|
| ||||
Posted in reply to Manfred Nowak | On Friday, May 15, 2015 21:31:35 Manfred Nowak via Digitalmars-d-learn wrote:
> The following gives:
> "Error: 'a += b' is not a scalar, it is a C"
> although UFCS should engage.
>
> -manfred
>
> class C{}
> int main(){
> void opOpAssign( string op)( C a, C b){
> }
> C a, b;
> a+= b;
> }
Overloaded operators have to be defined as part of the type that they're overloading the operator for, and UFCS is only ever used with the . syntax. So, this isn't a bug.
- Jonathan M Davis
|
May 16, 2015 Re: UFCS | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan M Davis | Jonathan M Davis wrote:
> UFCS is only ever used with the . syntax
The docs say so. Thx.
-manfred
|
May 16, 2015 Re: UFCS | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan M Davis | On Saturday, 16 May 2015 at 05:56:26 UTC, Jonathan M Davis wrote:
> On Friday, May 15, 2015 21:31:35 Manfred Nowak via Digitalmars-d-learn wrote:
>> The following gives:
>> "Error: 'a += b' is not a scalar, it is a C"
>> although UFCS should engage.
>>
>> -manfred
>>
>> class C{}
>> int main(){
>> void opOpAssign( string op)( C a, C b){
>> }
>> C a, b;
>> a+= b;
>> }
>
> Overloaded operators have to be defined as part of the type that they're
> overloading the operator for, and UFCS is only ever used with the . syntax.
> So, this isn't a bug.
Besides, UFCS doesn't work with local functions either; `opOpAssign()` would need to be moved out of `main()`.
|
Copyright © 1999-2021 by the D Language Foundation