diff --git a/src/core/include/units/magnitude.h b/src/core/include/units/magnitude.h index 6becff3d..df2b5507 100644 --- a/src/core/include/units/magnitude.h +++ b/src/core/include/units/magnitude.h @@ -207,6 +207,14 @@ constexpr bool strictly_increasing(Ts&&... ts) { return pairwise_all{std::less{}}(std::forward(ts)...); } +template +static constexpr bool all_base_powers_valid = (is_valid_base_power(BPs) && ...); + +template +static constexpr bool all_bases_in_order = strictly_increasing(BPs.get_base()...); + +template +static constexpr bool is_base_power_pack_valid = all_base_powers_valid && all_bases_in_order; } // namespace detail /** @@ -216,7 +224,7 @@ constexpr bool strictly_increasing(Ts&&... ts) { * rational powers, and compare for equality. */ template - requires ((detail::is_valid_base_power(BPs) && ... && detail::strictly_increasing(BPs.get_base()...))) + requires (detail::is_base_power_pack_valid) struct magnitude {}; // Implementation for Magnitude concept (below).