[#mp_units-utility-operator_mod-0f]
= xref:mp_units.adoc[mp&lowbar;units]::xref:mp_units/utility.adoc[utility]::operator%
:relfileprefix: ../../
:mrdocs:

Modulus operators

== Synopses

Declared in `&lt;mp&hyphen;units&sol;utility&sol;safe&lowbar;int&period;h&gt;`

Computes the remainder of dividing an integral scalar by a `safe&lowbar;int`&period;


[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
&lsqb;&lsqb;nodiscard&rsqb;&rsqb;
constexpr
xref:mp_units/utility/safe_int-07.adoc[safe&lowbar;int&lt;&sol;&ast; implementation-defined &ast;&sol;, ErrorPolicy&gt;]
xref:mp_units/utility/operator_mod-09.adoc[operator%](
    U lhs,
    xref:mp_units/utility/safe_int-07.adoc[safe&lowbar;int] rhs);
----

[.small]#xref:mp_units/utility/operator_mod-09.adoc[_» more&period;&period;&period;_]#

Computes the remainder of dividing a `safe&lowbar;int` by an integral scalar&period;


[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
&lsqb;&lsqb;nodiscard&rsqb;&rsqb;
constexpr
xref:mp_units/utility/safe_int-07.adoc[safe&lowbar;int&lt;&sol;&ast; implementation-defined &ast;&sol;, ErrorPolicy&gt;]
xref:mp_units/utility/operator_mod-04.adoc[operator%](
    xref:mp_units/utility/safe_int-07.adoc[safe&lowbar;int] lhs,
    U rhs);
----

[.small]#xref:mp_units/utility/operator_mod-04.adoc[_» more&period;&period;&period;_]#

Computes the remainder of dividing `lhs` by `rhs&period;`


[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
&lsqb;&lsqb;nodiscard&rsqb;&rsqb;
constexpr
xref:mp_units/utility/safe_int-07.adoc[safe&lowbar;int&lt;&sol;&ast; implementation-defined &ast;&sol;, ErrorPolicy&gt;]
xref:mp_units/utility/operator_mod-0c.adoc[operator%](
    xref:mp_units/utility/safe_int-07.adoc[safe&lowbar;int] lhs,
    xref:mp_units/utility/safe_int-07.adoc[safe&lowbar;int] rhs);
----

[.small]#xref:mp_units/utility/operator_mod-0c.adoc[_» more&period;&period;&period;_]#

Computes the remainder of dividing a safe&lowbar;int by a constrained value


[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
&lsqb;&lsqb;nodiscard&rsqb;&rsqb;
constexpr
xref:mp_units/utility/safe_int-07.adoc[safe&lowbar;int&lt;&sol;&ast; implementation-defined &ast;&sol;, ErrorPolicy&gt;]
xref:mp_units/utility/operator_mod-06.adoc[operator%](
    xref:mp_units/utility/safe_int-07.adoc[safe&lowbar;int] lhs,
    xref:mp_units/utility/constrained.adoc[constrained&lt;U, CP&gt;] rhs);
----

[.small]#xref:mp_units/utility/operator_mod-06.adoc[_» more&period;&period;&period;_]#

Computes the remainder of dividing a constrained value by a safe&lowbar;int


[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
&lsqb;&lsqb;nodiscard&rsqb;&rsqb;
constexpr
xref:mp_units/utility/safe_int-07.adoc[safe&lowbar;int&lt;&sol;&ast; implementation-defined &ast;&sol;, ErrorPolicy&gt;]
xref:mp_units/utility/operator_mod-0e.adoc[operator%](
    xref:mp_units/utility/constrained.adoc[constrained&lt;U, CP&gt;] lhs,
    xref:mp_units/utility/safe_int-07.adoc[safe&lowbar;int] rhs);
----

[.small]#xref:mp_units/utility/operator_mod-0e.adoc[_» more&period;&period;&period;_]#

== Return Value

* the remainder, as a `safe&lowbar;int` of the promoted result type&semi; triggers `ErrorPolicy&colon;&colon;on&lowbar;overflow` on modulo by zero
* the remainder of `lhs &sol; rhs`&semi; triggers `ErrorPolicy&colon;&colon;on&lowbar;overflow` on modulo by zero
* the wrapped remainder 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&lowbar;int` divisor
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
