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

operator==(std::expected)

Материал из cppreference.com
< cpp‎ | utility‎ | expected
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (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++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
std::expected
Функции-элементы
Наблюдатели
Монадические операции
Модификаторы
Функции, не являющиеся элементами
operator==
Вспомогательные классы
 
template< class T2, class E2 >

  requires (!std::is_void_v<T2>)
friend constexpr bool operator==( const expected& lhs,

                                  const std::expected<T2, E2>& rhs );
(1) (начиная с C++23)
(T не является cv void)
template< class T2, class E2 >

  requires std::is_void_v<T2>
friend constexpr bool operator==( const expected& lhs,

                                  const std::expected<T2, E2>& rhs );
(2) (начиная с C++23)
(T является cv void)
template< class T2 >
friend constexpr bool operator==( const expected& x, const T2& val );
(3) (начиная с C++23)
(T не является cv void)
template< class E2 >

friend constexpr bool operator==( const expected& x,

                                  const unexpected<E2>& e );
(4) (начиная с C++23)

Выполняет операции сравнения над объектами expected.

1,2) Сравнивает два объекта expected. Объекты при сравнении равны тогда и только тогда, когда lhs.has_value() и rhs.has_value() равны, и содержащиеся значения равны.
  • Для перегрузки (1), если выражения *lhs == *rhs и lhs.error() == rhs.error() некорректны, или если их результаты не преобразуются в bool, программа некорректна.
  • Для перегрузки (2), если выражения lhs.error() == rhs.error() некорректны или если их результат не может быть преобразован в bool, программа некорректна.
3) Сравнивает объект expected со значением. Объекты при сравнении равны тогда и только тогда, когда x содержит ожидаемое значение, а содержащееся значение равно val.
  • Если выражение *x == val некорректно или если его результат не может быть преобразован в bool, программа некорректна.
4) Сравнивает объект expected с неожидаемым значением. Объекты при сравнении равны тогда и только тогда, когда x содержит неожидаемое значение, а содержащееся значение равно e.error().
  • Если выражение x.error() == e.error() некорректно или если его результат не может быть преобразован в bool, программа некорректна.

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

Оператор != синтезируется из operator==.

Содержание

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

lhs, rhs, x объект expected для сравнения
val значение для сравнения с ожидаемым значением, содержащимся в x
e значение для сравнения с неожидаемым значением, содержащимся в x

[править] Возвращаемое значение

1) Если lhs.has_value() != rhs.has_value(), возвращает false. Иначе, если lhs.has_value() равно true, возвращает *lhs == *rhs. Иначе возвращает lhs.error() == rhs.error().
2) Если lhs.has_value() != rhs.has_value(), возвращает false. Иначе если lhs.has_value() равно true, возвращает true. Иначе возвращает lhs.error() ==  rhs.error().
3) Возвращает x.has_value() && static_cast<bool>(*x == val).
4) Возвращает !x.has_value() && static_cast<bool>(x.error() == e.error()).

[править] Исключения

Генерирует исключение при сравнении

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

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

представлен как неожидаемое значение
(шаблон класса) [править]