fix: constraint recursion for gcc11 on operator/

A similar fix was applied in 417f842585
for the operator*.

Following discussion in https://github.com/mpusz/units/issues/398, it
seems appropriate to apply it for operator/.

Other operators (+, -, %) do not seem to suffer from the same problem.
This commit is contained in:
TheCoconutChef
2022-10-20 12:00:18 -04:00
parent 7046b319dc
commit 136af48e70

View File

@@ -392,8 +392,8 @@ public:
return ret(v * q.number());
}
template<typename Value>
requires(!Quantity<Value>) && (invoke_result_convertible_to_<rep, std::divides<>, rep, const Value&>)
template<Representation Value>
requires(invoke_result_convertible_to_<rep, std::divides<>, rep, const Value&>)
[[nodiscard]] friend constexpr Quantity auto operator/(const quantity& q, const Value& v)
{
gsl_ExpectsAudit(v != quantity_values<Value>::zero());
@@ -401,8 +401,8 @@ public:
return ret(q.number() / v);
}
template<typename Value>
requires(!Quantity<Value>) && (invoke_result_convertible_to_<rep, std::divides<>, const Value&, rep>)
template<Representation Value>
requires(invoke_result_convertible_to_<rep, std::divides<>, const Value&, rep>)
[[nodiscard]] friend constexpr Quantity auto operator/(const Value& v, const quantity& q)
{
return detail::make_quantity<::units::reference<dim_one, ::units::one>{} / reference>(v / q.number());