[#mp_units-utility-operator_minus-06] = xref:mp_units.adoc[mp_units]::xref:mp_units/utility.adoc[utility]::operator‐ :relfileprefix: ../../ :mrdocs: Unary minus operators == Synopses Declared in `<mp‐units/utility/constrained.h>` Negates the wrapped value [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr xref:mp_units/utility/constrained.adoc[constrained<decltype(‐std::declval<T>()), ErrorPolicy>] xref:mp_units/utility/operator_minus-0d1.adoc[operator‐](xref:mp_units/utility/constrained.adoc[constrained] const& x); ---- [.small]#xref:mp_units/utility/operator_minus-0d1.adoc[_» more..._]# Subtracts a `safe_int` from an integral scalar, checking for overflow. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr xref:mp_units/utility/safe_int-07.adoc[safe_int</* implementation-defined */, ErrorPolicy>] xref:mp_units/utility/operator_minus-02.adoc[operator‐]( U lhs, xref:mp_units/utility/safe_int-07.adoc[safe_int] rhs); ---- [.small]#xref:mp_units/utility/operator_minus-02.adoc[_» more..._]# Subtracts a `safe_int` from a floating‐point value. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr auto xref:mp_units/utility/operator_minus-03.adoc[operator‐]( U lhs, xref:mp_units/utility/safe_int-07.adoc[safe_int] rhs) requires requires { lhs ‐ static_cast<U>(rhs.value_); }; ---- [.small]#xref:mp_units/utility/operator_minus-03.adoc[_» more..._]# Subtracts an integral scalar from a `safe_int`, checking for overflow. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr xref:mp_units/utility/safe_int-07.adoc[safe_int</* implementation-defined */, ErrorPolicy>] xref:mp_units/utility/operator_minus-0de.adoc[operator‐]( xref:mp_units/utility/safe_int-07.adoc[safe_int] lhs, U rhs); ---- [.small]#xref:mp_units/utility/operator_minus-0de.adoc[_» more..._]# Subtracts a floating‐point value from a `safe_int`. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr auto xref:mp_units/utility/operator_minus-04.adoc[operator‐]( xref:mp_units/utility/safe_int-07.adoc[safe_int] lhs, U rhs) requires requires { static_cast<U>(lhs.value_) ‐ rhs; }; ---- [.small]#xref:mp_units/utility/operator_minus-04.adoc[_» more..._]# Computes the difference of `lhs` and `rhs.` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr xref:mp_units/utility/safe_int-07.adoc[safe_int</* implementation-defined */, ErrorPolicy>] xref:mp_units/utility/operator_minus-09.adoc[operator‐]( xref:mp_units/utility/safe_int-07.adoc[safe_int] lhs, xref:mp_units/utility/safe_int-07.adoc[safe_int] rhs); ---- [.small]#xref:mp_units/utility/operator_minus-09.adoc[_» more..._]# Subtracts a constrained value from a safe_int [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr xref:mp_units/utility/safe_int-07.adoc[safe_int</* implementation-defined */, ErrorPolicy>] xref:mp_units/utility/operator_minus-0b.adoc[operator‐]( xref:mp_units/utility/safe_int-07.adoc[safe_int] lhs, xref:mp_units/utility/constrained.adoc[constrained<U, CP>] rhs); ---- [.small]#xref:mp_units/utility/operator_minus-0b.adoc[_» more..._]# Subtracts a non‐integral constrained value from a safe_int [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr xref:mp_units/utility/constrained.adoc[constrained<decltype(std::declval<T>() ‐ std::declval<U>()), CP>] xref:mp_units/utility/operator_minus-07.adoc[operator‐]( xref:mp_units/utility/safe_int-07.adoc[safe_int] lhs, xref:mp_units/utility/constrained.adoc[constrained<U, CP>] const& rhs); ---- [.small]#xref:mp_units/utility/operator_minus-07.adoc[_» more..._]# Subtracts a safe_int from a constrained value [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr xref:mp_units/utility/safe_int-07.adoc[safe_int</* implementation-defined */, ErrorPolicy>] xref:mp_units/utility/operator_minus-05.adoc[operator‐]( xref:mp_units/utility/constrained.adoc[constrained<U, CP>] lhs, xref:mp_units/utility/safe_int-07.adoc[safe_int] rhs); ---- [.small]#xref:mp_units/utility/operator_minus-05.adoc[_» more..._]# Subtracts a safe_int from a non‐integral constrained value [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr xref:mp_units/utility/constrained.adoc[constrained<decltype(std::declval<U>() ‐ std::declval<T>()), CP>] xref:mp_units/utility/operator_minus-01.adoc[operator‐]( xref:mp_units/utility/constrained.adoc[constrained<U, CP>] const& lhs, xref:mp_units/utility/safe_int-07.adoc[safe_int] rhs); ---- [.small]#xref:mp_units/utility/operator_minus-01.adoc[_» more..._]# == Return Value * the wrapped result of negating `x` * the difference, as a `safe_int` of the promoted result type; triggers `ErrorPolicy::on_overflow` on overflow * the difference between `lhs` and the wrapped value * the difference between the wrapped value and `rhs` * the result of `lhs ‐ rhs`; triggers `ErrorPolicy::on_overflow` on overflow * the wrapped difference of the underlying values [NOTE] ==== The return value https://en.cppreference.com/cpp/language/attributes/nodiscard[should not be discarded^]. ==== == Template Parameters [cols="1,4"] |=== | Name| Description | *U* | the integral scalar type |=== == Parameters [cols="1,4"] |=== | Name| Description | *x* | the wrapped value to negate | *lhs* | the integral scalar operand | *rhs* | the `safe_int` to subtract |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#