mp_units::value_cast¶
Explicit cast of a quantity's representation type
Synopsis¶
Declared in <mp-units/framework/value_cast.h>
template<typename ToRep, typename FwdQ, RoundingPolicy Policy = truncated_t, Quantity Q = std::remove_cvref_t<FwdQ>>
requires RepresentationOf<ToRep, Q::quantity_spec> && std::constructible_from<ToRep, typename Q::rep> &&
detail::ValidRoundingPolicyFor<Policy, typename Q::rep, ToRep>
[[nodiscard]] constexpr quantity<Q::reference, ToRep> 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.
auto q = value_cast<int>(1.23 * ms); auto r = value_cast<int>(1.55 * ms, rounded);
Return Value¶
A quantity
Note
The return value should not be discarded.
Template Parameters¶
| Name | Description |
|---|---|
| ToRep | a representation type to use for a target quantity |
Parameters¶
| Name | Description |
|---|---|
| policy | an optional rounding policy (truncated when not provided) |