operador <comparando vários campos

Eu tenho o seguinte operador <que é suposto classificar primeiro por um valor e, em seguida, por outro valor:

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

Eu tenho a sensação de que isso é incorreto e que você não pode fazer isso sem outro terceiro teste de comparação nas variáveis ​​de membros, mas não consigo encontrar nenhum exemplo onde isso não funcione. Então, se isso realmente classificar como esperado? obrigado

edit: eu teria 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;
    }

Existem diferenças? Estou perguntando porque sei que o meu é correto por experiência, mas também mais longo do que o primeiro

questionAnswers(5)

yourAnswerToTheQuestion