diff --git a/headers/validation.h b/headers/validation.h index c77d1d12c..d4bfa46ac 100644 --- a/headers/validation.h +++ b/headers/validation.h @@ -596,10 +596,10 @@ class Validator { public: // No copying, no moving. - Validator(const Validator&) = delete; - Validator(Validator&&) = delete; + Validator(const Validator&) = delete; + Validator(Validator&&) = delete; void operator=(const Validator&) = delete; - void operator=(Validator&&) = delete; + void operator=(Validator&&) = delete; // At the end of the scope, check whether the EOF has been reached. // If so, return AC. Otherwise, return WA. @@ -1266,11 +1266,11 @@ class Validator { long long v; auto begin = s.c_str(), end = begin + s.size(); auto [ptr, ec] = std::from_chars(begin, end, v); - if(ec == std::errc::result_out_of_range){ + if(ec == std::errc::result_out_of_range) { WA(name, ": Number " + s + " does not fit in a long long!"); } else if(ptr != end) { WA(name, ": Parsing " + s + " as long long failed! Did not process all characters"); - } else if (ec != std::errc{}) { + } else if(ec != std::errc{}) { WA(name, ": Parsing " + s + " as long long failed!"); } // Check for leading zero. @@ -1291,16 +1291,14 @@ class Validator { assert(!gen); std::string s = get_string("long double"); long double v; - try { - size_t chars_processed; - v = stold(s, &chars_processed); - if(chars_processed != s.size()) - WA(name, ": Parsing ", s, - " as long double failed! Did not process all characters."); - } catch(const std::out_of_range& e) { + auto begin = s.c_str(), end = begin + s.size(); + auto [ptr, ec] = std::from_chars(begin, end, v); + if(ec == std::errc::result_out_of_range) { WA(name, ": Number " + s + " does not fit in a long double!"); - } catch(const std::invalid_argument& e) { - WA("Parsing " + s + " as long double failed!"); + } else if(ptr != end) { + WA(name, ": Parsing " + s + " as long double failed! Did not process all characters"); + } else if(ec != std::errc{}) { + WA(name, ": Parsing " + s + " as long double failed!"); } return v; }