generic vec type generation macro