diff --git a/src/core/include/mp-units/math.h b/src/core/include/mp-units/math.h index 86a412aa..420472db 100644 --- a/src/core/include/mp-units/math.h +++ b/src/core/include/mp-units/math.h @@ -444,13 +444,17 @@ template * @brief Computes the inverse of a quantity in a provided unit */ template -[[nodiscard]] constexpr QuantityOf auto inverse(const quantity& q) +[[nodiscard]] constexpr Quantity auto inverse(const quantity& q) requires requires { representation_values::one(); value_cast(representation_values::one() / q); } { - return (representation_values::one() * one).force_in(To * quantity::unit) / q; + if constexpr (AssociatedUnit) { + constexpr QuantitySpec auto qs = get_quantity_spec(To) * quantity::quantity_spec; + return qs(representation_values::one() * one).force_in(To * quantity::unit) / q; + } else + return (representation_values::one() * one).force_in(To * quantity::unit) / q; } /**