История изменений
Исправление Siborgium, (текущая версия) :
то чем это лучше исключений?
Оверхед постоянный, но статически известный – в отличие от бесплатного happy path и довольно тормозного и непредсказуемого по цене unhappy path в текущей реализации исключений в С++. Не требуют аллокаций. Заставляют выполнять проверку значения на корректность или явно игнорировать ее.
edit: а, по ссылке еще и исключительно для shared_ptr<optional<T>>
– ничем не лучше.
Если требует специального синтаксиса
Не требует. По ссылке используется синтаксис для корутин. Проблема там в другом – использование co_* операторов в функции превращает ее в корутину и накладывает на нее достаточно неприятные ограничения, раздувает код и в целом вносит накладные расходы.
Очень надеюсь на внесение детерминированных исключений в ближайших стандартах С++.
Исправление Siborgium, :
то чем это лучше исключений?
Оверхед постоянный, но статически известный – в отличие от бесплатного happy path и довольно тормозного и непредсказуемого по цене unhappy path в текущей реализации исключений в С++. Не требуют аллокаций. Заставляют выполнять проверку значения на корректность или явно игнорировать ее.
Если требует специального синтаксиса
Не требует. По ссылке используется синтаксис для корутин. Проблема там в другом – использование co_* операторов в функции превращает ее в корутину и накладывает на нее достаточно неприятные ограничения, раздувает код и в целом вносит накладные расходы.
Очень надеюсь на внесение детерминированных исключений в ближайших стандартах С++.
Исходная версия Siborgium, :
то чем это лучше исключений?
Оверхед постоянный, но статически известный – в отличие от бесплатного happy path и довольно тормозного и непредсказуемого по цене unhappy path в текущей реализации исключений в С++. Не требуют аллокаций. Заставляют выполнять проверку значения на корректность или явно игнорировать ее.
Если требует специального синтаксиса
Не требует. По ссылке используется синтаксис для корутин. Проблема там в другом – использование co_* операторов в функции превращает ее в корутину и накладывает на нее достаточно неприятные ограничения, раздувает код и в целом вносит накладные расходы.