http://d.puremagic.com/issues/show_bug.cgi?id=8062
Summary: UFCS and operator overloading Product: D Version: D2 Platform: x86_64 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: jens.k.muel...@gmx.de --- Comment #0 from jens.k.muel...@gmx.de 2012-05-08 01:08:27 PDT --- According to TDPL (p. 388, Table 12.1) a + b is rewritten to a.opBinary!("+")(b) or b.opBinaryRight!("+")(a) Considering operator overloading together with UFCS leads to the following wrong behavior. struct Foo {} Foo opBinary(string op)(Foo lhs, Foo rhs) if (op == "+") { return Foo.init; } unittest { Foo a, b; a + b; // fails to compile even though it should } If a + b is rewritten to a.opBinary!("+")(b) first, then UFCS should rewrite it further to opBinary!("+")(a,b). But it seems UFCS is not considered. UFCS should be carried out when the operator is being rewritten. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------