РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
451 of 815 menu

Класс expected

Класс expected представляет собой тип-обертку, который может хранить либо значение ожидаемого типа, либо объект ошибки. Он удобен для функций, которые могут завершиться неудачей. Первым параметром шаблона задается тип ожидаемого значения, а вторым - тип ошибки.

Синтаксис

std::expected<T, E> variable;

Пример

Давайте создадим объект expected со значением 42 и проверим его состояние с помощью метода has_value:

#include <iostream> #include <expected> using namespace std; int main() { expected<int, string> res = 42; if (res.has_value()) { cout << "value: " << res.value() << endl; } else { cout << "error: " << res.error() << endl; } return 0; }

Результат выполнения кода:

"value: 42"

Пример

Давайте создадим объект expected с ошибкой "not found" и выведем сообщение об ошибке:

#include <iostream> #include <expected> using namespace std; int main() { expected<int, string> res = unexpected("not found"); if (res.has_value()) { cout << "value: " << res.value() << endl; } else { cout << "error: " << res.error() << endl; } return 0; }

Результат выполнения кода:

"error: not found"

Пример

Давайте воспользуемся методом value_or, который возвращает значение, если оно есть, или заданное значение по умолчанию:

#include <iostream> #include <expected> using namespace std; int main() { expected<int, string> res1 = 42; expected<int, string> res2 = unexpected("not found"); cout << res1.value_or(0) << endl; cout << res2.value_or(0) << endl; return 0; }

Результат выполнения кода:

42 0

Смотрите также

  • метод has_value,
    который проверяет наличие значения
  • метод value,
    который возвращает ожидаемое значение
  • метод error,
    который возвращает объект ошибки
  • метод value_or,
    который возвращает значение или значение по умолчанию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить