By moving members of the OpArg struct around, we can cut down on how much padding the struct needs. Now it has a size of 16 bytes, small enough for function calls to pass it in two registers instead of on the stack.
std::copy
std::copy_n