mp_units::value_cast¶
Explicit cast of a quantity point's representation
Synopsis¶
Declared in <mp-units/framework/value_cast.h>
template<Quantity ToQ, typename FwdQP, RoundingPolicy Policy = truncated_t,
QuantityPoint QP = std::remove_cvref_t<FwdQP>>
requires(ToQ::quantity_spec == QP::quantity_spec) && UnitOf<MP_UNITS_NONCONST_TYPE(ToQ::unit), QP::quantity_spec> &&
std::constructible_from<typename ToQ::rep, typename QP::rep> &&
detail::ExplicitlyCastable<QP::unit, ToQ::unit, typename ToQ::rep> &&
detail::ValidRoundingPolicyFor<Policy, typename QP::rep, typename ToQ::rep>
[[nodiscard]] constexpr QuantityPoint auto value_cast(FwdQP&& qp, Policy policy = Policy{});
Description¶
Implicit conversions between quantities of different types are allowed only for "safe" (e.g. non-truncating) conversion. In truncating cases an explicit cast have to be used.
inline constexpr struct A : absolute_point_origin A;
using ToQ = quantity<mm, int>; auto qp = value_cast<ToQ>(quantity_point{1.23 * m});
Note that value_cast only changes the "representation aspects" (unit and representation type), but not the "meaning" (quantity type or the actual point that is being described).
Return Value¶
Note
The return value should not be discarded.
Template Parameters¶
| Name | Description |
|---|---|
| ToQ | a target quantity type to which to cast the representation of the point |
Parameters¶
| Name | Description |
|---|---|
| policy | an optional rounding policy (truncated when not provided) |