operador <comparando campos múltiples

Tengo el siguiente operador <que se supone que debe ordenarse primero por un valor, luego por otro valor:

    inline bool operator < (const obj& a, const obj& b) 
    {
        if(a.field1< b.field1)
            return true;
        else
            return a.field2 < b.field2;
    }

Tengo la sensación de que esto es incorrecto y que no se puede hacer sin otra tercera prueba de comparación en las variables de los miembros, pero no puedo encontrar ningún ejemplo donde esto no funcione. Entonces, ¿de qué se trata esto como se esperaba? Gracias

Edición: lo habría codificado como:

    inline bool operator < (const obj& a, const obj& b) 
    {
        if(a.field1< b.field1)
            return true;
                    else if(a.field1> b.field1)
            return false;
        else
            return a.field2 < b.field2;
    }

¿hay alguna diferencia? Lo pregunto porque sé que el mío es correcto por experiencia, pero también más largo que el primero.