So it's written this way to deal with the case of 

   MAX(a++, b++)

which I cannot ever imagine us using.  However, the cost is that you are now using more memory and taking a step to assign to another variables.  I'm not sure the safeness is preferred to the efficiency...

Was there a problem in the code that made you using this implementation?