refactor: explicit type of op/ for quantity and reference replaced with constrained placeholder

This prevents additional instantiations of inversed quantities
This commit is contained in:
Mateusz Pusz
2024-11-16 22:10:51 +01:00
parent 1be54cbc1d
commit b00d061ac8
2 changed files with 2 additions and 2 deletions

View File

@ -584,7 +584,7 @@ public:
template<typename Value, std::derived_from<quantity> Q> template<typename Value, std::derived_from<quantity> Q>
requires(!Quantity<Value>) && requires(!Quantity<Value>) &&
(!Reference<Value>) && detail::InvokeResultOf<quantity_spec, std::divides<>, const Value&, Rep> (!Reference<Value>) && detail::InvokeResultOf<quantity_spec, std::divides<>, const Value&, Rep>
[[nodiscard]] friend constexpr QuantityOf<inverse(quantity_spec)> auto operator/(const Value& val, const Q& q) [[nodiscard]] friend constexpr Quantity auto operator/(const Value& val, const Q& q)
{ {
return ::mp_units::quantity{val / q.numerical_value_ref_in(unit), ::mp_units::one / R}; return ::mp_units::quantity{val / q.numerical_value_ref_in(unit), ::mp_units::one / R};
} }

View File

@ -199,7 +199,7 @@ template<typename FwdRep, Reference R, RepresentationOf<get_quantity_spec(R{})>
template<typename FwdRep, Reference R, RepresentationOf<get_quantity_spec(R{})> Rep = std::remove_cvref_t<FwdRep>> template<typename FwdRep, Reference R, RepresentationOf<get_quantity_spec(R{})> Rep = std::remove_cvref_t<FwdRep>>
requires(!detail::OffsetUnit<decltype(get_unit(R{}))>) requires(!detail::OffsetUnit<decltype(get_unit(R{}))>)
[[nodiscard]] constexpr quantity<inverse(R{}), Rep> operator/(FwdRep&& lhs, R) [[nodiscard]] constexpr Quantity auto operator/(FwdRep&& lhs, R)
{ {
return quantity{std::forward<FwdRep>(lhs), inverse(R{})}; return quantity{std::forward<FwdRep>(lhs), inverse(R{})};
} }