Hi, I have the following code.
struct Foo(int DIM) { Foo!(DIM) opBinary(string op) (Foo!(DIM) rhs) if (op == "+" || op == "-") { return Foo!(DIM)(); } } unittest { auto u = Foo!(2)(); auto v = Foo!(2)(); assert(u + v == u); } I got the following during my test. Z:\proj\D\gas>rdmd --main -unittest a.d rdmd --main -unittest a.d a.d(12): Error: incompatible types for ((u) + (v)): 'Foo!(2)' and 'Foo!(2)' Failed: dmd -unittest -v -o- "a.d" -I"." >a.d.deps I have no idea why the incompatible types error occurred.