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,
    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>
[[nodiscard]]
constexpr
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.

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

NameDescription
ToQa target quantity type to which to cast the representation