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