fix: remove implied support for unallowed syntaxes on quantity kinds and references

This commit is contained in:
Johel Ernesto Guerrero Peña
2021-03-18 17:23:45 -04:00
committed by Mateusz Pusz
parent 5914ae2260
commit 376c402fa0

View File

@@ -300,9 +300,8 @@ template<QuantityKind QK1, QuantityKindEquivalentTo<QK1> QK2>
return detail::make_quantity_kind<QK1>(lhs.common() - rhs.common());
}
template<QuantityKind QK, typename QuantityOrReference>
requires Quantity<QuantityOrReference> || Reference<QuantityOrReference>
[[nodiscard]] constexpr QuantityKind auto operator*(const QK& lhs, const QuantityOrReference& rhs)
template<QuantityKind QK, Quantity Q>
[[nodiscard]] constexpr QuantityKind auto operator*(const QK& lhs, const Q& rhs)
requires requires { lhs.common() * rhs; }
{
return detail::downcasted_kind<QK>(lhs.common() * rhs);
@@ -322,13 +321,11 @@ template<QuantityKind QK1, QuantityKindRelatedTo<QK1> QK2>
return detail::downcasted_kind<QK1>(lhs.common() * rhs.common());
}
template<QuantityKind QK, typename QuantityOrReference>
requires Quantity<QuantityOrReference> || Reference<QuantityOrReference>
[[nodiscard]] constexpr QuantityKind auto operator/(const QK& lhs, const QuantityOrReference& rhs)
template<QuantityKind QK, Quantity Q>
[[nodiscard]] constexpr QuantityKind auto operator/(const QK& lhs, const Q& rhs)
requires requires { lhs.common() / rhs; }
{
if constexpr (Quantity<QuantityOrReference>)
gsl_ExpectsAudit(rhs.count() != quantity_values<typename QuantityOrReference::rep>::zero());
gsl_ExpectsAudit(rhs.count() != quantity_values<typename Q::rep>::zero());
return detail::downcasted_kind<QK>(lhs.common() / rhs);
}