refactor: preconditions for quantity operations now use is_neq_zero

This commit is contained in:
Mateusz Pusz
2024-12-04 20:10:18 +01:00
parent 971197b9e5
commit 29ba8e6f7c

View File

@@ -409,7 +409,7 @@ public:
friend constexpr decltype(auto) operator%=(Q&& lhs, const quantity<R2, Rep2>& rhs) friend constexpr decltype(auto) operator%=(Q&& lhs, const quantity<R2, Rep2>& rhs)
{ {
MP_UNITS_EXPECTS_DEBUG(rhs != zero()); MP_UNITS_EXPECTS_DEBUG(is_neq_zero(rhs));
if constexpr (equivalent(unit, get_unit(R2))) if constexpr (equivalent(unit, get_unit(R2)))
lhs.numerical_value_is_an_implementation_detail_ %= rhs.numerical_value_is_an_implementation_detail_; lhs.numerical_value_is_an_implementation_detail_ %= rhs.numerical_value_is_an_implementation_detail_;
else else
@@ -518,7 +518,7 @@ public:
detail::CommonlyInvocableQuantities<std::modulus<>, quantity, quantity<R2, Rep2>> detail::CommonlyInvocableQuantities<std::modulus<>, quantity, quantity<R2, Rep2>>
[[nodiscard]] friend constexpr Quantity auto operator%(const Q& lhs, const quantity<R2, Rep2>& rhs) [[nodiscard]] friend constexpr Quantity auto operator%(const Q& lhs, const quantity<R2, Rep2>& rhs)
{ {
MP_UNITS_EXPECTS_DEBUG(rhs != rhs.zero()); MP_UNITS_EXPECTS_DEBUG(is_neq_zero(rhs));
using ret = detail::common_quantity_for<std::modulus<>, quantity, quantity<R2, Rep2>>; using ret = detail::common_quantity_for<std::modulus<>, quantity, quantity<R2, Rep2>>;
const ret ret_lhs(lhs); const ret ret_lhs(lhs);
const ret ret_rhs(rhs); const ret ret_rhs(rhs);
@@ -567,7 +567,7 @@ public:
requires detail::InvocableQuantities<std::divides<>, quantity, quantity<R2, Rep2>> requires detail::InvocableQuantities<std::divides<>, quantity, quantity<R2, Rep2>>
[[nodiscard]] friend constexpr Quantity auto operator/(const Q& lhs, const quantity<R2, Rep2>& rhs) [[nodiscard]] friend constexpr Quantity auto operator/(const Q& lhs, const quantity<R2, Rep2>& rhs)
{ {
MP_UNITS_EXPECTS_DEBUG(rhs != rhs.zero()); MP_UNITS_EXPECTS_DEBUG(is_neq_zero(rhs));
return ::mp_units::quantity{lhs.numerical_value_ref_in(unit) / rhs.numerical_value_ref_in(rhs.unit), R / R2}; return ::mp_units::quantity{lhs.numerical_value_ref_in(unit) / rhs.numerical_value_ref_in(rhs.unit), R / R2};
} }