LINUX.ORG.RU

История изменений

Исправление Siborgium, (текущая версия) :

то чем это лучше исключений?

Оверхед постоянный, но статически известный – в отличие от бесплатного happy path и довольно тормозного и непредсказуемого по цене unhappy path в текущей реализации исключений в С++. Не требуют аллокаций. Заставляют выполнять проверку значения на корректность или явно игнорировать ее.

edit: а, по ссылке еще и исключительно для shared_ptr<optional<T>> – ничем не лучше.

Если требует специального синтаксиса

Не требует. По ссылке используется синтаксис для корутин. Проблема там в другом – использование co_* операторов в функции превращает ее в корутину и накладывает на нее достаточно неприятные ограничения, раздувает код и в целом вносит накладные расходы.

Очень надеюсь на внесение детерминированных исключений в ближайших стандартах С++.

Исправление Siborgium, :

то чем это лучше исключений?

Оверхед постоянный, но статически известный – в отличие от бесплатного happy path и довольно тормозного и непредсказуемого по цене unhappy path в текущей реализации исключений в С++. Не требуют аллокаций. Заставляют выполнять проверку значения на корректность или явно игнорировать ее.

Если требует специального синтаксиса

Не требует. По ссылке используется синтаксис для корутин. Проблема там в другом – использование co_* операторов в функции превращает ее в корутину и накладывает на нее достаточно неприятные ограничения, раздувает код и в целом вносит накладные расходы.

Очень надеюсь на внесение детерминированных исключений в ближайших стандартах С++.

Исходная версия Siborgium, :

то чем это лучше исключений?

Оверхед постоянный, но статически известный – в отличие от бесплатного happy path и довольно тормозного и непредсказуемого по цене unhappy path в текущей реализации исключений в С++. Не требуют аллокаций. Заставляют выполнять проверку значения на корректность или явно игнорировать ее.

Если требует специального синтаксиса

Не требует. По ссылке используется синтаксис для корутин. Проблема там в другом – использование co_* операторов в функции превращает ее в корутину и накладывает на нее достаточно неприятные ограничения, раздувает код и в целом вносит накладные расходы.