Proxy addition

cal callumenator at gmail.com
Fri Oct 26 15:32:16 PDT 2012


On Friday, 26 October 2012 at 15:14:56 UTC, Dan wrote:
> Still trying to understand this. I found that if I change the 
> following in Proxy it this example (r1 + r2) works fine. Plus 
> the unit tests that are there still work. But, honestly I don't 
> understand why...yet.
>
> Thanks,
> Dan
>
> ----- From typecons.Proxy -----
>     auto ref opBinary     (string op, this X, B)(auto ref B b) 
> { return mixin("a "~op~" b"); }
> ----- To -----
>     auto ref opBinary     (string op, this X, B)(auto ref B b) 
> if(!is(X == B)) { return mixin("a "~op~" b"); }
> -----

 From http://dlang.org/operatoroverloading.html, it is an error 
for both overloads of opBinary (opBinary and opBinaryRight) to 
match. Since the signatures for the two overloads in std.typecons 
are identical, this looks like a bug to me.

Your modified version works (far as I can see) because it 
excludes one of the overloads from being matched, allowing the 
other to be used (opBinaryRight).


More information about the Digitalmars-d-learn mailing list