uninitialized_value // creating of uninitialized value
};
+constexpr inline const char * literal_string(const safe_numerics_error & e){
+ switch(e){
+ case safe_numerics_error::success: return "success";
+ case safe_numerics_error::positive_overflow_error: return "positive_overflow_error";
+ case safe_numerics_error::negative_overflow_error: return "negative_overflow_error";
+ case safe_numerics_error::domain_error: return "domain_error";
+ case safe_numerics_error::range_error: return "range_error";
+ case safe_numerics_error::precision_overflow_error: return "precision_overflow_error";
+ case safe_numerics_error::underflow_error: return "underflow_error";
+ case safe_numerics_error::negative_value_shift: return "negative_value_shift";
+ case safe_numerics_error::negative_shift: return "negative_shift";
+ case safe_numerics_error::shift_too_large: return "shift_too_large";
+ case safe_numerics_error::uninitialized_value: return "uninitialized_value";
+ default:
+ assert(false); // should never arrive here
+ }
+}
+
const std::uint8_t safe_numerics_casting_error_count =
static_cast<std::uint8_t>(safe_numerics_error::domain_error) + 1;
return "underflow error";
case safe_numerics_error::range_error:
return "range error";
+ case safe_numerics_error::precision_overflow_error:
+ return "precision_overflow_error";
case safe_numerics_error::domain_error:
return "domain error";
case safe_numerics_error::negative_shift: