[#mp_units-value_cast-02e] = xref:mp_units.adoc[mp_units]::value_cast :relfileprefix: ../ :mrdocs: Explicit cast of a quantity's unit and representation type == Synopsis Declared in `<mp‐units/framework/value_cast.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< xref:mp_units/Unit.adoc[Unit] auto ToU, typename ToRep, typename FwdQ, xref:mp_units/Quantity.adoc[Quantity] Q = std::remove_cvref_t<FwdQ>> requires (MP_UNITS_WEAK_UNIT_OF(MP_UNITS_REMOVE_CONST(decltype(ToU)), Q::quantity_spec)) && RepresentationOf<ToRep, Q::quantity_spec> && std::constructible_from<ToRep, typename Q::rep> && detail::SaneScaling<Q::unit, ToU, ToRep> [[nodiscard]] constexpr xref:mp_units/Quantity.adoc[Quantity] auto value_cast(FwdQ&& q); ---- == 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<us, int>(1.23 * ms); == Template Parameters [cols=2] |=== | Name | Description | *ToU* | a unit to use for the target quantity | *ToRep* | a representation type to use for the target quantity |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#