diff --git a/include/nlohmann/detail/conversions/from_json.hpp b/include/nlohmann/detail/conversions/from_json.hpp index 27b3feed5..f7dd044b7 100644 --- a/include/nlohmann/detail/conversions/from_json.hpp +++ b/include/nlohmann/detail/conversions/from_json.hpp @@ -59,13 +59,13 @@ void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) } case value_t::null: { - if(std::numeric_limits::has_signaling_NaN) + if (std::numeric_limits::has_signaling_NaN) { val = std::numeric_limits::signaling_NaN(); break; } // LCOV_EXCL_START - else if(std::numeric_limits::has_quiet_NaN) + else if (std::numeric_limits::has_quiet_NaN) { val = std::numeric_limits::quiet_NaN(); break; @@ -366,13 +366,13 @@ void from_json(const BasicJsonType& j, ArithmeticType& val) } case value_t::null: { - if(std::numeric_limits::has_signaling_NaN) + if (std::numeric_limits::has_signaling_NaN) { val = std::numeric_limits::signaling_NaN(); break; } // LCOV_EXCL_START - else if(std::numeric_limits::has_quiet_NaN) + else if (std::numeric_limits::has_quiet_NaN) { val = std::numeric_limits::quiet_NaN(); break; diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp index 5ba4a4bed..2122a2d2d 100644 --- a/single_include/nlohmann/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -3920,8 +3920,23 @@ void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) val = static_cast(*j.template get_ptr()); break; } - case value_t::null: + { + if (std::numeric_limits::has_signaling_NaN) + { + val = std::numeric_limits::signaling_NaN(); + break; + } + // LCOV_EXCL_START + else if (std::numeric_limits::has_quiet_NaN) + { + val = std::numeric_limits::quiet_NaN(); + break; + } + // [[fallthrough]]; + // LCOV_EXCL_STOP + } + case value_t::object: case value_t::array: case value_t::string: @@ -4212,8 +4227,23 @@ void from_json(const BasicJsonType& j, ArithmeticType& val) val = static_cast(*j.template get_ptr()); break; } - case value_t::null: + { + if (std::numeric_limits::has_signaling_NaN) + { + val = std::numeric_limits::signaling_NaN(); + break; + } + // LCOV_EXCL_START + else if (std::numeric_limits::has_quiet_NaN) + { + val = std::numeric_limits::quiet_NaN(); + break; + } + // [[fallthrough]]; + // LCOV_EXCL_STOP + } + case value_t::object: case value_t::array: case value_t::string: