оператор <сравнение нескольких полей

У меня есть следующий оператор & lt; который должен сортировать сначала по значению, а затем по другому значению:

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

У меня такое чувство, что это неправильно, и что вы не можете сделать это без другого третьего теста сравнения переменных членов, но я не могу найти ни одного примера, где это не работает. Так что же это на самом деле, как ожидалось? Спасибо

редактировать : Я бы закодировал это как:

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

есть ли различия? Я спрашиваю, потому что я знаю, что это правильно из опыта, но также дольше, чем первый

Ответы на вопрос(5)

Ваш ответ на вопрос