mp_units::operator*

Multiplication operators

Synopses

Declared in <mp-units/framework/dimension.h>

Multiplies a unit by a reference

template<Unit U1>
[[nodiscard]]
consteval
/* implementation-defined */
operator*(
    U1 u1,
    reference r);
» more...

Multiplies a reference by a unit

template<Unit U2>
[[nodiscard]]
consteval
/* implementation-defined */
operator*(
    reference r,
    U2 u2);
» more...

scaled_unit specializations have priority in this operation. This means that the library framework prevents passing it as an element to the derived_unit. In such case only the reference unit is passed to the derived unit and the magnitude remains outside forming another scaled unit as a result of the operation.

template<
    Dimension Lhs,
    Dimension Rhs>
[[nodiscard]]
consteval
Dimension auto
operator*(
    Lhs lhs,
    Rhs rhs);
» more...

scaled_unit specializations have priority in this operation. This means that the library framework prevents passing it as an element to the derived_unit. In such case only the reference unit is passed to the derived unit and the magnitude remains outside forming another scaled unit as a result of the operation.

template<
    Dimension Lhs,
    Dimension Rhs>
[[nodiscard]]
consteval
Dimension auto
operator*(
    Lhs lhs,
    Rhs rhs);
» more...

scaled_unit specializations have priority in this operation. This means that the library framework prevents passing it as an element to the derived_unit. In such case only the reference unit is passed to the derived unit and the magnitude remains outside forming another scaled unit as a result of the operation.

template<
    Dimension Lhs,
    Dimension Rhs>
[[nodiscard]]
consteval
Dimension auto
operator*(
    Lhs lhs,
    Rhs rhs);
» more...

Deleted overload rejecting reference * quantity in favor of quantity * reference

template<
    Reference R,
    typename Q>
requires Quantity<std::remove_cvref_t<Q>>
constexpr
auto
operator*(
    R r,
    Q&& q) = delete;
» more...

Deleted overload rejecting reference * representation in favor of representation * reference

template<
    Reference R,
    typename Rep>
requires RepresentationOf<std::remove_cvref_t<Rep>, get_quantity_spec(R{})>
constexpr
auto
operator*(
    R r,
    Rep&& rep) = delete;
» more...

Multiplies two references

template<
    typename Q2,
    typename U2>
[[nodiscard]]
consteval
/* implementation-defined */
operator*(
    reference r1,
    reference<Q2, U2> r2);
» more...

Multiplication operator

template<
    typename Value,
    auto R1,
    typename Rep1>
requires (!Quantity<Value>) && (!Reference<Value>) &&
            ScalableResultOf<get_quantity_spec(R1), std::multiplies<>, const Value&, Rep1>
[[nodiscard]]
constexpr
Quantity auto
operator*(
    Value const& val,
    quantity<R1, Rep1> const& q);
» more...

Multiplication operator

template<
    auto R1,
    typename Rep1,
    typename Value>
requires (!Quantity<Value>) && (!Reference<Value>) &&
            ScalableResultOf<get_quantity_spec(R1), std::multiplies<>, Rep1, const Value&>
[[nodiscard]]
constexpr
Quantity auto
operator*(
    quantity<R1, Rep1> const& q,
    Value const& val);
» more...

Rebinds a quantity to a reference obtained by multiplying its own reference by R

template<
    typename FwdQ,
    Reference R,
    Quantity Q = std::remove_cvref_t<FwdQ>>
[[nodiscard]]
constexpr
Quantity auto
operator*(
    FwdQ&& q,
    R r);
» more...

Constructs a quantity from a representation value and a reference

template<
    typename FwdRep,
    Reference R,
    RepresentationOf<get_quantity_spec(R{})> Rep = std::remove_cvref_t<FwdRep>>
requires (!detail::OffsetUnit<decltype(get_unit(R{}))>)
[[nodiscard]]
constexpr
quantity<R{}, Rep>
operator*(
    FwdRep&& lhs,
    R r);
» more...

Deprecated constructor of a quantity from a representation value and an offset-unit reference

template<
    typename FwdRep,
    Reference R,
    RepresentationOf<get_quantity_spec(R{})> Rep = std::remove_cvref_t<FwdRep>>
requires detail::OffsetUnit<decltype(get_unit(R{}))>
[[deprecated("2.3.0: References using offset units (e.g., temperatures) should be constructed with the `delta` or `point` helpers")]]
constexpr
auto
operator*(
    FwdRep&& lhs,
    R r);
» more...

Multiplication operator

template<
    auto R1,
    typename Rep1,
    auto R2,
    typename Rep2>
requires InvocableQuantities<std::multiplies<>, quantity<R1, Rep1>, quantity<R2, Rep2>>
[[nodiscard]]
constexpr
Quantity auto
operator*(
    quantity<R1, Rep1> const& lhs,
    quantity<R2, Rep2> const& rhs);
» more...

Return Value

  • a reference resulting from multiplying the quantity specification and the unit
  • a reference resulting from multiplying the quantity specifications and the units
  • quantity holding the same numerical value as q, with reference Q::reference * R{}
  • quantity of reference r holding the value of lhs

Parameters

NameDescription
u1the unit to multiply
rthe reference to multiply by
u2the unit to multiply by
qquantity operand (unused)
reprepresentation operand (unused)
r1the reference to multiply
r2the reference to multiply by
lhsrepresentation value to become the quantity's numerical value