Нужна помощь в понимании Синтезированное трехстороннее сравнениеC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Нужна помощь в понимании Синтезированное трехстороннее сравнение

Сообщение Anonymous »

Может ли кто-нибудь помочь мне понять эту часть cppreference?
https://en.cppreference.com/w/cpp/langu ... isons.html

Синтезированное трехстороннее сравнение
синтезированное трехстороннее сравнение типа T между glvalues a и b одного и того же типа определяется следующим образом:
  • Если разрешение перегрузки для a b приводит к пригодному к использованию кандидату и может быть явно преобразовано в T с помощью static_cast, синтезированное сравнение — static_cast(a b).
  • В противном случае, если выполняется любое из следующих условий, синтезированное сравнение не определяется:

    Разрешение перегрузки для b находится в хотя бы один жизнеспособный кандидат.
  • не является типом категории сравнения.
  • Разрешение перегрузки для a == b не приводит к созданию пригодного к использованию кандидата.
  • Разрешение перегрузки для < b не приводит к созданию пригодного к использованию кандидата.
[*]Иначе, если T — это std::strong_ordering, синтезированное сравнение —

Код: Выделить всё

    a == b ? std::strong_ordering::equal :
a < b  ? std::strong_ordering::less :
std::strong_ordering::greater
  • Иначе, если T равно std::weak_ordering, синтезированное сравнение будет

Код: Выделить всё

    a == b ? std::weak_ordering::equivalent :
a < b  ? std::weak_ordering::less :
std::weak_ordering::greater
  • Иначе ( — это std::partial_ordering), синтезированное сравнение —

Код: Выделить всё

    a == b ? std::partial_ordering::equivalent :
a < b  ? std::partial_ordering::less :
b < a  ? std::partial_ordering::greater :
std::partial_ordering::unordered
Я понятия не имею, что именно подразумевается под синтезированным, означает ли это, что компилятор предоставляет трехсторонний оператор сравнения, даже если он не используется по умолчанию?
Кроме того, я не понимаю, как жизнеспособный кандидат на разрешение перегрузки одновременно предотвращает и разрешает использование синтезированного оператора космического корабля.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... comparison
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»