Пространства имён
Варианты
Действия

std::weak_ordering

Материал из cppreference.com
< cpp‎ | utility
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм(C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
weak_ordering
(C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования(C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Определено в заголовочном файле <compare>
class weak_ordering;
(начиная с C++20)

Классовый тип std::weak_ordering является типом результата трёхстороннего сравнения, который:

  • Допускает все шесть операторов отношения (==, !=, <, <=, >, >=)
  • Не подразумевает заменяемости: если a эквивалентно b, f(a) может не быть эквивалентно f(b), где f обозначает функцию, которая считывает только существенное для сравнения состояние, доступное через общедоступные константные элементы аргумента. Другими словами, эквивалентные значения могут быть различимы.
  • Не допускает несравнимых значений: ровно одно из a < b, a == b или a > b должно быть true.

Содержание

[править]Константы

Тип std::weak_ordering имеет три допустимых значения, реализованных как константные статические элементы данных своего типа:

Константа элемент Определение
less(inline constexpr)
[static]
допустимое значение типа std::weak_ordering, указывающее отношение меньше чем (упорядоченное раньше)
(public static константа-элемент)
equivalent(inline constexpr)
[static]
допустимое значение типа std::weak_ordering, указывающее на эквивалентность (не упорядоченное до и не упорядоченное после)
(public static константа-элемент)
greater(inline constexpr)
[static]
допустимое значение типа std::weak_ordering, указывающее отношение больше чем (в порядке после)
(public static константа-элемент)

[править]Преобразования

std::weak_ordering неявно преобразуется в std::partial_ordering, а std::strong_ordering неявно преобразуется в weak_ordering.

operator partial_ordering
неявное преобразование в std::partial_ordering
(public функция-элемент)

std::weak_ordering::operator partial_ordering

constexpr operator partial_ordering()constnoexcept;

Возвращаемое значение

std::partial_ordering::less, если v равно less, std::partial_ordering::greater, если v равно greater, std::partial_ordering::equivalent, если v равно equivalent.

[править]Сравнения

Операторы сравнения определены между значениями этого типа и литералом 0. Это поддерживает выражения a <=> b ==0 или a <=> b <0, которые можно использовать для преобразования результата оператора трёхстороннего сравнения в логические отношения; смотрите std::is_eq, std::is_lt и т.д.

Эти функции не видны обычному неквалифицированному или квалифицированному поиску и могут быть найдены только с помощью зависящего от аргумента поиска, когда std::weak_ordering является ассоциированным классом аргументом.

Поведение программы, пытающейся сравнить weak_ordering с чем-либо, кроме целочисленного литерала 0 не определено.

operator==operator<operator>operator<=operator>=operator<=>
сравнивается с нулём или weak_ordering
(функция)

operator==

friendconstexprbool operator==(weak_ordering v, /*не указано*/ u)noexcept;
(1)
friendconstexprbool operator==(weak_ordering v, weak_ordering w)noexcept=default;
(2)

Параметры

v, w std::weak_ordering значения для проверки
u неиспользуемый параметр любого типа, который принимает литеральный нулевой аргумент

Возвращаемое значение

1)true, если v равно equivalent, false, если v равно less или greater
2)true, если оба параметра имеют одинаковое значение, false иначе

operator<

friendconstexprbool operator<(weak_ordering v, /*не указано*/ u)noexcept;
(1)
friendconstexprbool operator<(/*не указано*/ u, weak_ordering v)noexcept;
(2)

Параметры

v std::weak_ordering значения для проверки
u неиспользуемый параметр любого типа, который принимает литеральный нулевой аргумент

Возвращаемое значение

1)true, если v равно less, и false, если v равно greater или equivalent
2)true, если v равно greater, и false, если v равно less или equivalent

operator<=

friendconstexprbool operator<=(weak_ordering v, /*не указано*/ u)noexcept;
(1)
friendconstexprbool operator<=(/*не указано*/ u, weak_ordering v)noexcept;
(2)

Параметры

v std::weak_ordering значения для проверки
u неиспользуемый параметр любого типа, который принимает литеральный нулевой аргумент

Возвращаемое значение

1)true, если v равно less или equivalent, и false, если v равно greater
2)true, если v равно greater или equivalent, и false, если v равно less

operator>

friendconstexprbool operator>(weak_ordering v, /*не указано*/ u)noexcept;
(1)
friendconstexprbool operator>(/*не указано*/ u, weak_ordering v)noexcept;
(2)

Параметры

v std::weak_ordering значения для проверки
u неиспользуемый параметр любого типа, который принимает литеральный нулевой аргумент

Возвращаемое значение

1)true, если v равно greater, и false, если v равно less или equivalent
2)true, если v равно less, и false, если v равно greater или equivalent

operator>=

friendconstexprbool operator>=(weak_ordering v, /*не указано*/ u)noexcept;
(1)
friendconstexprbool operator>=(/*не указано*/ u, weak_ordering v)noexcept;
(2)

Параметры

v std::weak_ordering значения для проверки
u неиспользуемый параметр любого типа, который принимает литеральный нулевой аргумент

Возвращаемое значение

1)true, если v равно greater или equivalent, и false, если v равно less
2)true, если v равно less или equivalent, и false, если v равно greater

operator<=>

friendconstexpr weak_ordering operator<=>(weak_ordering v, /*не указано*/ u)noexcept;
(1)
friendconstexpr weak_ordering operator<=>(/*не указано*/ u, weak_ordering v)noexcept;
(2)

Параметры

v std::weak_ordering значения для проверки
u неиспользуемый параметр любого типа, который принимает литеральный нулевой аргумент

Возвращаемое значение

1)v.
2)greater, если v равно less, less, если v равно greater, иначе v.

[править]Пример

[править]Смотрите также

тип результата трёхстороннего сравнения, который поддерживает все 6 операторов и может быть взаимозаменяемым
(класс)[править]
тип результата трёхстороннего сравнения, который поддерживает все 6 операторов, невзаимозаменяемый и допускает несравнимые значения
(класс)[править]
close