From a95b2c770efde155615dac34fe9e8ac5a104a755 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Thu, 3 Oct 2024 22:10:38 +0200 Subject: [PATCH] fix: explicit cast added to `less` for magnitudes to fix clang-arm64 conversion error --- src/core/include/mp-units/framework/magnitude.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/include/mp-units/framework/magnitude.h b/src/core/include/mp-units/framework/magnitude.h index 1c928783..facf83b1 100644 --- a/src/core/include/mp-units/framework/magnitude.h +++ b/src/core/include/mp-units/framework/magnitude.h @@ -226,7 +226,9 @@ template // Magnitude product implementation. [[nodiscard]] consteval bool less(MagnitudeSpec auto lhs, MagnitudeSpec auto rhs) { - return get_base_value(lhs) < get_base_value(rhs); + // clang-arm64 raises "error: implicit conversion from 'long' to 'long double' may lose precision" so we need an explicit cast + using ct = std::common_type_t; + return static_cast(get_base_value(lhs)) < static_cast(get_base_value(rhs)); } // The largest integer which can be extracted from any magnitude with only a single basis vector.