mp_units::value_cast¶
Explicit cast of a quantity's representation
Synopsis¶
Declared in <mp-units/framework/value_cast.h>
template<Quantity ToQ, typename FwdQ, RoundingPolicy Policy = truncated_t, Quantity Q = std::remove_cvref_t<FwdQ>>
requires(ToQ::quantity_spec == Q::quantity_spec) && UnitOf<MP_UNITS_NONCONST_TYPE(ToQ::unit), Q::quantity_spec> &&
std::constructible_from<typename ToQ::rep, typename Q::rep> &&
detail::ExplicitlyCastable<Q::unit, ToQ::unit, typename ToQ::rep> &&
detail::ValidRoundingPolicyFor<Policy, typename Q::rep, typename ToQ::rep>
[[nodiscard]] constexpr Quantity auto value_cast(FwdQ&& q, 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.
using ToQ = quantity<us, int>; auto q = value_cast<ToQ>(1.23 * ms);
Note that value_cast only changes the "representation aspects" (unit and representation type), but not the "meaning" (quantity type).
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 |
Parameters¶
| Name | Description |
|---|---|
| policy | an optional rounding policy (truncated when not provided) |