Я стараюсь следовать основным рекомендациям Cpp и использовать GSL там, где это уместно. В частности, я хотел бы использовать Expects
и Ensures
для предварительных и постусловий, а также span
и narrow_cast
, но обработка ошибок ненадежна и не обеспечивает никакой диагностики. При обнаружении ошибок GSL просто вызывает terminate
, не оставляя тестеру никаких сведений о том, что вызвало завершение работы.
Итак, мой вопрос: как использовать GSL и поддерживать надежность кода при наличии ошибок? Или, проще говоря, как использовать GSL и получить диагностику ошибок перед завершением?
gsl::narrow_cast
не должно быть в этом списке, так как это просто оболочка вокругstatic_cast
и не завершается/выбрасывается.gsl::narrow
проверяет наличие потери информации, но всегда должен выбрасывать и не завершать работу в соответствии с основными рекомендациями C++. - person Paul G.   schedule 15.06.2021