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>
requires(!Quantity<Value>) &&
(!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};
}

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>>
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{})};
}