From df2616927d88c8ef66cf712176b77da7a8369db2 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Fri, 20 Oct 2023 21:21:07 +0200 Subject: [PATCH 1/2] refactor: `quantity` operators refactored --- src/core/include/mp-units/quantity.h | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/core/include/mp-units/quantity.h b/src/core/include/mp-units/quantity.h index 097dd62a..f4a2273f 100644 --- a/src/core/include/mp-units/quantity.h +++ b/src/core/include/mp-units/quantity.h @@ -450,8 +450,7 @@ template requires detail::InvocableQuantities, quantity, quantity> [[nodiscard]] constexpr Quantity auto operator*(const quantity& lhs, const quantity& rhs) { - return make_quantity(lhs.numerical_value_ref_in(quantity::unit) * - rhs.numerical_value_ref_in(quantity::unit)); + return make_quantity(lhs.numerical_value_ref_in(get_unit(R1)) * rhs.numerical_value_ref_in(get_unit(R2))); } template @@ -459,7 +458,7 @@ template detail::InvokeResultOf, Rep, const Value&> [[nodiscard]] constexpr Quantity auto operator*(const quantity& q, const Value& v) { - return make_quantity(q.numerical_value_ref_in(quantity::unit) * v); + return make_quantity(q.numerical_value_ref_in(get_unit(R)) * v); } template @@ -467,7 +466,7 @@ template detail::InvokeResultOf, const Value&, Rep> [[nodiscard]] constexpr Quantity auto operator*(const Value& v, const quantity& q) { - return make_quantity(v * q.numerical_value_ref_in(quantity::unit)); + return make_quantity(v * q.numerical_value_ref_in(get_unit(R))); } template @@ -475,8 +474,7 @@ template [[nodiscard]] constexpr Quantity auto operator/(const quantity& lhs, const quantity& rhs) { gsl_ExpectsAudit(rhs != rhs.zero()); - return make_quantity(lhs.numerical_value_ref_in(quantity::unit) / - rhs.numerical_value_ref_in(quantity::unit)); + return make_quantity(lhs.numerical_value_ref_in(get_unit(R1)) / rhs.numerical_value_ref_in(get_unit(R2))); } template @@ -485,7 +483,7 @@ template [[nodiscard]] constexpr Quantity auto operator/(const quantity& q, const Value& v) { gsl_ExpectsAudit(v != quantity_values::zero()); - return make_quantity(q.numerical_value_ref_in(quantity::unit) / v); + return make_quantity(q.numerical_value_ref_in(get_unit(R)) / v); } template @@ -493,7 +491,7 @@ template detail::InvokeResultOf, const Value&, Rep> [[nodiscard]] constexpr Quantity auto operator/(const Value& v, const quantity& q) { - return make_quantity<::mp_units::one / R>(v / q.numerical_value_ref_in(quantity::unit)); + return make_quantity<::mp_units::one / R>(v / q.numerical_value_ref_in(get_unit(R))); } template From 4abef7b245baa7ff34b166ae6fa9bfe08e94ede9 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Sat, 21 Oct 2023 08:17:55 +0200 Subject: [PATCH 2/2] refactor: duplicated forward declaration of `quantity` removed --- src/core/include/mp-units/reference.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/core/include/mp-units/reference.h b/src/core/include/mp-units/reference.h index f33e2b38..10633f98 100644 --- a/src/core/include/mp-units/reference.h +++ b/src/core/include/mp-units/reference.h @@ -174,8 +174,6 @@ struct reference { } }; -template Rep> -class quantity; template requires RepresentationOf, get_quantity_spec(R{}).character>