Как вы отменяете strong_ordering? - PullRequest
8 голосов
/ 06 февраля 2020

Есть ли более простой способ добиться эффекта этой функции?

strong_ordering reverse(strong_ordering v) {
    if (v > 0)
        return strong_ordering::less;
    else if (v < 0)
        return strong_ordering::greater;
    else
        return v;
}

1 Ответ

9 голосов
/ 06 февраля 2020

Да:

strong_ordering reverse(strong_ordering v)
{
    return 0 <=> v;
}

Что буквально указано как то, что вы хотите :

Возвращает : v < 0 ? strong_­ordering​::​greater : v > 0 ? strong_­ordering​::​less : v.

Это следует общему принципу, что x <=> y и y <=> x являются противоположностями, а v <=> 0 - это просто операция идентификации для v.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...