>> It is indeed capable of doing that :) But it only does it if you force >> it to (e.g. via enum z). With auto it will perform 2 opBinaryRight calls >> at runtime. > > Even when you compile with -O? Yep. It doesn't even seem to optimize away an unused variable: void main() { auto z = 5.0 + 3*I; } Or I've done something wrong.