From ed351a4ba3cb6a9f830d8f7691ba1ef7c037ed10 Mon Sep 17 00:00:00 2001 From: Chip Hogg Date: Fri, 28 Jan 2022 19:34:50 +0000 Subject: [PATCH] Avoid needing class to be completed --- src/core/include/units/magnitude.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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) * ...)); };