Subtraction operators

Synopses

Declared in <mp‐units/framework/quantity.h>

Subtraction operator

template<
    PointOrigin PO,
    Quantity Q>
requires PointOriginFor<PO, Q::quantity_spec>
[[nodiscard]]
constexpr
QuantityPoint auto
operator‐(
    PO po,
    Q const& q)
requires requires { ‐q; };

Subtraction operator

template<
    PointOrigin PO,
    Quantity Q>
requires PointOriginFor<PO, Q::quantity_spec>
[[nodiscard]]
constexpr
QuantityPoint auto
operator‐(
    PO po,
    Q const& q)
requires requires { ‐q; };

Subtraction operator

template<
    PointOrigin PO1,
    /* implementation-defined */ PO2>
requires (PointOriginFor<PO2, get_quantity_spec(PO1{})> || PointOriginFor<PO1, get_quantity_spec(PO2{})>) &&
            (is_derived_from_specialization_of_v<PO1, relative_point_origin> ||
             is_derived_from_specialization_of_v<PO2, relative_point_origin>)
[[nodiscard]]
constexpr
Quantity auto
operator‐(
    PO1 lhs,
    PO2 rhs);

Subtraction operator

template<
    PointOrigin PO1,
    /* implementation-defined */ PO2>
requires (PointOriginFor<PO2, get_quantity_spec(PO1{})> || PointOriginFor<PO1, get_quantity_spec(PO2{})>) &&
            (is_derived_from_specialization_of_v<PO1, relative_point_origin> ||
             is_derived_from_specialization_of_v<PO2, relative_point_origin>)
[[nodiscard]]
constexpr
Quantity auto
operator‐(
    PO1 lhs,
    PO2 rhs);

Subtraction operator

template<
    auto R1,
    typename Rep1,
    RepresentationOf<get_quantity_spec(R1)> Value>
requires ImplicitFromNumber<R1> && InvokeResultOf<get_quantity_spec(R1), std::minus<>, Rep1, const Value&>
[[nodiscard]]
constexpr
Quantity auto
operator‐(
    Value const& lhs,
    quantity<R1, Rep1> const& rhs);

Subtraction operator

template<
    auto R1,
    typename Rep1,
    RepresentationOf<get_quantity_spec(R1)> Value>
requires ImplicitFromNumber<R1> && InvokeResultOf<get_quantity_spec(R1), std::minus<>, Rep1, const Value&>
[[nodiscard]]
constexpr
Quantity auto
operator‐(
    quantity<R1, Rep1> const& lhs,
    Value const& rhs);

Subtraction operator

template<
    PointOrigin PO1,
    auto R2,
    auto PO2,
    typename Rep2>
requires QuantityPointOf<quantity_point<R2, PO2, Rep2>, PO1{}> &&
             ReferenceOf<MP_UNITS_REMOVE_CONST(decltype(R2)), get_quantity_spec(PO1{})>
[[nodiscard]]
constexpr
Quantity auto
operator‐(
    PO1 po,
    quantity_point<R2, PO2, Rep2> const& qp);

Subtraction operator

template<
    auto R1,
    typename Rep1,
    auto R2,
    typename Rep2>
requires CommonlyInvocableQuantities<std::minus<>, quantity<R1, Rep1>, quantity<R2, Rep2>>
[[nodiscard]]
constexpr
Quantity auto
operator‐(
    quantity<R1, Rep1> const& lhs,
    quantity<R2, Rep2> const& rhs);

Subtraction operator

template<
    auto R1,
    auto PO1,
    typename Rep1,
    QuantityPointOf<mp_units::detail::get_absolute_point_origin(PO1)> QP2>
[[nodiscard]]
constexpr
Quantity auto
operator‐(
    quantity_point<R1, PO1, Rep1> const& lhs,
    QP2 const& rhs)
requires requires { lhs.quantity_ref_from(PO1) ‐ rhs.quantity_ref_from(QP2::point_origin); };

Subtraction operator

template<
    auto R1,
    auto PO1,
    typename Rep1,
    PointOrigin PO2>
requires QuantityPointOf<quantity_point<R1, PO1, Rep1>, PO2{}> &&
             ReferenceOf<MP_UNITS_REMOVE_CONST(decltype(R1)), get_quantity_spec(PO2{})>
[[nodiscard]]
constexpr
Quantity auto
operator‐(
    quantity_point<R1, PO1, Rep1> const& qp,
    PO2 po);

Subtraction operator

template<
    auto R1,
    auto PO1,
    typename Rep1,
    auto R2,
    typename Rep2>
requires ReferenceOf<MP_UNITS_REMOVE_CONST(decltype(R2)), get_quantity_spec(PO1)>
[[nodiscard]]
constexpr
QuantityPoint auto
operator‐(
    quantity_point<R1, PO1, Rep1> const& qp,
    quantity<R2, Rep2> const& q)
requires requires { qp.quantity_ref_from(PO1) ‐ q; };

Return Value

Note

The return value should not be discarded.

Created with MrDocs