Multiplication operators
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...
q, with reference Q::reference * R{}r holding the value of lhs| Name | Description |
|---|---|
| u1 | the unit to multiply |
| r | the reference to multiply by |
| u2 | the unit to multiply by |
| q | quantity operand (unused) |
| rep | representation operand (unused) |
| r1 | the reference to multiply |
| r2 | the reference to multiply by |
| lhs | representation value to become the quantity's numerical value |