¿Cuál es el punto de (nulo) first2 ++ aquí? [duplicar

Esta pregunta ya tiene una respuesta aquí:

¿Por qué std :: transform y similar emiten el incremento de bucle 'for' a (void)? 2 respuestas

Enest página de en.cppreference hay ejemplos de posible implementación de comparación lexicográfica. Aquí está el básico:

template<class InputIt1, class InputIt2>
bool lexicographical_compare(InputIt1 first1, InputIt1 last1,
                             InputIt2 first2, InputIt2 last2)
{
    for ( ; (first1 != last1) && (first2 != last2); first1++, (void) first2++ ) {
        if (*first1 < *first2) return true;
        if (*first2 < *first1) return false;
    }
    return (first1 == last1) && (first2 != last2);
}

IIRC líneas como(void)some_argument; se usan comúnmente para suprimir las advertencias del compilador sobre los parámetros no utilizados. Pero en esta función, se utilizan todos los parámetros, incluido first2:so cual es el punto de escribir(void) first2++ en la declaración for?

s una solución alternativa de sintaxis en caso de que InputIt1 se sobrecargueoperator,?

Respuestas a la pregunta(1)

Su respuesta a la pregunta