std::optional — это класс-обертка, который может содержать значение или быть пустым. Он используется для обозначения опционального значения.
Основное его применение — возвращать значение из функции, которое может отсутствовать. Например, при поиске элемента в контейнере, если элемент не найден, вместо исключения можно вернуть
std::optional.Также он удобен при работе со значениями, которые могут отсутствовать, например при чтении из базы данных.
По сравнению с указателями
std::optional более выразителен — сразу видно, что значение может отсутствовать. Кроме того, он не имеет проблем с утечками памяти и инициализацией.
