From 8de74eb6f784b914bb4411162c3bb1d3fd709c5f Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Mon, 6 Feb 2023 22:39:23 -0800 Subject: [PATCH] feat: call operator of reference does not produce a quantity anymore --- src/core/include/mp_units/quantity.h | 4 ++-- src/core/include/mp_units/reference.h | 9 +-------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/core/include/mp_units/quantity.h b/src/core/include/mp_units/quantity.h index ff7d5a0d..eb120d66 100644 --- a/src/core/include/mp_units/quantity.h +++ b/src/core/include/mp_units/quantity.h @@ -483,7 +483,7 @@ template typename Q1::rep, typename Q2::rep> [[nodiscard]] constexpr Quantity auto operator*(const Q1& lhs, const Q2& rhs) { - return (Q1::reference * Q2::reference)(lhs.number() * rhs.number()); + return lhs.number() * rhs.number() * (Q1::reference * Q2::reference); } template @@ -492,7 +492,7 @@ template [[nodiscard]] constexpr Quantity auto operator/(const Q1& lhs, const Q2& rhs) { gsl_ExpectsAudit(rhs.number() != quantity_values::zero()); - return (Q1::reference / Q2::reference)(lhs.number() / rhs.number()); + return lhs.number() / rhs.number() * (Q1::reference / Q2::reference); } template diff --git a/src/core/include/mp_units/reference.h b/src/core/include/mp_units/reference.h index 96fc5d25..303d6304 100644 --- a/src/core/include/mp_units/reference.h +++ b/src/core/include/mp_units/reference.h @@ -101,14 +101,7 @@ class quantity; * `2 / kmph`, `kmph * 3`, `kmph / 4`, `70 * isq::length[km] / isq:time[h]`. */ template -struct reference { - template Rep> - // TODO can we somehow return an explicit quantity type here? - [[nodiscard]] constexpr std::same_as> auto operator()(Rep&& value) const - { - return quantity(std::forward(value)); - } -}; +struct reference {}; template [[nodiscard]] consteval bool operator==(reference, reference)