class Foo { Foo opBinary(string op)(ref Foo) { return null; } } void main() { auto f = new Foo; auto r1 = f * f; // OK auto r2 = f * (new Foo); // Error. } DMD 2.064alpha gives: test.d(9): Error: 'f' is not of arithmetic type, it is a test.Foo test.d(9): Error: 'new Foo' is not of arithmetic type, it is a test.Foo I think that's a bug. Even if that's not a bug, then I suggest to improve the error messages.
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/18598 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB