diff --git a/src/core/include/mp-units/framework/quantity.h b/src/core/include/mp-units/framework/quantity.h index e9bc2813..b750ee72 100644 --- a/src/core/include/mp-units/framework/quantity.h +++ b/src/core/include/mp-units/framework/quantity.h @@ -77,14 +77,14 @@ template concept ValuePreservingAssignment = std::assignable_from && is_value_preserving, T>; template -concept ValuePreservingScaling1Rep = +concept ValuePreservingScaling = SaneScaling && (treat_as_floating_point || (integral_conversion_factor(FromUnit, ToUnit)) || unsatisfied<"Scaling from '{}' to '{}' is not value-preserving for '{}' representation type">( unit_symbol(FromUnit), unit_symbol(ToUnit), type_name())); template -concept ValuePreservingScaling2Reps = +concept ValuePreservingConversion = // TODO consider providing constraints of sudo_cast to check if representation types can be scaled between each other // CastableReps && SaneScaling && @@ -97,7 +97,7 @@ template concept QuantityConstructibleFrom = Quantity && Quantity && explicitly_convertible(QFrom::quantity_spec, QTo::quantity_spec) && ValuePreservingConstruction && - ValuePreservingScaling2Reps; + ValuePreservingConversion; template concept ScalarValuePreservingTo = (!Quantity) && Scalar && is_value_preserving; @@ -245,7 +245,7 @@ public: } template ToU> - requires detail::ValuePreservingScaling1Rep + requires detail::ValuePreservingScaling [[nodiscard]] constexpr QuantityOf auto in(ToU) const { return quantity{*this}; @@ -260,7 +260,7 @@ public: template ToRep, detail::WeakUnitOf ToU> requires detail::ValuePreservingConstruction && - detail::ValuePreservingScaling2Reps + detail::ValuePreservingConversion [[nodiscard]] constexpr QuantityOf auto in(ToU) const { return quantity{*this}; @@ -312,7 +312,7 @@ public: #endif template U> - requires detail::ValuePreservingScaling1Rep + requires detail::ValuePreservingScaling [[nodiscard]] constexpr rep numerical_value_in(U) const noexcept { return in(U{}).numerical_value_is_an_implementation_detail_; @@ -400,7 +400,7 @@ public: // compound assignment operators template requires(implicitly_convertible(get_quantity_spec(R2), quantity_spec)) && - detail::ValuePreservingScaling2Reps && requires(rep& a, const Rep2 b) { + detail::ValuePreservingConversion && requires(rep& a, const Rep2 b) { { a += b } -> std::same_as; } constexpr quantity& operator+=(const quantity& other) & @@ -414,7 +414,7 @@ public: template requires(implicitly_convertible(get_quantity_spec(R2), quantity_spec)) && - detail::ValuePreservingScaling2Reps && requires(rep& a, const Rep2 b) { + detail::ValuePreservingConversion && requires(rep& a, const Rep2 b) { { a -= b } -> std::same_as; } constexpr quantity& operator-=(const quantity& other) & @@ -428,7 +428,7 @@ public: template requires(!treat_as_floating_point) && (implicitly_convertible(get_quantity_spec(R2), quantity_spec)) && - detail::ValuePreservingScaling2Reps && requires(rep& a, const Rep2 b) { + detail::ValuePreservingConversion && requires(rep& a, const Rep2 b) { { a %= b } -> std::same_as; } constexpr quantity& operator%=(const quantity& other) & diff --git a/src/core/include/mp-units/framework/quantity_point.h b/src/core/include/mp-units/framework/quantity_point.h index a67c57e4..91f79d40 100644 --- a/src/core/include/mp-units/framework/quantity_point.h +++ b/src/core/include/mp-units/framework/quantity_point.h @@ -329,7 +329,7 @@ public: // unit conversions template ToU> - requires detail::ValuePreservingScaling1Rep + requires detail::ValuePreservingScaling [[nodiscard]] constexpr QuantityPointOf auto in(ToU) const { return ::mp_units::quantity_point{quantity_ref_from(point_origin).in(ToU{}), point_origin}; @@ -344,7 +344,7 @@ public: template ToRep, detail::WeakUnitOf ToU> requires detail::ValuePreservingConstruction && - detail::ValuePreservingScaling2Reps + detail::ValuePreservingConversion [[nodiscard]] constexpr QuantityPointOf auto in(ToU) const { return ::mp_units::quantity_point{quantity_ref_from(point_origin).template in(ToU{}), point_origin}; @@ -438,7 +438,7 @@ public: // compound assignment operators template requires(implicitly_convertible(get_quantity_spec(R2), quantity_spec)) && - detail::ValuePreservingScaling2Reps && + detail::ValuePreservingConversion && requires(const quantity_type q) { quantity_from_origin_is_an_implementation_detail_ += q; } constexpr quantity_point& operator+=(const quantity& q) & { @@ -448,7 +448,7 @@ public: template requires(implicitly_convertible(get_quantity_spec(R2), quantity_spec)) && - detail::ValuePreservingScaling2Reps && + detail::ValuePreservingConversion && requires(const quantity_type q) { quantity_from_origin_is_an_implementation_detail_ -= q; } constexpr quantity_point& operator-=(const quantity& q) & {