[#mp_units-utility-operator_plus-07] = xref:mp_units.adoc[mp_units]::xref:mp_units/utility.adoc[utility]::operator+ :relfileprefix: ../../ :mrdocs: Unary plus operators == Synopses Declared in `<mp‐units/utility/constrained.h>` Applies unary `+` to 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_plus-0c.adoc[operator+](xref:mp_units/utility/constrained.adoc[constrained] const& x); ---- [.small]#xref:mp_units/utility/operator_plus-0c.adoc[_» more..._]# Adds a `safe_int` to 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_plus-0e9.adoc[operator+]( U lhs, xref:mp_units/utility/safe_int-07.adoc[safe_int] rhs); ---- [.small]#xref:mp_units/utility/operator_plus-0e9.adoc[_» more..._]# Adds a `safe_int` to a floating‐point value. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr auto xref:mp_units/utility/operator_plus-0fec.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_plus-0fec.adoc[_» more..._]# Adds an integral scalar to 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_plus-0e0.adoc[operator+]( xref:mp_units/utility/safe_int-07.adoc[safe_int] lhs, U rhs); ---- [.small]#xref:mp_units/utility/operator_plus-0e0.adoc[_» more..._]# Adds a floating‐point value to a `safe_int`. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr auto xref:mp_units/utility/operator_plus-0d.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_plus-0d.adoc[_» more..._]# Computes the sum 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_plus-01.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_plus-01.adoc[_» more..._]# Adds a safe_int to 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_plus-06f.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_plus-06f.adoc[_» more..._]# Adds a non‐integral constrained value to 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_plus-0fe8.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_plus-0fe8.adoc[_» more..._]# Adds a constrained value to 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_plus-02.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_plus-02.adoc[_» more..._]# Adds a safe_int to 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_plus-06b.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_plus-06b.adoc[_» more..._]# == Return Value * the wrapped result of applying unary `+` to `x` * the sum, as a `safe_int` of the promoted result type; triggers `ErrorPolicy::on_overflow` on overflow * the sum of `lhs` and the wrapped value * the sum of the wrapped value and `rhs` * the sum of `lhs` and `rhs`; triggers `ErrorPolicy::on_overflow` on overflow * the wrapped sum 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 apply unary `+` to | *lhs* | the integral scalar operand | *rhs* | the `safe_int` to add |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#