mp_units::operator-¶
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 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<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_NTTP_HACK(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_NTTP_HACK(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_NTTP_HACK(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.