Note the use of the vec() instead of just vec now. The operator() overloads to return a reference to VectorT from the expression. (This is called the Barton-Nackman trick). I believe you could do the following to make the code a little cleaner if you have lots of operations: