From e5d2b95a1b22cfba243f48094c684f5ff588fd32 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Wed, 5 Feb 2025 18:16:15 +0100 Subject: [PATCH] fix: `std::isnan` compilation fixed for freestanding and C++20 --- test/static/limits_test.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/static/limits_test.cpp b/test/static/limits_test.cpp index 240487082..7338fab32 100644 --- a/test/static/limits_test.cpp +++ b/test/static/limits_test.cpp @@ -26,6 +26,9 @@ import std; #else #include +#if MP_UNITS_HOSTED +#include +#endif // MP_UNITS_HOSTED #endif namespace { @@ -94,12 +97,16 @@ static_assert(std::numeric_limits::infinity().numerical_value_in(mp_un static_assert(std::numeric_limits::infinity().numerical_value_in(mp_units::si::metre) == std::numeric_limits::infinity()); +#if MP_UNITS_HOSTED && (__cpp_lib_constexpr_cmath || MP_UNITS_COMP_GCC) + // quiet_NaN static_assert(std::isnan(std::numeric_limits::quiet_NaN().numerical_value_in(mp_units::si::metre))); // signaling_NaN static_assert(std::isnan(std::numeric_limits::signaling_NaN().numerical_value_in(mp_units::si::metre))); +#endif + // denorm_min static_assert(std::numeric_limits::denorm_min().numerical_value_in(mp_units::si::metre) == std::numeric_limits::denorm_min()); @@ -171,6 +178,8 @@ static_assert(std::numeric_limits::infinity().quantity_from_zero().nu static_assert(std::numeric_limits::infinity().quantity_from_zero().numerical_value_in(mp_units::si::metre) == std::numeric_limits::infinity()); +#if MP_UNITS_HOSTED && (__cpp_lib_constexpr_cmath || MP_UNITS_COMP_GCC) + // quiet_NaN static_assert( std::isnan(std::numeric_limits::quiet_NaN().quantity_from_zero().numerical_value_in(mp_units::si::metre))); @@ -179,6 +188,8 @@ static_assert( static_assert(std::isnan( std::numeric_limits::signaling_NaN().quantity_from_zero().numerical_value_in(mp_units::si::metre))); +#endif + // denorm_min static_assert(std::numeric_limits::denorm_min().quantity_from_zero().numerical_value_in( mp_units::si::metre) == std::numeric_limits::denorm_min());