It just ensures that the sequencing operator (aka comma operator) that is used is the built-in sequencing operator.
It takes care of the edge-case that some user defined type which has overloaded operator, might be involved.
Is that a special syntax, or is it just the result of ++first2 being cast to void? I didn't know it was possible to force the compiler to not use an overloaded operator.
> Is that a special syntax, or is it just the result of ++first2 being cast to void?
Just the result of ++first2 being cast to void.
(We just can't define a user-defined overloaded binary operator where one of the operands is of type void)