Proxy addition
Dan
dbdavidson at yahoo.com
Fri Oct 26 08:14:55 PDT 2012
On Thursday, 25 October 2012 at 16:39:57 UTC, Dan wrote:
> From bug tracker I see that Proxy has a few issues, so this has
> likely been seen. But what would cause this error?
>
> tmp/c.d(16): Error: overloads pure nothrow @safe double(auto
> ref CcRate b) and pure nothrow @safe double(auto ref CcRate b)
> both match argument list for opBinary
>
> The error refers to two methods with the same signature. In
> typecons there are only two "Binary" methods, opBinary and
> opBinaryRight, both in Proxy, so where is the
> duplication/conflict coming from?
>
> Thanks
> Dan
> ---------------
> import std.stdio;
> import std.typecons;
> import std.algorithm;
>
> struct CcRate {
> private double rate = 0;
> mixin Proxy!rate;
>
> this(double rate) {
> this.rate = rate;
> }
> }
>
> unittest {
> CcRate r1 = 0.033, r2 = 0.002;
> writeln(r1+r2); // compile error
> }
> ---------------
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"); }
-----
More information about the Digitalmars-d-learn
mailing list