diff --git a/src/core/include/units/magnitude.h b/src/core/include/units/magnitude.h index c33a61d3..7d4169d9 100644 --- a/src/core/include/units/magnitude.h +++ b/src/core/include/units/magnitude.h @@ -328,14 +328,16 @@ template requires (detail::is_base_power_pack_valid) struct magnitude { // Whether this magnitude represents an integer. - friend constexpr bool is_integral(magnitude) { return (detail::is_integral(BPs) && ...); } + static constexpr bool is_magnitude_integral = (detail::is_integral(BPs) && ...); + friend constexpr bool is_integral(magnitude) { return is_magnitude_integral; } // Whether this magnitude represents a rational number. - friend constexpr bool is_rational(magnitude) { return (detail::is_rational(BPs) && ...); } + static constexpr bool is_magnitude_rational = (detail::is_rational(BPs) && ...); + friend constexpr bool is_rational(magnitude) { return is_magnitude_rational; } // The value of this magnitude, expressed in a given type. template - requires (is_integral(magnitude{}) || std::is_floating_point_v) + requires is_magnitude_integral || std::is_floating_point_v static constexpr T value = detail::checked_static_cast( (detail::compute_base_power(BPs) * ...)); };