diff --git a/src/core/include/mp_units/quantity.h b/src/core/include/mp_units/quantity.h index 543a261d..5f0c5d4e 100644 --- a/src/core/include/mp_units/quantity.h +++ b/src/core/include/mp_units/quantity.h @@ -378,16 +378,14 @@ public: requires detail::InvokeResultOf, rep, const Value&> [[nodiscard]] friend constexpr Quantity auto operator*(const quantity& q, const Value& v) { - using ret = quantity, rep, Value>>; - return ret(q.number() * v); + return q.number() * v * R; } template requires detail::InvokeResultOf, const Value&, rep> [[nodiscard]] friend constexpr Quantity auto operator*(const Value& v, const quantity& q) { - using ret = quantity, Value, rep>>; - return ret(v * q.number()); + return v * q.number() * R; } template @@ -395,8 +393,7 @@ public: [[nodiscard]] friend constexpr Quantity auto operator/(const quantity& q, const Value& v) { gsl_ExpectsAudit(v != quantity_values::zero()); - using ret = quantity, rep, Value>>; - return ret(q.number() / v); + return q.number() / v * R; } template @@ -412,16 +409,14 @@ public: [[nodiscard]] friend constexpr Quantity auto operator%(const quantity& q, const Value& v) { gsl_ExpectsAudit(v != quantity_values::zero()); - using ret = quantity, rep, Value>>; - return ret(q.number() % v); + return q.number() % v * R; } [[nodiscard]] friend constexpr Quantity auto operator%(const quantity& lhs, const quantity& rhs) requires(!treat_as_floating_point) && detail::InvokeResultOf, rep, rep> { gsl_ExpectsAudit(rhs.number() != quantity_values::zero()); - using ret = quantity, rep, rep>>; - return ret(lhs.number() % rhs.number()); + return lhs.number() % rhs.number() * R; } [[nodiscard]] friend constexpr auto operator<=>(const quantity& lhs, const quantity& rhs)