I get strange type errors in the following code, and I don't understand why =( Could anybody help?
struct I { int i; I opBinary(string op)(ref I that) if (op == "+") { return I(i + that.i); } } void main() { auto a = I(1); auto d = a + (a + a); } Error: incompatible types for ((a) + (a.opBinary(a))): 'I' and 'I' If I remove ref or parens around (a+a) the code compiles just fine.