diff --git a/src/core/include/mp-units/quantity.h b/src/core/include/mp-units/quantity.h index 23a1f6c3..8f50edfe 100644 --- a/src/core/include/mp-units/quantity.h +++ b/src/core/include/mp-units/quantity.h @@ -403,7 +403,7 @@ template } template - requires(!Quantity) && + requires(!Quantity) && (!Reference) && detail::InvokeResultOf, Rep, const Value&> [[nodiscard]] constexpr Quantity auto operator*(const quantity& q, const Value& v) { @@ -411,7 +411,7 @@ template } template - requires(!Quantity) && + requires(!Quantity) && (!Reference) && detail::InvokeResultOf, const Value&, Rep> [[nodiscard]] constexpr Quantity auto operator*(const Value& v, const quantity& q) { @@ -427,7 +427,7 @@ template } template - requires(!Quantity) && + requires(!Quantity) && (!Reference) && detail::InvokeResultOf, Rep, const Value&> [[nodiscard]] constexpr Quantity auto operator/(const quantity& q, const Value& v) { @@ -436,7 +436,7 @@ template } template - requires(!Quantity) && + requires(!Quantity) && (!Reference) && detail::InvokeResultOf, const Value&, Rep> [[nodiscard]] constexpr Quantity auto operator/(const Value& v, const quantity& q) { diff --git a/src/core/include/mp-units/reference.h b/src/core/include/mp-units/reference.h index 2a67b64e..204fee55 100644 --- a/src/core/include/mp-units/reference.h +++ b/src/core/include/mp-units/reference.h @@ -166,16 +166,14 @@ template template requires Quantity> -[[nodiscard]] constexpr quantity::reference * R{}, typename std::remove_cvref_t::rep> -operator*(Q&& q, R) +[[nodiscard]] constexpr Quantity auto operator*(Q&& q, R) { return make_quantity::reference * R{}>(std::forward(q).numerical_value_); } template requires Quantity> -[[nodiscard]] constexpr quantity::reference / R{}, typename std::remove_cvref_t::rep> -operator/(Q&& q, R) +[[nodiscard]] constexpr Quantity auto operator/(Q&& q, R) { return make_quantity::reference / R{}>(std::forward(q).numerical_value_); }