Spec-Zone.ru › C++

C++ именованные требования: LessThanComparable

Тип должен работать с оператором < и результат должен иметь стандартную семантику.

Требования

Тип T удовлетворяет LessThanComparable, если

Дано

  • a, b, и c, выражения типа T или const T.

Следующие выражения должны быть допустимы и иметь указанные эффекты.

Выражение Тип результата Требования
a < b неявное преобразование к bool Устанавливает строгое слабое упорядочение с последующими свойствами:
  • Для всех a, !(a < a).
  • Если a < b то !(b < a).
  • Если a < b и b < c то a < c.
  • Определяя equiv(a, b) как !(a < b) && !(b < a), если equiv(a, b) и equiv(b, c), то equiv(a, c).

Примечания

Для удовлетворения этого требования, типы, у которых нет встроенных операторов сравнения, должны предоставить пользовательский operator<.

Для типов, которые являются одновременно EqualityComparable и LessThanComparable, стандарт C++ различает

  • Равенство, которое является значением выражения a == b и
  • Эквивалентность, которое является значением выражения !(a < b) && !(b < a).

См. также

Compare
бинарный предикат, устанавливающий отношение упорядочения
(именованное требование)
strict_weak_order
(C++20)
определяет, что relation накладывает строгое слабое упорядочение
(концепция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/LessThanComparable

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API