[#mp_units-utility-operator_star-04b] = xref:mp_units.adoc[mp_units]::xref:mp_units/utility.adoc[utility]::operator* :relfileprefix: ../../ :mrdocs: Multiplication operators == Synopses Declared in `<mp‐units/utility/safe_int.h>` Multiplies an integral scalar by 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_star-02.adoc[operator*]( U lhs, xref:mp_units/utility/safe_int-07.adoc[safe_int] rhs); ---- [.small]#xref:mp_units/utility/operator_star-02.adoc[_» more..._]# Multiplies a floating‐point value by a `safe_int`. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr auto xref:mp_units/utility/operator_star-01.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_star-01.adoc[_» more..._]# Multiplies a `safe_int` by 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_star-04e.adoc[operator*]( xref:mp_units/utility/safe_int-07.adoc[safe_int] lhs, U rhs); ---- [.small]#xref:mp_units/utility/operator_star-04e.adoc[_» more..._]# Multiplies a `safe_int` by a floating‐point value. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- [[nodiscard]] constexpr auto xref:mp_units/utility/operator_star-0a.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_star-0a.adoc[_» more..._]# Computes the product 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_star-0c.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_star-0c.adoc[_» more..._]# Multiplies a safe_int by 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_star-049.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_star-049.adoc[_» more..._]# Multiplies a safe_int by a non‐integral constrained value [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_star-0e4.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_star-0e4.adoc[_» more..._]# Multiplies a constrained value by 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_star-0b.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_star-0b.adoc[_» more..._]# Multiplies a non‐integral constrained value by a safe_int [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_star-0e8.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_star-0e8.adoc[_» more..._]# == Return Value * the product, as a `safe_int` of the promoted result type; triggers `ErrorPolicy::on_overflow` on overflow * the product of `lhs` and the wrapped value * the product of the wrapped value and `rhs` * the product of `lhs` and `rhs`; triggers `ErrorPolicy::on_overflow` on overflow * the wrapped product 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 | *lhs* | the integral scalar operand | *rhs* | the `safe_int` to multiply by |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#