Explicit cast of a quantity point's representation type and unit
Declared in <mp-units/framework/value_cast.h>
template<
typename ToRep,
Unit auto ToU,
typename FwdQP,
RoundingPolicy Policy = truncated_t,
QuantityPoint QP = std::remove_cvref_t<FwdQP>>
requires UnitOf<MP_UNITS_REMOVE_CONST(decltype(ToU)), QP::quantity_spec> &&
RepresentationOf<ToRep, QP::quantity_spec> && std::constructible_from<ToRep, typename QP::rep> &&
detail::ExplicitlyCastable<QP::unit, ToU, ToRep> &&
detail::ValidRoundingPolicyFor<Policy, typename QP::rep, ToRep>
[[nodiscard]]
constexpr
QuantityPoint auto
value_cast(
FwdQP&& qp,
Policy policy = Policy{});
Implicit conversions between quantity points of different types are allowed only for "safe" (e.g. non-truncating) conversion. In truncating cases an explicit cast have to be used.
auto qp = value_cast<int, us>(quantity_point{1.23 * ms});
the quantity point converted to unit ToU and representation type ToRep
The return value should not be discarded.
| Name | Description |
|---|---|
| ToRep | a representation type to use for the target quantity |
| ToU | a unit to use for the target quantity |
| Name | Description |
|---|---|
| qp | the quantity point to cast |
| policy | an optional rounding policy (truncated when not provided) |