> Curiously, in the DMD front-end, that's almost what happens with array > operations. > x[] = a*y[] + c*z[]; > gets translated into: > __somemangledarrayfuncname(x, y, z, a, c); > > and creates: > > __somemangledarrayfuncname(T[] p1, T[] p2, T[] p3, T c1, T c2) > { > for(int p=0; p < p1.length; ++p) { > p1[p] = c1*p2[p] + c2*p3[p]; > } > } >
Wow, I didn't know that. I think such a behaviour is not advertised enough. It's valuable since making a single loop for such things optimizes cache usage and speed up things a lot. In C++ you would have to use a templated library like Eigen to do something, and then your code would become unreadable.