operator <porównywanie wielu pól

Mam następujący operator <, który ma najpierw sortować według wartości, a następnie inną wartość:

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

Mam przeczucie, że jest to nieprawidłowe i że nie można tego zrobić bez kolejnego trzeciego testu porównawczego zmiennych zmiennych, ale nie mogę znaleźć żadnego przykładu, w którym to nie działa. Więc czy to naprawdę sortuje zgodnie z oczekiwaniami? dzięki

edytuj: kodowałbym to jako:

    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;
    }

czy są jakieś różnice? Pytam, ponieważ wiem, że mój jest poprawny z doświadczenia, ale także dłuższy niż pierwszy