[#mp_units-operator_minus-0c5] = xref:mp_units.adoc[mp_units]::operator‐ :relfileprefix: ../ :mrdocs: Subtraction operators == Synopses Declared in `<mp‐units/framework/quantity.h>` Subtraction operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< xref:mp_units/PointOrigin.adoc[PointOrigin] PO, xref:mp_units/Quantity-0c.adoc[Quantity] Q> requires PointOriginFor<PO, Q::quantity_spec> [[nodiscard]] constexpr xref:mp_units/QuantityPoint.adoc[QuantityPoint] auto xref:mp_units/operator_minus-04.adoc[operator‐]( PO po, Q const& q) requires requires { ‐q; }; ---- [.small]#xref:mp_units/operator_minus-04.adoc[_» more..._]# Subtraction operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< xref:mp_units/PointOrigin.adoc[PointOrigin] PO, xref:mp_units/Quantity-0c.adoc[Quantity] Q> requires PointOriginFor<PO, Q::quantity_spec> [[nodiscard]] constexpr xref:mp_units/QuantityPoint.adoc[QuantityPoint] auto xref:mp_units/operator_minus-02.adoc[operator‐]( PO po, Q const& q) requires requires { ‐q; }; ---- [.small]#xref:mp_units/operator_minus-02.adoc[_» more..._]# Subtraction operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< xref:mp_units/PointOrigin.adoc[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 xref:mp_units/Quantity-0c.adoc[Quantity] auto xref:mp_units/operator_minus-0b.adoc[operator‐]( PO1 lhs, PO2 rhs); ---- [.small]#xref:mp_units/operator_minus-0b.adoc[_» more..._]# Subtraction operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< xref:mp_units/PointOrigin.adoc[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 xref:mp_units/Quantity-0c.adoc[Quantity] auto xref:mp_units/operator_minus-03a.adoc[operator‐]( PO1 lhs, PO2 rhs); ---- [.small]#xref:mp_units/operator_minus-03a.adoc[_» more..._]# Subtraction operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< auto R1, typename Rep1, xref:mp_units/RepresentationOf.adoc[RepresentationOf<get_quantity_spec(R1)>] Value> requires ImplicitFromNumber<R1> && InvokeResultOf<get_quantity_spec(R1), std::minus<>, Rep1, const Value&> [[nodiscard]] constexpr xref:mp_units/Quantity-0c.adoc[Quantity] auto xref:mp_units/operator_minus-00c.adoc[operator‐]( Value const& lhs, xref:mp_units/quantity-01.adoc[quantity<R1, Rep1>] const& rhs); ---- [.small]#xref:mp_units/operator_minus-00c.adoc[_» more..._]# Subtraction operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< auto R1, typename Rep1, xref:mp_units/RepresentationOf.adoc[RepresentationOf<get_quantity_spec(R1)>] Value> requires ImplicitFromNumber<R1> && InvokeResultOf<get_quantity_spec(R1), std::minus<>, Rep1, const Value&> [[nodiscard]] constexpr xref:mp_units/Quantity-0c.adoc[Quantity] auto xref:mp_units/operator_minus-0cc.adoc[operator‐]( xref:mp_units/quantity-01.adoc[quantity<R1, Rep1>] const& lhs, Value const& rhs); ---- [.small]#xref:mp_units/operator_minus-0cc.adoc[_» more..._]# Subtraction operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< xref:mp_units/PointOrigin.adoc[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 xref:mp_units/Quantity-0c.adoc[Quantity] auto xref:mp_units/operator_minus-07.adoc[operator‐]( PO1 po, xref:mp_units/quantity_point-08.adoc[quantity_point<R2, PO2, Rep2>] const& qp); ---- [.small]#xref:mp_units/operator_minus-07.adoc[_» more..._]# Subtraction operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< auto R1, typename Rep1, auto R2, typename Rep2> requires CommonlyInvocableQuantities<std::minus<>, quantity<R1, Rep1>, quantity<R2, Rep2>> [[nodiscard]] constexpr xref:mp_units/Quantity-0c.adoc[Quantity] auto xref:mp_units/operator_minus-03b.adoc[operator‐]( xref:mp_units/quantity-01.adoc[quantity<R1, Rep1>] const& lhs, xref:mp_units/quantity-01.adoc[quantity<R2, Rep2>] const& rhs); ---- [.small]#xref:mp_units/operator_minus-03b.adoc[_» more..._]# Subtraction operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< auto R1, auto PO1, typename Rep1, xref:mp_units/QuantityPointOf.adoc[QuantityPointOf<mp_units::detail::get_absolute_point_origin(PO1)>] QP2> [[nodiscard]] constexpr xref:mp_units/Quantity-0c.adoc[Quantity] auto xref:mp_units/operator_minus-01.adoc[operator‐]( xref:mp_units/quantity_point-08.adoc[quantity_point<R1, PO1, Rep1>] const& lhs, QP2 const& rhs) requires requires { lhs.quantity_ref_from(PO1) ‐ rhs.quantity_ref_from(QP2::point_origin); }; ---- [.small]#xref:mp_units/operator_minus-01.adoc[_» more..._]# Subtraction operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< auto R1, auto PO1, typename Rep1, xref:mp_units/PointOrigin.adoc[PointOrigin] PO2> requires QuantityPointOf<quantity_point<R1, PO1, Rep1>, PO2{}> && ReferenceOf<MP_UNITS_REMOVE_CONST(decltype(R1)), get_quantity_spec(PO2{})> [[nodiscard]] constexpr xref:mp_units/Quantity-0c.adoc[Quantity] auto xref:mp_units/operator_minus-007.adoc[operator‐]( xref:mp_units/quantity_point-08.adoc[quantity_point<R1, PO1, Rep1>] const& qp, PO2 po); ---- [.small]#xref:mp_units/operator_minus-007.adoc[_» more..._]# Subtraction operator [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- 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 xref:mp_units/QuantityPoint.adoc[QuantityPoint] auto xref:mp_units/operator_minus-0e.adoc[operator‐]( xref:mp_units/quantity_point-08.adoc[quantity_point<R1, PO1, Rep1>] const& qp, xref:mp_units/quantity-01.adoc[quantity<R2, Rep2>] const& q) requires requires { qp.quantity_ref_from(PO1) ‐ q; }; ---- [.small]#xref:mp_units/operator_minus-0e.adoc[_» more..._]# == Return Value [NOTE] ==== The return value https://en.cppreference.com/cpp/language/attributes/nodiscard[should not be discarded^]. ==== [.small]#Created with https://www.mrdocs.com[MrDocs]#