Все самое полезное для плюсовика и сишника в одном канале.
Как запустить своего ии-агента: https://clc.to/tvpmDQ
По рекламе: @proglib_adv
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
#WXSSA
Post #6518
3.08K
🍬 std::expected<T,E>: почему это не просто «optional с ошибкой»
C++23 принёс
✏️ Структурная разница
С его помощью можно вернуть код ошибки
❗️Под капотом
💡 Когда выбирать expected
Если caller должен знать причину —
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом
C++23 принёс
std::expected. Это не обёртка над optional — это принципиально другая семантика, которую важно понять сразу.✏️ Структурная разница
std::optional<T> // возвращает «значение или ничего»
std::expected<T,E> // возвращает «значение или причина отсутствия»
С его помощью можно вернуть код ошибки
expected<int, ErrorCode> parse(string s); // Пустой optional говорит «нет». Expected говорит «нет, потому что...»
❗️Под капотом
expected<T,E> — это discriminated union из T и E с флагом. Размер: max(sizeof(T), sizeof(E)) + 1 байт на флаг. Аналогично variant<T, unexpected<E>>.💡 Когда выбирать expected
Если caller должен знать причину —
expected. Если причина не важна — optional. Если ошибка аномальна и не должна обрабатываться в каждой точке — исключение. Это три разных инструмента для трёх разных ситуаций.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом
- 👍 8
- ❤ 2







