So... back in the good-ole days (at least R14 and earlier), it was quite common in my code to have something like...
m_xfPoints[ndx] = m_pPoints[ndx] * mxForm; // transform point by current matrix
In other words, within a loop (increasing the value of 'ndx'), you could transform all points/vertices by some matrix - with a single line of code.
The (R20, but maybe back as far as R15?) API no longer seems to have a built-in "multiply a vector by a matrix" operator, so you end up with more lines of code, to achieve the same thing...
Vector xfPt = m_pPoints[ndx]; // get a copy of the point... xfPt *= mxForm; // use the '*=' operator to modify it... m_xfPoints[ndx] = xfPt; // ...finally, assign it to the transformed array
...note that I had to use a new Vector to store a temporary copy of the original (so I wouldn't modify the original with the '*=' operator).
Of course I could have done it with one less line of code...
m_xfPoints[ndx] = m_pPoints[ndx]; // get original point value... m_xfPoints[ndx] *= mxForm; // use the '*=' operator to modify it.
..but the above is just the most simplistic example... I have other cases where more math is done on the same (single) line of code to the point (scaling, other matrices or vectors involved, etc.), so I more often than not have to add more, separate operations.
So... am I missing something? I'm sure there was some rationale for removing some operators (you can no longer multiply 2 Vectors either... have to use Dot(), can no longer use '%' - must use Cross(), etc.), but/so I'm just wondering what that is.