diff --git a/src/include/units/quantity_cast.h b/src/include/units/quantity_cast.h index 06b8a1ca..b3195e37 100644 --- a/src/include/units/quantity_cast.h +++ b/src/include/units/quantity_cast.h @@ -287,10 +287,10 @@ template */ template [[nodiscard]] constexpr QuantityKind auto quantity_kind_cast(const quantity_kind& qk) - requires (is_specialization_of && - requires { quantity_cast(qk.common()); }) || - (Kind && UnitOf) || - requires { quantity_cast(qk.common()); } + requires requires { requires is_specialization_of; + requires requires { quantity_cast(qk.common()); }; } || + requires { requires Kind; requires UnitOf; } || + requires { requires requires { quantity_cast(qk.common()); }; } { if constexpr (is_specialization_of) return CastSpec(quantity_cast(qk.common())); diff --git a/src/include/units/quantity_kind.h b/src/include/units/quantity_kind.h index 2e40d978..874a0552 100644 --- a/src/include/units/quantity_kind.h +++ b/src/include/units/quantity_kind.h @@ -241,21 +241,21 @@ public: // Below friend functions are to be found via argument-dependent lookup only template [[nodiscard]] friend constexpr QuantityKind auto operator*(const quantity_kind& qk, const Value& v) - requires requires { { qk.common() * v } -> Quantity; } + requires requires(quantity_type q) { { q * v } -> Quantity; } { return detail::make_quantity_kind(qk.common() * v); } template [[nodiscard]] friend constexpr QuantityKind auto operator*(const Value& v, const quantity_kind& qk) - requires requires { { v * qk.common() } -> Quantity; } + requires requires(quantity_type q) { { v * q } -> Quantity; } { return detail::make_quantity_kind(v * qk.common()); } template [[nodiscard]] friend constexpr QuantityKind auto operator/(const quantity_kind& qk, const Value& v) - requires requires { { qk.common() / v } -> Quantity; } + requires requires(quantity_type q) { { q / v } -> Quantity; } { gsl_ExpectsAudit(v != quantity_values::zero()); return detail::make_quantity_kind(qk.common() / v); @@ -263,7 +263,7 @@ public: template [[nodiscard]] friend constexpr QuantityKind auto operator/(const Value& v, const quantity_kind& qk) - requires requires { { v / qk.common() } -> Quantity; } + requires requires(quantity_type q) { { v / q } -> Quantity; } { gsl_ExpectsAudit(qk.common().count() != quantity_values::zero()); return detail::downcasted_kind(v / qk.common()); @@ -271,7 +271,7 @@ public: template [[nodiscard]] friend constexpr QuantityKind auto operator%(const quantity_kind& qk, const Value& v) - requires requires { qk.common() % v; } + requires requires(quantity_type q) { q % v; } { gsl_ExpectsAudit(v != quantity_values::zero()); return detail::make_quantity_kind(qk.common() % v);