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

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

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

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

17
задан TemplateRex 3 July 2012 в 14:44
поделиться