mirror of
https://github.com/mpusz/mp-units.git
synced 2025-08-06 05:34:27 +02:00
feat: quantity
and quantity_point
conversion operators now can also convert to const references
This commit is contained in:
@@ -143,7 +143,7 @@ public:
|
||||
quantity& operator=(const quantity&) = default;
|
||||
quantity& operator=(quantity&&) = default;
|
||||
|
||||
// conversions
|
||||
// unit conversions
|
||||
template<UnitCompatibleWith<unit, quantity_spec> U>
|
||||
requires detail::QuantityConvertibleTo<quantity, quantity<detail::make_reference(quantity_spec, U{}), Rep>>
|
||||
[[nodiscard]] constexpr Quantity auto in(U) const
|
||||
@@ -192,7 +192,8 @@ public:
|
||||
}
|
||||
|
||||
// conversion operators
|
||||
template<QuantityLike Q>
|
||||
template<typename Q>
|
||||
requires QuantityLike<std::remove_cvref_t<Q>>
|
||||
[[nodiscard]] explicit(is_specialization_of<decltype(quantity_like_traits<Q>::from_numerical_value(numerical_value_)),
|
||||
convert_explicitly>) constexpr
|
||||
operator Q() const& noexcept(noexcept(quantity_like_traits<Q>::from_numerical_value(numerical_value_)) &&
|
||||
@@ -201,7 +202,8 @@ public:
|
||||
return quantity_like_traits<Q>::from_numerical_value(numerical_value_).value;
|
||||
}
|
||||
|
||||
template<QuantityLike Q>
|
||||
template<typename Q>
|
||||
requires QuantityLike<std::remove_cvref_t<Q>>
|
||||
[[nodiscard]] explicit(is_specialization_of<decltype(quantity_like_traits<Q>::from_numerical_value(numerical_value_)),
|
||||
convert_explicitly>) constexpr
|
||||
operator Q() && noexcept(noexcept(quantity_like_traits<Q>::from_numerical_value(numerical_value_)) &&
|
||||
|
@@ -170,6 +170,7 @@ public:
|
||||
return *this - PO2{};
|
||||
}
|
||||
|
||||
// unit conversions
|
||||
template<UnitCompatibleWith<unit, quantity_spec> U>
|
||||
requires detail::QuantityConvertibleTo<quantity_type, quantity<detail::make_reference(quantity_spec, U{}), Rep>>
|
||||
[[nodiscard]] constexpr QuantityPoint auto in(U) const
|
||||
@@ -185,7 +186,8 @@ public:
|
||||
}
|
||||
|
||||
// conversion operators
|
||||
template<QuantityPointLike QP>
|
||||
template<typename QP>
|
||||
requires QuantityPointLike<std::remove_cvref_t<QP>>
|
||||
[[nodiscard]] explicit(
|
||||
is_specialization_of<decltype(quantity_point_like_traits<QP>::from_quantity(quantity_from_origin_)),
|
||||
convert_explicitly>) constexpr
|
||||
@@ -195,7 +197,8 @@ public:
|
||||
return quantity_point_like_traits<QP>::from_quantity(quantity_from_origin_).value;
|
||||
}
|
||||
|
||||
template<QuantityPointLike QP>
|
||||
template<typename QP>
|
||||
requires QuantityPointLike<std::remove_cvref_t<QP>>
|
||||
[[nodiscard]] explicit(
|
||||
is_specialization_of<decltype(quantity_point_like_traits<QP>::from_quantity(quantity_from_origin_)),
|
||||
convert_explicitly>) constexpr
|
||||
|
Reference in New Issue
Block a user