java sslcontext.init с нулевым менеджером ключей

Вот версия, которая опирается на логическое правило короткого замыкания, чтобы избежать явного ветвления

template
bool operator< (T const& a, T const& b)
{
        return (
                 ( a.field1 < b.field1 ) || (( a.field1 == b.field1 ) &&
                 ( a.field2 < b.field2 ))
        );
}

. Это предполагает, что ваш примитивный тип field1 имеет operator==. Это утомительно вводить это для более чем двух полей, но вы можете использовать std::lexicographical_compare, если ваш класс obj сохраняет поля внутри std::array для некоторого типа T и размера N

template
struct obj
{
    std::array field;
};

bool operator< (obj const& a, T const& b)
{
        return std::lexicographical_compare(
            a.field.begin(), a.field.end(), 
            b.field.begin(), b.field.end()
        );
}

Обратите внимание, что есть проект документа N3326 , который обсуждает автоматически добавление операторов == и < для типов классов.

1
задан ItsPete 27 February 2019 в 05:00
поделиться