Files
mp-units/HEAD/api_reference/gen/qty.html
T

708 lines
282 KiB
HTML

<!DOCTYPE html><html lang='en'><head><title>[qty]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css2?family=Noto+Serif'/><link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css2?family=Noto+Sans'/><link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css2?family=Noto+Sans+Mono'/><link rel='icon' href='icon.png'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Normal'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='alternate stylesheet' type='text/css' href='normative-only.css' title='Notes and examples hidden'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:50pt'>5</a> Quantities and units library <a class='abbr_ref' href='index.html#quantities'>[quantities]</a></h1><h2 ><a class='secnum' style='min-width:65pt'>5.6</a> Quantity <a class='abbr_ref'>[qty]</a></h2><div id='general' class='section'><h3 ><a class='secnum' href='#general' style='min-width:80pt'>5.6.1</a> General <a class='abbr_ref' href='qty.general.html'>[qty.general]</a></h3><div class='para' id='general-1'><div class='marginalizedparent'><a class='marginalized' href='#general-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4063'>#</a></div><div class='texpara'><div id='general-1.sentence-1' class='sentence'>Subclause [qty] describes the class template <span class='texttt'>quantity</span>
that represents the value of a quantity (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=112-01-28">IEC 60050, 112-01-28</a>)
that is an element of a vector space (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=102-03-01,102-03-04">IEC 60050, 102-03-01,102-03-04</a>)<a class='hidden_link' href='#general-1.sentence-1'>.</a></div></div></div></div><div id='like' class='section'><h3 ><a class='secnum' href='#like' style='min-width:80pt'>5.6.2</a> Interoperability <a class='abbr_ref' href='qty.like.html'>[qty.like]</a></h3><div class='para' id='like-1'><div class='marginalizedparent'><a class='marginalized' href='#like-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4070'>#</a></div><div class='texpara'><div id='like-1.sentence-1' class='sentence'>The interfaces specified in this subclause and subclause <a href='qty.pt.like.html' title='5.7.3&emsp;Interoperability'>[qty.<span class='shy'></span>pt.<span class='shy'></span>like]</a>
are used by <span class='texttt'>quantity</span> and <span class='texttt'>quantity_<span class='shy'></span>point</span>
to specify conversions with other types representing quantities<a class='hidden_link' href='#like-1.sentence-1'>.</a></div> <div id='like-note-1' class='note'><div class='texpara'>[<i>Note&nbsp;<a href='#like-note-1'>1</a></i>:&ensp;<div id='like-1.sentence-2' class='sentence'><a href='qty.chrono.html' title='5.9&emsp;std&#x200b;::&#x200b;chrono interoperability'>[qty.<span class='shy'></span>chrono]</a> implements them for <span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>chrono<span class='operator'>&#x200b;::&#x200b;</span>duration</span> and <span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>chrono<span class='operator'>&#x200b;::&#x200b;</span>time_<span class='shy'></span>point</span><a class='hidden_link' href='#like-1.sentence-2'>.</a></div>&nbsp;<i>end note</i>]</div></div></div></div><div class='texpara'><div class='itemdecl' id='like-itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#like-itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T, <span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span><span class='anglebracket'>&gt;</span> <span class='keyword'>typename</span> Traits<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <span class='texttt'><i >qty-like-impl</i></span><a class='index' id='concept:qty-like-impl'></a> <span class='operator'>=</span> <span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='keyword'>const</span> T<span class='operator'>&amp;</span> qty, <span class='keyword'>const</span> Traits<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='operator'>::</span>rep<span class='operator'>&amp;</span> num<span class='parenthesis'>)</span> <span class='curlybracket'>{</span> <span class='comment'>// <i >exposition only</i></span>
<span class='curlybracket'>{</span> Traits<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='operator'>::</span>to_numerical_value<span class='parenthesis'>(</span>qty<span class='parenthesis'>)</span> <span class='curlybracket'>}</span> <span class='operator'>-</span><span class='anglebracket'>&gt;</span> std<span class='operator'>::</span>same_as<span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Traits<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>{</span> Traits<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='operator'>::</span>from_numerical_value<span class='parenthesis'>(</span>num<span class='parenthesis'>)</span> <span class='curlybracket'>}</span> <span class='operator'>-</span><span class='anglebracket'>&gt;</span> std<span class='operator'>::</span>same_as<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span>;
<span class='keyword'>requires</span> std<span class='operator'>::</span>same_as<span class='anglebracket'>&lt;</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span>Traits<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='operator'>::</span>explicit_import<span class='parenthesis'>)</span>, <span class='keyword'>const</span> <span class='keyword'>bool</span><span class='anglebracket'>&gt;</span>;
<span class='keyword'>requires</span> std<span class='operator'>::</span>same_as<span class='anglebracket'>&lt;</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span>Traits<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='operator'>::</span>explicit_export<span class='parenthesis'>)</span>, <span class='keyword'>const</span> <span class='keyword'>bool</span><span class='anglebracket'>&gt;</span>;
<span class='keyword'>typename</span> std<span class='operator'>::</span>bool_constant<span class='anglebracket'>&lt;</span>Traits<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='operator'>::</span>explicit_import<span class='anglebracket'>&gt;</span>;
<span class='keyword'>typename</span> std<span class='operator'>::</span>bool_constant<span class='anglebracket'>&lt;</span>Traits<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='operator'>::</span>explicit_export<span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <a class='hidden_link' href='#concept:QuantityLike' title='5.6.2&emsp;Interoperability&emsp;[qty.like]'><span id='concept:QuantityLike'><span id='lib:QuantityLike'><span class='texttt'>QuantityLike</span></span></span></a> <span class='operator'>=</span> <span class='operator'>!</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity'><span class='texttt'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <a class='index' id='conceptref:qty-like-impl'></a><span class='texttt'><i >qty-like-impl</i></span><span class='anglebracket'>&lt;</span>T, quantity_like_traits<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='keyword'>requires</span> <span class='curlybracket'>{</span>
<span class='keyword'>typename</span> quantity<span class='anglebracket'>&lt;</span>quantity_like_traits<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='operator'>::</span>reference, <span class='keyword'>typename</span> quantity_like_traits<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span>;
</code></div></div><div class='para' id='like-2'><div class='marginalizedparent'><a class='marginalized' href='#like-2'>2</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4095'>#</a></div><div class='texpara'><div id='like-2.sentence-1' class='sentence'>In the following descriptions, let
<ul class='itemize'><li id='like-2.1'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#like-2.1'>(2.1)</a></div><span class='texttt'>Traits</span> be <span class='texttt'>quantity_<span class='shy'></span>like_<span class='shy'></span>traits</span> or <span class='texttt'>quantity_<span class='shy'></span>point_<span class='shy'></span>like_<span class='shy'></span>traits</span>,</li><li id='like-2.2'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#like-2.2'>(2.2)</a></div><span class='texttt'>Q</span> be a type for which <span class='texttt'>Traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span></span> is specialized,</li><li id='like-2.3'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#like-2.3'>(2.3)</a></div><span class='texttt'>qty</span> be an lvalue of type <span class='texttt'><span class='keyword'>const</span> Q</span>, and</li><li id='like-2.4'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#like-2.4'>(2.4)</a></div><span class='texttt'>num</span> be an lvalue of type <span class='texttt'><span class='keyword'>const</span> Traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>&#x200b;::&#x200b;</span>rep</span><a class='hidden_link' href='#like-2.sentence-1'>.</a></li></ul></div></div></div><div class='para' id='like-3'><div class='marginalizedparent'><a class='marginalized' href='#like-3'>3</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4108'>#</a></div><div class='texpara'><div id='like-3.sentence-1' class='sentence'><span class='texttt'>Q</span> models <span class='texttt'><a class='index' id='conceptref:qty-like-impl_'></a><span class='texttt'><i >qty-like-impl</i></span><span class='anglebracket'>&lt;</span>Traits<span class='anglebracket'>&gt;</span></span> if and only if:
<ul class='itemize'><li id='like-3.1'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#like-3.1'>(3.1)</a></div><div class='texpara'><div id='like-3.1.sentence-1' class='sentence'><span class='texttt'>Traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>&#x200b;::&#x200b;</span>to_<span class='shy'></span>numerical_<span class='shy'></span>value<span class='parenthesis'>(</span>qty<span class='parenthesis'>)</span></span> returns the numerical value (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=112-01-29">IEC 60050, 112-01-29</a>) of <span class='texttt'>qty</span><a class='hidden_link' href='#like-3.1.sentence-1'>.</a></div></div></li><li id='like-3.2'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#like-3.2'>(3.2)</a></div><div class='texpara'><div id='like-3.2.sentence-1' class='sentence'><span class='texttt'>Traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>&#x200b;::&#x200b;</span>from_<span class='shy'></span>numerical_<span class='shy'></span>value<span class='parenthesis'>(</span>num<span class='parenthesis'>)</span></span> returns a <span class='texttt'>Q</span> with numerical value <span class='texttt'>num</span><a class='hidden_link' href='#like-3.2.sentence-1'>.</a></div></div></li><li id='like-3.3'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#like-3.3'>(3.3)</a></div><div class='texpara'><div id='like-3.3.sentence-1' class='sentence'>If <span class='texttt'>Traits</span> is <span class='texttt'>quantity_<span class='shy'></span>point_<span class='shy'></span>like_<span class='shy'></span>traits</span>,
both numerical values are offset from <span class='texttt'>Traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>&#x200b;::&#x200b;</span>point_<span class='shy'></span>origin</span><a class='hidden_link' href='#like-3.3.sentence-1'>.</a></div></div></li></ul></div></div></div><div class='para' id='like-4'><div class='marginalizedparent'><a class='marginalized' href='#like-4'>4</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4120'>#</a></div><div class='texpara'><div id='like-4.sentence-1' class='sentence'>If the following expression is <span class='texttt'><span class='literal'>true</span></span>, the specified conversion will be explicit<a class='hidden_link' href='#like-4.sentence-1'>.</a></div> <ul class='itemize'><li id='like-4.1'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#like-4.1'>(4.1)</a></div><div class='texpara'><div id='like-4.1.sentence-1' class='sentence'><span class='texttt'>Traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>&#x200b;::&#x200b;</span>explicit_<span class='shy'></span>import</span> for the conversion from <span class='texttt'>Q</span> to this library's type<a class='hidden_link' href='#like-4.1.sentence-1'>.</a></div></div></li><li id='like-4.2'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#like-4.2'>(4.2)</a></div><div class='texpara'><div id='like-4.2.sentence-1' class='sentence'><span class='texttt'>Traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>&#x200b;::&#x200b;</span>explicit_<span class='shy'></span>export</span> for the conversion from this library's type to <span class='texttt'>Q</span><a class='hidden_link' href='#like-4.2.sentence-1'>.</a></div></div></li></ul></div></div></div><div id='syn' class='section'><h3 ><a class='secnum' href='#syn' style='min-width:80pt'>5.6.3</a> Class template <span class='texttt'>quantity</span> <a class='abbr_ref' href='qty.syn.html'>[qty.syn]</a></h3><div class='texpara'><span class='codeblock'><span class='keyword'>namespace</span> mp_units <span class='curlybracket'>{</span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <a class='hidden_link' href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='concept:Quantity'><span id='lib:Quantity'><span class='tcode_in_codeblock'>Quantity</span></span></span></a> <span class='operator'>=</span> <span class='parenthesis'>(</span><i >is-derived-from-specialization-of</i><span class='anglebracket'>&lt;</span>T, quantity<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>; <span class='comment'>// <i >exposition only</i></span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Q, <span class='keyword'>auto</span> QS<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <a class='hidden_link' href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='concept:QuantityOf'><span id='lib:QuantityOf'><span class='tcode_in_codeblock'>QuantityOf</span></span></span></a> <span class='operator'>=</span> <span class='comment'>// <i >exposition only</i></span>
<a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_'><span class='tcode_in_codeblock'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <a href='qty.spec.concepts.html#concept:QuantitySpecOf' title='5.4.3.2&emsp;Concepts&emsp;[qty.spec.concepts]'><span id='conceptref:QuantitySpecOf'><span class='tcode_in_codeblock'>QuantitySpecOf</span></span></a><span class='anglebracket'>&lt;</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>quantity_spec<span class='parenthesis'>)</span><span class='parenthesis'>)</span>, QS<span class='anglebracket'>&gt;</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4&emsp;Concepts&emsp;[qty.unit.concepts]'><span id='conceptref:Unit'><span class='tcode_in_codeblock'>Unit</span></span></a> UFrom, <a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4&emsp;Concepts&emsp;[qty.unit.concepts]'><span id='conceptref:Unit_'><span class='tcode_in_codeblock'>Unit</span></span></a> UTo<span class='anglebracket'>&gt;</span>
<span class='keyword'>consteval</span> <span class='keyword'>bool</span> <i >integral-conversion-factor</i><span class='parenthesis'>(</span>UFrom from, UTo to<span class='parenthesis'>)</span> <span class='comment'>// <i >exposition only</i></span>
<span class='curlybracket'>{</span>
<span class='keyword'>return</span> <i >is-integral</i><span class='parenthesis'>(</span><i >get-canonical-unit</i><span class='parenthesis'>(</span>from<span class='parenthesis'>)</span><span class='operator'>.</span>mag <span class='operator'>/</span> <i >get-canonical-unit</i><span class='parenthesis'>(</span>to<span class='parenthesis'>)</span><span class='operator'>.</span>mag<span class='parenthesis'>)</span>;
<span class='curlybracket'>}</span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <i >IsFloatingPoint</i><a class='index' id='concept:IsFloatingPoint'></a> <span class='operator'>=</span> treat_as_floating_point<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span>; <span class='comment'>// <i >exposition only</i></span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> FromRep, <span class='keyword'>typename</span> ToRep, <span class='keyword'>auto</span> FromUnit <span class='operator'>=</span> one, <span class='keyword'>auto</span> ToUnit <span class='operator'>=</span> one<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <i >ValuePreservingTo</i><a class='index' id='concept:ValuePreservingTo'></a> <span class='operator'>=</span> <span class='comment'>// <i >exposition only</i></span>
<a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation'><span class='tcode_in_codeblock'>Representation</span></span></a><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FromRep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation_'><span class='tcode_in_codeblock'>Representation</span></span></a><span class='anglebracket'>&lt;</span>ToRep<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4&emsp;Concepts&emsp;[qty.unit.concepts]'><span id='conceptref:Unit__'><span class='tcode_in_codeblock'>Unit</span></span></a><span class='anglebracket'>&lt;</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span>FromUnit<span class='parenthesis'>)</span><span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4&emsp;Concepts&emsp;[qty.unit.concepts]'><span id='conceptref:Unit___'><span class='tcode_in_codeblock'>Unit</span></span></a><span class='anglebracket'>&lt;</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span>ToUnit<span class='parenthesis'>)</span><span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> std<span class='operator'>::</span>assignable_from<span class='anglebracket'>&lt;</span>ToRep<span class='operator'>&amp;</span>, FromRep<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<span class='parenthesis'>(</span><i >IsFloatingPoint</i><span class='anglebracket'>&lt;</span>ToRep<span class='anglebracket'>&gt;</span> <span class='operator'>|</span><span class='operator'>|</span> <span class='parenthesis'>(</span><span class='operator'>!</span><a class='index' id='conceptref:IsFloatingPoint'></a><i >IsFloatingPoint</i><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FromRep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<span class='parenthesis'>(</span><i >integral-conversion-factor</i><span class='parenthesis'>(</span>FromUnit, ToUnit<span class='parenthesis'>)</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> QFrom, <span class='keyword'>typename</span> QTo<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <i >QuantityConvertibleTo</i><a class='index' id='concept:QuantityConvertibleTo'></a> <span class='operator'>=</span> <span class='comment'>// <i >exposition only</i></span>
<a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity__'><span class='tcode_in_codeblock'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>QFrom<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity___'><span class='tcode_in_codeblock'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>QTo<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:QuantitySpecConvertibleTo'></a><i >QuantitySpecConvertibleTo</i><span class='anglebracket'>&lt;</span>QFrom<span class='operator'>::</span>quantity_spec, QTo<span class='operator'>::</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:UnitConvertibleTo'></a><i >UnitConvertibleTo</i><span class='anglebracket'>&lt;</span>QFrom<span class='operator'>::</span>unit, QTo<span class='operator'>::</span>unit<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<i >ValuePreservingTo</i><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> QFrom<span class='operator'>::</span>rep, <span class='keyword'>typename</span> QTo<span class='operator'>::</span>rep, QFrom<span class='operator'>::</span>unit, QTo<span class='operator'>::</span>unit<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>QFrom q<span class='parenthesis'>)</span> <span class='curlybracket'>{</span> <i >sudo-cast</i><span class='anglebracket'>&lt;</span>QTo<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span>; <span class='curlybracket'>}</span>; <span class='comment'>// see <a href='#non.mem.conv' title='5.6.15&emsp;Non-member conversions'>[qty.<span class='shy'></span>non.<span class='shy'></span>mem.<span class='shy'></span>conv]</a></span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>auto</span> QS, <span class='keyword'>typename</span> Func, <span class='keyword'>typename</span> T, <span class='keyword'>typename</span> U<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <i >InvokeResultOf</i><a class='index' id='concept:InvokeResultOf'></a> <span class='operator'>=</span> <span class='comment'>// <i >exposition only</i></span>
<a href='qty.spec.concepts.html#concept:QuantitySpec' title='5.4.3.2&emsp;Concepts&emsp;[qty.spec.concepts]'><span id='conceptref:QuantitySpec'><span class='tcode_in_codeblock'>QuantitySpec</span></span></a><span class='anglebracket'>&lt;</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span>QS<span class='parenthesis'>)</span><span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> std<span class='operator'>::</span>regular_invocable<span class='anglebracket'>&lt;</span>Func, T, U<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>invoke_result_t<span class='anglebracket'>&lt;</span>Func, T, U<span class='anglebracket'>&gt;</span>, QS<span class='anglebracket'>&gt;</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Func, <span class='keyword'>typename</span> Q1, <span class='keyword'>typename</span> Q2,
<span class='keyword'>auto</span> QS <span class='operator'>=</span> std<span class='operator'>::</span>invoke_result_t<span class='anglebracket'>&lt;</span>Func, <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>(</span>Q1<span class='operator'>::</span>quantity_spec<span class='parenthesis'>)</span><span class='parenthesis'>)</span>,
<span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>(</span>Q2<span class='operator'>::</span>quantity_spec<span class='parenthesis'>)</span><span class='parenthesis'>)</span><span class='anglebracket'>&gt;</span><span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <i >InvocableQuantities</i><a class='index' id='concept:InvocableQuantities'></a> <span class='operator'>=</span> <span class='comment'>// <i >exposition only</i></span>
<a href='qty.spec.concepts.html#concept:QuantitySpec' title='5.4.3.2&emsp;Concepts&emsp;[qty.spec.concepts]'><span id='conceptref:QuantitySpec_'><span class='tcode_in_codeblock'>QuantitySpec</span></span></a><span class='anglebracket'>&lt;</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span>QS<span class='parenthesis'>)</span><span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity____'><span class='tcode_in_codeblock'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>Q1<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_____'><span class='tcode_in_codeblock'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>Q2<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf'></a><i >InvokeResultOf</i><span class='anglebracket'>&lt;</span>QS, Func, <span class='keyword'>typename</span> Q1<span class='operator'>::</span>rep, <span class='keyword'>typename</span> Q2<span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>auto</span> R1, <span class='keyword'>auto</span> R2<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <i >HaveCommonReference</i><a class='index' id='concept:HaveCommonReference'></a> <span class='operator'>=</span> <span class='keyword'>requires</span> <span class='curlybracket'>{</span> get_common_reference<span class='parenthesis'>(</span>R1, R2<span class='parenthesis'>)</span>; <span class='curlybracket'>}</span>; <span class='comment'>// <i >exposition only</i></span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Func, Quantity Q1, Quantity Q2<span class='anglebracket'>&gt;</span>
<span class='keyword'>using</span> <i >common-quantity-for</i> <span class='operator'>=</span> <span class='comment'>// <i >exposition only</i></span>
quantity<span class='anglebracket'>&lt;</span>get_common_reference<span class='parenthesis'>(</span>Q1<span class='operator'>::</span>reference, Q2<span class='operator'>::</span>reference<span class='parenthesis'>)</span>,
std<span class='operator'>::</span>invoke_result_t<span class='anglebracket'>&lt;</span>Func, <span class='keyword'>typename</span> Q1<span class='operator'>::</span>rep, <span class='keyword'>typename</span> Q2<span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Func, <span class='keyword'>typename</span> Q1, <span class='keyword'>typename</span> Q2<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <i >CommonlyInvocableQuantities</i><a class='index' id='concept:CommonlyInvocableQuantities'></a> <span class='operator'>=</span> <span class='comment'>// <i >exposition only</i></span>
<a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity______'><span class='tcode_in_codeblock'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>Q1<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_______'><span class='tcode_in_codeblock'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>Q2<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <a class='index' id='conceptref:HaveCommonReference'></a><i >HaveCommonReference</i><span class='anglebracket'>&lt;</span>Q1<span class='operator'>::</span>reference, Q2<span class='operator'>::</span>reference<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
std<span class='operator'>::</span>convertible_to<span class='anglebracket'>&lt;</span>Q1, <i >common-quantity-for</i><span class='anglebracket'>&lt;</span>Func, Q1, Q2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
std<span class='operator'>::</span>convertible_to<span class='anglebracket'>&lt;</span>Q2, <i >common-quantity-for</i><span class='anglebracket'>&lt;</span>Func, Q1, Q2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvocableQuantities'></a><i >InvocableQuantities</i><span class='anglebracket'>&lt;</span>Func, Q1, Q2,
get_common_quantity_spec<span class='parenthesis'>(</span>Q1<span class='operator'>::</span>quantity_spec, Q2<span class='operator'>::</span>quantity_spec<span class='parenthesis'>)</span><span class='anglebracket'>&gt;</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>auto</span> R1, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep1, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <i >SameValueAs</i><a class='index' id='concept:SameValueAs'></a> <span class='operator'>=</span> <span class='comment'>// <i >exposition only</i></span>
<span class='parenthesis'>(</span>equivalent<span class='parenthesis'>(</span>get_unit<span class='parenthesis'>(</span>R1<span class='parenthesis'>)</span>, get_unit<span class='parenthesis'>(</span>R2<span class='parenthesis'>)</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> std<span class='operator'>::</span>convertible_to<span class='anglebracket'>&lt;</span>Rep1, Rep2<span class='anglebracket'>&gt;</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>using</span> <i >quantity-like-type</i> <span class='operator'>=</span> <span class='comment'>// <i >exposition only</i></span>
quantity<span class='anglebracket'>&lt;</span>quantity_like_traits<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='operator'>::</span>reference, <span class='keyword'>typename</span> quantity_like_traits<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T, <span class='keyword'>typename</span> U, <span class='keyword'>typename</span> TT <span class='operator'>=</span> std<span class='operator'>::</span>remove_reference_t<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <i >Mutable</i><a class='index' id='concept:Mutable'></a> <span class='operator'>=</span> <span class='parenthesis'>(</span><span class='operator'>!</span>std<span class='operator'>::</span>is_const_v<span class='anglebracket'>&lt;</span>TT<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>TT, U<span class='anglebracket'>&gt;</span>; <span class='comment'>// <i >exposition only</i></span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference'><span class='tcode_in_codeblock'>Reference</span></span></a> <span class='keyword'>auto</span> R, <a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf_'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>get_quantity_spec<span class='parenthesis'>(</span>R<span class='parenthesis'>)</span><span class='anglebracket'>&gt;</span> Rep <span class='operator'>=</span> <span class='keyword'>double</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>class</span> <span id='lib:quantity'><a class='hidden_link' href='#lib:quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'>quantity</a></span> <span class='curlybracket'>{</span>
<span class='keyword'>public</span><span class='operator'>:</span>
Rep <i >numerical-value</i>; <span class='comment'>// <i >exposition only</i></span>
<span class='comment'>// member types and values</span>
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference_'><span class='tcode_in_codeblock'>Reference</span></span></a> <span class='keyword'>auto</span> reference <span class='operator'>=</span> R;
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <a href='qty.spec.concepts.html#concept:QuantitySpec' title='5.4.3.2&emsp;Concepts&emsp;[qty.spec.concepts]'><span id='conceptref:QuantitySpec__'><span class='tcode_in_codeblock'>QuantitySpec</span></span></a> <span class='keyword'>auto</span> quantity_spec <span class='operator'>=</span> get_quantity_spec<span class='parenthesis'>(</span>reference<span class='parenthesis'>)</span>;
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <a href='qty.dim.concepts.html#concept:Dimension' title='5.4.2.2&emsp;Concepts&emsp;[qty.dim.concepts]'><span id='conceptref:Dimension'><span class='tcode_in_codeblock'>Dimension</span></span></a> <span class='keyword'>auto</span> dimension <span class='operator'>=</span> quantity_spec<span class='operator'>.</span>dimension;
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4&emsp;Concepts&emsp;[qty.unit.concepts]'><span id='conceptref:Unit____'><span class='tcode_in_codeblock'>Unit</span></span></a> <span class='keyword'>auto</span> unit <span class='operator'>=</span> get_unit<span class='parenthesis'>(</span>reference<span class='parenthesis'>)</span>;
<span class='keyword'>using</span> rep <span class='operator'>=</span> Rep;
<span class='comment'>// <a href='#static' title='5.6.4&emsp;Static member functions'>[qty.<span class='shy'></span>static]</a>, static member functions</span>
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> quantity zero<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> quantity one<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> quantity min<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> quantity max<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='comment'>// <a href='#cons' title='5.6.5&emsp;Constructors and assignment'>[qty.<span class='shy'></span>cons]</a>, constructors and assignment</span>
quantity<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='operator'>=</span> <span class='keyword'>default</span>;
quantity<span class='parenthesis'>(</span><span class='keyword'>const</span> quantity<span class='operator'>&amp;</span><span class='parenthesis'>)</span> <span class='operator'>=</span> <span class='keyword'>default</span>;
quantity<span class='parenthesis'>(</span>quantity<span class='operator'>&amp;</span><span class='operator'>&amp;</span><span class='parenthesis'>)</span> <span class='operator'>=</span> <span class='keyword'>default</span>;
<span class='operator'>~</span>quantity<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='operator'>=</span> <span class='keyword'>default</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> FwdValue, <a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference__'><span class='tcode_in_codeblock'>Reference</span></span></a> R2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:SameValueAs'></a><i >SameValueAs</i><span class='anglebracket'>&lt;</span>R2<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, R, std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FwdValue<span class='anglebracket'>&gt;</span>, Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> quantity<span class='parenthesis'>(</span>FwdValue<span class='operator'>&amp;</span><span class='operator'>&amp;</span> v, R2<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> FwdValue, <a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference___'><span class='tcode_in_codeblock'>Reference</span></span></a> R2, <span class='keyword'>typename</span> Value <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FwdValue<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span><a class='index' id='conceptref:SameValueAs_'></a><i >SameValueAs</i><span class='anglebracket'>&lt;</span>R2<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, R, Value, Rep<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:QuantityConvertibleTo'></a><i >QuantityConvertibleTo</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&lt;</span>R2<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, Value<span class='anglebracket'>&gt;</span>, quantity<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> quantity<span class='parenthesis'>(</span>FwdValue<span class='operator'>&amp;</span><span class='operator'>&amp;</span> v, R2<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:ValuePreservingTo'></a><i >ValuePreservingTo</i><span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span> FwdValue<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span>
<span class='keyword'>constexpr</span> quantity<span class='parenthesis'>(</span>FwdValue<span class='operator'>&amp;</span><span class='operator'>&amp;</span> v<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:QuantityConvertibleTo_'></a><i >QuantityConvertibleTo</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <span class='keyword'>explicit</span><span class='parenthesis'>(</span><i ><span class='texttt'>see below</span></i><span class='parenthesis'>)</span> quantity<span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='#concept:QuantityLike' title='5.6.2&emsp;Interoperability&emsp;[qty.like]'><span id='conceptref:QuantityLike'><span class='tcode_in_codeblock'>QuantityLike</span></span></a> Q<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantityConvertibleTo__'></a><i >QuantityConvertibleTo</i><span class='anglebracket'>&lt;</span><i >quantity-like-type</i><span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span>, quantity<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <span class='keyword'>explicit</span><span class='parenthesis'>(</span><i ><span class='texttt'>see below</span></i><span class='parenthesis'>)</span> quantity<span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>;
quantity<span class='operator'>&amp;</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='parenthesis'>(</span><span class='keyword'>const</span> quantity<span class='operator'>&amp;</span><span class='parenthesis'>)</span> <span class='operator'>=</span> <span class='keyword'>default</span>;
quantity<span class='operator'>&amp;</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='parenthesis'>(</span>quantity<span class='operator'>&amp;</span><span class='operator'>&amp;</span><span class='parenthesis'>)</span> <span class='operator'>=</span> <span class='keyword'>default</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:ValuePreservingTo_'></a><i >ValuePreservingTo</i><span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span> FwdValue<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span>
<span class='keyword'>constexpr</span> quantity<span class='operator'>&amp;</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='parenthesis'>(</span>FwdValue<span class='operator'>&amp;</span><span class='operator'>&amp;</span> v<span class='parenthesis'>)</span>;
<span class='comment'>// <a href='#conv' title='5.6.6&emsp;Conversions'>[qty.<span class='shy'></span>conv]</a>, conversions</span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:UnitCompatibleWith'></a><i >UnitCompatibleWith</i><span class='anglebracket'>&lt;</span>unit, quantity_spec<span class='anglebracket'>&gt;</span> ToU<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantityConvertibleTo___'></a><i >QuantityConvertibleTo</i><span class='anglebracket'>&lt;</span>quantity, quantity<span class='anglebracket'>&lt;</span><i >make-reference</i><span class='parenthesis'>(</span>quantity_spec, ToU<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span>, Rep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> in<span class='parenthesis'>(</span>ToU<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf__'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> ToRep<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantityConvertibleTo____'></a><i >QuantityConvertibleTo</i><span class='anglebracket'>&lt;</span>quantity, quantity<span class='anglebracket'>&lt;</span>reference, ToRep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf_'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> in<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf___'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> ToRep,
<a class='index' id='conceptref:UnitCompatibleWith_'></a><i >UnitCompatibleWith</i><span class='anglebracket'>&lt;</span>unit, quantity_spec<span class='anglebracket'>&gt;</span> ToU<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantityConvertibleTo_____'></a><i >QuantityConvertibleTo</i><span class='anglebracket'>&lt;</span>quantity,
quantity<span class='anglebracket'>&lt;</span><i >make-reference</i><span class='parenthesis'>(</span>quantity_spec, ToU<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span>, ToRep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf__'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> in<span class='parenthesis'>(</span>ToU<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:UnitCompatibleWith__'></a><i >UnitCompatibleWith</i><span class='anglebracket'>&lt;</span>unit, quantity_spec<span class='anglebracket'>&gt;</span> ToU<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='keyword'>const</span> quantity q<span class='parenthesis'>)</span> <span class='curlybracket'>{</span> value_cast<span class='anglebracket'>&lt;</span>ToU<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span>; <span class='curlybracket'>}</span>
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf___'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> force_in<span class='parenthesis'>(</span>ToU<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf____'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> ToRep<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='keyword'>const</span> quantity q<span class='parenthesis'>)</span> <span class='curlybracket'>{</span> value_cast<span class='anglebracket'>&lt;</span>ToRep<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span>; <span class='curlybracket'>}</span>
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf____'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> force_in<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf_____'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> ToRep,
<a class='index' id='conceptref:UnitCompatibleWith___'></a><i >UnitCompatibleWith</i><span class='anglebracket'>&lt;</span>unit, quantity_spec<span class='anglebracket'>&gt;</span> ToU<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='keyword'>const</span> quantity q<span class='parenthesis'>)</span> <span class='curlybracket'>{</span> value_cast<span class='anglebracket'>&lt;</span>ToU<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, ToRep<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span>; <span class='curlybracket'>}</span>
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf_____'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> force_in<span class='parenthesis'>(</span>ToU<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
<span class='comment'>// <a href='#obs' title='5.6.7&emsp;Numerical value observers'>[qty.<span class='shy'></span>obs]</a>, numerical value observers</span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4&emsp;Concepts&emsp;[qty.unit.concepts]'><span id='conceptref:Unit_____'><span class='tcode_in_codeblock'>Unit</span></span></a> U<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>equivalent<span class='parenthesis'>(</span>U<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, unit<span class='parenthesis'>)</span><span class='parenthesis'>)</span>
<span class='keyword'>constexpr</span> rep<span class='operator'>&amp;</span> numerical_value_ref_in<span class='parenthesis'>(</span>U<span class='parenthesis'>)</span> <span class='operator'>&amp;</span> <span class='keyword'>noexcept</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4&emsp;Concepts&emsp;[qty.unit.concepts]'><span id='conceptref:Unit______'><span class='tcode_in_codeblock'>Unit</span></span></a> U<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>equivalent<span class='parenthesis'>(</span>U<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, unit<span class='parenthesis'>)</span><span class='parenthesis'>)</span>
<span class='keyword'>constexpr</span> <span class='keyword'>const</span> rep<span class='operator'>&amp;</span> numerical_value_ref_in<span class='parenthesis'>(</span>U<span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='operator'>&amp;</span> <span class='keyword'>noexcept</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4&emsp;Concepts&emsp;[qty.unit.concepts]'><span id='conceptref:Unit_______'><span class='tcode_in_codeblock'>Unit</span></span></a> U<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>equivalent<span class='parenthesis'>(</span>U<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, unit<span class='parenthesis'>)</span><span class='parenthesis'>)</span>
<span class='keyword'>void</span> numerical_value_ref_in<span class='parenthesis'>(</span>U<span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='operator'>=</span> <span class='keyword'>delete</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:UnitCompatibleWith____'></a><i >UnitCompatibleWith</i><span class='anglebracket'>&lt;</span>unit, quantity_spec<span class='anglebracket'>&gt;</span> U<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantityConvertibleTo______'></a><i >QuantityConvertibleTo</i><span class='anglebracket'>&lt;</span>quantity, quantity<span class='anglebracket'>&lt;</span><i >make-reference</i><span class='parenthesis'>(</span>quantity_spec, U<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span>, Rep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> rep numerical_value_in<span class='parenthesis'>(</span>U<span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='keyword'>noexcept</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:UnitCompatibleWith_____'></a><i >UnitCompatibleWith</i><span class='anglebracket'>&lt;</span>unit, quantity_spec<span class='anglebracket'>&gt;</span> U<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='keyword'>const</span> quantity q<span class='parenthesis'>)</span> <span class='curlybracket'>{</span> value_cast<span class='anglebracket'>&lt;</span>U<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span>; <span class='curlybracket'>}</span>
<span class='keyword'>constexpr</span> rep force_numerical_value_in<span class='parenthesis'>(</span>U<span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='keyword'>noexcept</span>;
<span class='comment'>// <a href='#conv.ops' title='5.6.8&emsp;Conversion operations'>[qty.<span class='shy'></span>conv.<span class='shy'></span>ops]</a>, conversion operations</span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> V_, std<span class='operator'>::</span>constructible_from<span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span> Value <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>V_<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span>
<span class='keyword'>explicit</span> <span class='keyword'>operator</span> V_<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='operator'>&amp;</span> <span class='keyword'>noexcept</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Q_, <a href='#concept:QuantityLike' title='5.6.2&emsp;Interoperability&emsp;[qty.like]'><span id='conceptref:QuantityLike_'><span class='tcode_in_codeblock'>QuantityLike</span></span></a> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>Q_<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantityConvertibleTo_______'></a><i >QuantityConvertibleTo</i><span class='anglebracket'>&lt;</span>quantity, <i >quantity-like-type</i><span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <span class='keyword'>explicit</span><span class='parenthesis'>(</span><i ><span class='texttt'>see below</span></i><span class='parenthesis'>)</span> <span class='keyword'>operator</span> Q_<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='keyword'>noexcept</span><span class='parenthesis'>(</span><i ><span class='texttt'>see below</span></i><span class='parenthesis'>)</span>;
<span class='comment'>// <a href='#unary.ops' title='5.6.9&emsp;Unary operations'>[qty.<span class='shy'></span>unary.<span class='shy'></span>ops]</a>, unary operations</span>
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf______'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf_______'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable'></a><i >Mutable</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q<span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='operator'>+</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable_'></a><i >Mutable</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q<span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='operator'>-</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf________'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='operator'>+</span><span class='parenthesis'>(</span><span class='keyword'>int</span><span class='parenthesis'>)</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf_________'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='keyword'>int</span><span class='parenthesis'>)</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='comment'>// <a href='#assign.ops' title='5.6.10&emsp;Compound assignment operations'>[qty.<span class='shy'></span>assign.<span class='shy'></span>ops]</a>, compound assignment operations</span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable__'></a><i >Mutable</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='operator'>=</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable___'></a><i >Mutable</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='operator'>=</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable____'></a><i >Mutable</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>%</span><span class='operator'>=</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable_____'></a><i >Mutable</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a class='index' id='conceptref:ValuePreservingTo__'></a><i >ValuePreservingTo</i><span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>*</span><span class='operator'>=</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable______'></a><i >Mutable</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a class='index' id='conceptref:ValuePreservingTo___'></a><i >ValuePreservingTo</i><span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>/</span><span class='operator'>=</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable_______'></a><i >Mutable</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf__________'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>dimensionless<span class='anglebracket'>&gt;</span> Q2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>*</span><span class='operator'>=</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Q2<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable________'></a><i >Mutable</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf___________'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>dimensionless<span class='anglebracket'>&gt;</span> Q2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>/</span><span class='operator'>=</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Q2<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='comment'>// <a href='#arith.ops' title='5.6.11&emsp;Arithmetic operations'>[qty.<span class='shy'></span>arith.<span class='shy'></span>ops]</a>, arithmetic operations</span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:CommonlyInvocableQuantities'></a><i >CommonlyInvocableQuantities</i><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>plus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, quantity, quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity________'><span class='tcode_in_codeblock'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:CommonlyInvocableQuantities_'></a><i >CommonlyInvocableQuantities</i><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>minus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, quantity, quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_________'><span class='tcode_in_codeblock'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span>treat_as_floating_point<span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='parenthesis'>(</span><span class='operator'>!</span>treat_as_floating_point<span class='anglebracket'>&lt;</span>Rep2<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:CommonlyInvocableQuantities__'></a><i >CommonlyInvocableQuantities</i><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>modulus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, quantity, quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity__________'><span class='tcode_in_codeblock'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>%</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation__'><span class='tcode_in_codeblock'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf_'></a><i >InvokeResultOf</i><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>plus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity___________'><span class='tcode_in_codeblock'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation___'><span class='tcode_in_codeblock'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf__'></a><i >InvokeResultOf</i><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>minus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity____________'><span class='tcode_in_codeblock'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation____'><span class='tcode_in_codeblock'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf___'></a><i >InvokeResultOf</i><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>modulus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_____________'><span class='tcode_in_codeblock'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>%</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation_____'><span class='tcode_in_codeblock'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf____'></a><i >InvokeResultOf</i><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>plus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity______________'><span class='tcode_in_codeblock'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Q<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation______'><span class='tcode_in_codeblock'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf_____'></a><i >InvokeResultOf</i><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>minus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_______________'><span class='tcode_in_codeblock'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Q<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation_______'><span class='tcode_in_codeblock'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf______'></a><i >InvokeResultOf</i><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>modulus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity________________'><span class='tcode_in_codeblock'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>%</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Q<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:InvocableQuantities_'></a><i >InvocableQuantities</i><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>multiplies<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, quantity, quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_________________'><span class='tcode_in_codeblock'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>*</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:InvocableQuantities__'></a><i >InvocableQuantities</i><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>divides<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, quantity, quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity__________________'><span class='tcode_in_codeblock'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>/</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>typename</span> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity___________________'><span class='tcode_in_codeblock'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference____'><span class='tcode_in_codeblock'>Reference</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf_______'></a><i >InvokeResultOf</i><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>multiplies<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf____________'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>*</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>typename</span> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity____________________'><span class='tcode_in_codeblock'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference_____'><span class='tcode_in_codeblock'>Reference</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf________'></a><i >InvokeResultOf</i><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>divides<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf_____________'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>/</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Value, std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_____________________'><span class='tcode_in_codeblock'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference______'><span class='tcode_in_codeblock'>Reference</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf_________'></a><i >InvokeResultOf</i><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>multiplies<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span>, Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf______________'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>*</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Q<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Value, std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity______________________'><span class='tcode_in_codeblock'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference_______'><span class='tcode_in_codeblock'>Reference</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf__________'></a><i >InvokeResultOf</i><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>divides<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span>, Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_______________________'><span class='tcode_in_codeblock'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>/</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&amp;</span>, <span class='keyword'>const</span> Q<span class='operator'>&amp;</span><span class='parenthesis'>)</span>;
<span class='comment'>// <a href='#cmp' title='5.6.12&emsp;Comparison'>[qty.<span class='shy'></span>cmp]</a>, comparison</span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='operator'>=</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='anglebracket'>&lt;</span><span class='operator'>=</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation________'><span class='tcode_in_codeblock'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='operator'>=</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation_________'><span class='tcode_in_codeblock'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='anglebracket'>&lt;</span><span class='operator'>=</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='comment'>// <a href='#val.cmp' title='5.6.13&emsp;Value comparison'>[qty.<span class='shy'></span>val.<span class='shy'></span>cmp]</a>, value comparison</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_eq_zero<span class='parenthesis'>(</span><span class='keyword'>const</span> quantity<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span> <span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_neq_zero<span class='parenthesis'>(</span><span class='keyword'>const</span> quantity<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span> <span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_lt_zero<span class='parenthesis'>(</span><span class='keyword'>const</span> quantity<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span> <span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_gt_zero<span class='parenthesis'>(</span><span class='keyword'>const</span> quantity<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span> <span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_lteq_zero<span class='parenthesis'>(</span><span class='keyword'>const</span> quantity<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span> <span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_gteq_zero<span class='parenthesis'>(</span><span class='keyword'>const</span> quantity<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span> <span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='curlybracket'>}</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation__________'><span class='tcode_in_codeblock'>Representation</span></span></a> Value, <a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference________'><span class='tcode_in_codeblock'>Reference</span></span></a> R<span class='anglebracket'>&gt;</span>
quantity<span class='parenthesis'>(</span>Value, R<span class='parenthesis'>)</span> <span class='operator'>-</span><span class='anglebracket'>&gt;</span> quantity<span class='anglebracket'>&lt;</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, Value<span class='anglebracket'>&gt;</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation___________'><span class='tcode_in_codeblock'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
quantity<span class='parenthesis'>(</span>Value<span class='parenthesis'>)</span> <span class='operator'>-</span><span class='anglebracket'>&gt;</span> quantity<span class='anglebracket'>&lt;</span>one, Value<span class='anglebracket'>&gt;</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='#concept:QuantityLike' title='5.6.2&emsp;Interoperability&emsp;[qty.like]'><span id='conceptref:QuantityLike__'><span class='tcode_in_codeblock'>QuantityLike</span></span></a> Q<span class='anglebracket'>&gt;</span>
<span class='keyword'>explicit</span><span class='parenthesis'>(</span>quantity_like_traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>::</span>explicit_import<span class='parenthesis'>)</span> quantity<span class='parenthesis'>(</span>Q<span class='parenthesis'>)</span>
<span class='operator'>-</span><span class='anglebracket'>&gt;</span> quantity<span class='anglebracket'>&lt;</span>quantity_like_traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>::</span>reference, <span class='keyword'>typename</span> quantity_like_traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span>
</span></div><div class='para' id='syn-1'><div class='marginalizedparent'><a class='marginalized' href='#syn-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4466'>#</a></div><div class='texpara'><div id='syn-1.sentence-1' class='sentence'><span class='texttt'>quantity<span class='anglebracket'>&lt;</span>R, Rep<span class='anglebracket'>&gt;</span></span> is a structural type (<a href="https://wg21.link/temp.paramterm.structural.type">N4971, [temp.param]</a>)
if <span class='texttt'>Rep</span> is a structural type<a class='hidden_link' href='#syn-1.sentence-1'>.</a></div></div></div></div><div id='static' class='section'><h3 ><a class='secnum' href='#static' style='min-width:80pt'>5.6.4</a> Static member functions <a class='abbr_ref' href='qty.static.html'>[qty.static]</a></h3><div class='texpara'><div id='lib:quantity,max'><div id='lib:max,quantity'><div id='lib:quantity,min'><div id='lib:min,quantity'><div id='lib:quantity,one'><div id='lib:one,quantity'><div id='lib:quantity,zero'><div id='lib:zero,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:zero,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>static</span> <span class='keyword'>constexpr</span> quantity zero<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> quantity one<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> quantity min<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> quantity max<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
</code></div></div></div></div></div></div></div></div></div></div><div class='para' id='static-1'><div class='marginalizedparent'><a class='marginalized' href='#static-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4488'>#</a></div><div class='texpara'><div id='static-1.sentence-1' class='sentence'>Let <i >F</i> be one of <span class='texttt'>zero</span>, <span class='texttt'>one</span>, <span class='texttt'>min</span>, and <span class='texttt'>max</span><a class='hidden_link' href='#static-1.sentence-1'>.</a></div></div></div></div><div class='para' id='static-2'><div class='marginalizedparent'><a class='marginalized' href='#static-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4491'>#</a></div><div class='texpara'><div id='static-2.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'><span class='curlybracket'>{</span>representation_<span class='shy'></span>values<span class='anglebracket'>&lt;</span>rep<span class='anglebracket'>&gt;</span><span class='operator'>&#x200b;::&#x200b;</span><i >F</i><span class='parenthesis'>(</span><span class='parenthesis'>)</span>, R<span class='curlybracket'>}</span></span><a class='hidden_link' href='#static-2.sentence-1'>.</a></div></div></div></div><div class='para' id='static-3'><div class='marginalizedparent'><a class='marginalized' href='#static-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4495'>#</a></div><div class='texpara'><div id='static-3.sentence-1' class='sentence'><i >Remarks</i>: The expression in the <span class='textsf'><i >requires-clause</i></span> is equivalent to:
<span class='codeblock'><span class='keyword'>requires</span> <span class='curlybracket'>{</span> representation_values<span class='anglebracket'>&lt;</span>rep<span class='anglebracket'>&gt;</span><span class='operator'>::</span><i >F</i><span class='parenthesis'>(</span><span class='parenthesis'>)</span>; <span class='curlybracket'>}</span>
</span></div></div></div></div></div><div id='cons' class='section'><h3 ><a class='secnum' href='#cons' style='min-width:80pt'>5.6.5</a> Constructors and assignment <a class='abbr_ref' href='qty.cons.html'>[qty.cons]</a></h3><div class='texpara'><div id='lib:quantity,constructor'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity,constructor'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> FwdValue, <a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference_________'><span class='texttt'>Reference</span></span></a> R2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:SameValueAs__'></a><span class='texttt'><i >SameValueAs</i></span><span class='anglebracket'>&lt;</span>R2<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, R, std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FwdValue<span class='anglebracket'>&gt;</span>, Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> quantity<span class='parenthesis'>(</span>FwdValue<span class='operator'>&amp;</span><span class='operator'>&amp;</span> v, R2<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:ValuePreservingTo____'></a><span class='texttt'><i >ValuePreservingTo</i></span><span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span> FwdValue<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span>
<span class='keyword'>constexpr</span> quantity<span class='parenthesis'>(</span>FwdValue<span class='operator'>&amp;</span><span class='operator'>&amp;</span> v<span class='parenthesis'>)</span>;
</code></div></div></div><div class='para' id='cons-1'><div class='marginalizedparent'><a class='marginalized' href='#cons-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4517'>#</a></div><div class='texpara'><div id='cons-1.sentence-1' class='sentence'><i >Effects</i>: Initializes <span class='texttt'><i >numerical-value</i></span> with <span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>forward<span class='anglebracket'>&lt;</span>FwdValue<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>v<span class='parenthesis'>)</span></span><a class='hidden_link' href='#cons-1.sentence-1'>.</a></div></div></div></div><div class='texpara'><div id='lib:quantity,constructor_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity,constructor_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> FwdValue, <a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference__________'><span class='texttt'>Reference</span></span></a> R2, <span class='keyword'>typename</span> Value <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FwdValue<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span><a class='index' id='conceptref:SameValueAs___'></a><span class='texttt'><i >SameValueAs</i></span><span class='anglebracket'>&lt;</span>R2<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, R, Value, Rep<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:QuantityConvertibleTo________'></a><span class='texttt'><i >QuantityConvertibleTo</i></span><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&lt;</span>R2<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, Value<span class='anglebracket'>&gt;</span>, quantity<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> quantity<span class='parenthesis'>(</span>FwdValue<span class='operator'>&amp;</span><span class='operator'>&amp;</span> v, R2<span class='parenthesis'>)</span>;
</code></div></div></div><div class='para' id='cons-2'><div class='marginalizedparent'><a class='marginalized' href='#cons-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4531'>#</a></div><div class='texpara'><div id='cons-2.sentence-1' class='sentence'><i >Effects</i>: Equivalent to
<span class='texttt'>quantity<span class='parenthesis'>(</span>quantity<span class='anglebracket'>&lt;</span>R2<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, Value<span class='anglebracket'>&gt;</span><span class='curlybracket'>{</span>std<span class='operator'>&#x200b;::&#x200b;</span>forward<span class='anglebracket'>&lt;</span>FwdValue<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>v<span class='parenthesis'>)</span>, R2<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span></span><a class='hidden_link' href='#cons-2.sentence-1'>.</a></div></div></div></div><div class='texpara'><div id='lib:quantity,constructor__'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity,constructor__'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:QuantityConvertibleTo_________'></a><span class='texttt'><i >QuantityConvertibleTo</i></span><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <span class='keyword'>explicit</span><span class='parenthesis'>(</span><span class='operator'>!</span>std<span class='operator'>::</span>convertible_to<span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Q<span class='operator'>::</span>rep, Rep<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> quantity<span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>;
</code></div></div></div><div class='para' id='cons-3'><div class='marginalizedparent'><a class='marginalized' href='#cons-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4544'>#</a></div><div class='texpara'><div id='cons-3.sentence-1' class='sentence'><i >Effects</i>: Equivalent to <span class='texttt'><span class='texttt'><i >sudo-cast</i></span><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span></span> (<a href='#non.mem.conv' title='5.6.15&emsp;Non-member conversions'>[qty.<span class='shy'></span>non.<span class='shy'></span>mem.<span class='shy'></span>conv]</a>)<a class='hidden_link' href='#cons-3.sentence-1'>.</a></div></div></div></div><div class='texpara'><div id='lib:quantity,constructor___'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity,constructor___'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='#concept:QuantityLike' title='5.6.2&emsp;Interoperability&emsp;[qty.like]'><span id='conceptref:QuantityLike___'><span class='texttt'>QuantityLike</span></span></a> Q<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantityConvertibleTo__________'></a><span class='texttt'><i >QuantityConvertibleTo</i></span><span class='anglebracket'>&lt;</span><span class='texttt'><i >quantity-like-type</i></span><span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span>, quantity<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <span class='keyword'>explicit</span><span class='parenthesis'>(</span><i ><span class='texttt'>see below</span></i><span class='parenthesis'>)</span> quantity<span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>;
</code></div></div></div><div class='para' id='cons-4'><div class='marginalizedparent'><a class='marginalized' href='#cons-4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4557'>#</a></div><div class='texpara'><div id='cons-4.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='codeblock'>quantity<span class='parenthesis'>(</span><span class='operator'>::</span>mp_units<span class='operator'>::</span>quantity<span class='curlybracket'>{</span>quantity_like_traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>::</span>to_numerical_value<span class='parenthesis'>(</span>q<span class='parenthesis'>)</span>,
quantity_like_traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>::</span>reference<span class='curlybracket'>}</span><span class='parenthesis'>)</span>
</span></div></div></div></div><div class='para' id='cons-5'><div class='marginalizedparent'><a class='marginalized' href='#cons-5'>5</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4565'>#</a></div><div class='texpara'><div id='cons-5.sentence-1' class='sentence'><i >Remarks</i>: The expression inside <span class='texttt'><span class='keyword'>explicit</span></span> is equivalent to:
<span class='codeblock'>quantity_like_traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>::</span>explicit_import <span class='operator'>|</span><span class='operator'>|</span>
<span class='operator'>!</span>std<span class='operator'>::</span>convertible_to<span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> quantity_like_traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>::</span>rep, Rep<span class='anglebracket'>&gt;</span>
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator='><div id='lib:operator=,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator=,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:ValuePreservingTo_____'></a><span class='texttt'><i >ValuePreservingTo</i></span><span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span> FwdValue<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span>
<span class='keyword'>constexpr</span> quantity<span class='operator'>&amp;</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='parenthesis'>(</span>FwdValue<span class='operator'>&amp;</span><span class='operator'>&amp;</span> v<span class='parenthesis'>)</span>;
</code></div></div></div></div><div class='para' id='cons-6'><div class='marginalizedparent'><a class='marginalized' href='#cons-6'>6</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4582'>#</a></div><div class='texpara'><div id='cons-6.sentence-1' class='sentence'><i >Effects</i>: Equivalent to <span class='texttt'><span class='texttt'><i >numerical-value</i></span> <span class='operator'>=</span> std<span class='operator'>&#x200b;::&#x200b;</span>forward<span class='anglebracket'>&lt;</span>FwdValue<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>v<span class='parenthesis'>)</span></span><a class='hidden_link' href='#cons-6.sentence-1'>.</a></div></div></div></div><div class='para' id='cons-7'><div class='marginalizedparent'><a class='marginalized' href='#cons-7'>7</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4586'>#</a></div><div class='texpara'><div id='cons-7.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'><span class='operator'>*</span><span class='keyword'>this</span></span><a class='hidden_link' href='#cons-7.sentence-1'>.</a></div></div></div></div></div><div id='conv' class='section'><h3 ><a class='secnum' href='#conv' style='min-width:80pt'>5.6.6</a> Conversions <a class='abbr_ref' href='qty.conv.html'>[qty.conv]</a></h3><div class='texpara'><div id='lib:quantity,in'><div id='lib:in,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:in,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:UnitCompatibleWith______'></a><span class='texttt'><i >UnitCompatibleWith</i></span><span class='anglebracket'>&lt;</span>unit, quantity_spec<span class='anglebracket'>&gt;</span> ToU<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantityConvertibleTo___________'></a><span class='texttt'><i >QuantityConvertibleTo</i></span><span class='anglebracket'>&lt;</span>quantity, quantity<span class='anglebracket'>&lt;</span><span class='texttt'><i >make-reference</i></span><span class='parenthesis'>(</span>quantity_spec, ToU<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span>, Rep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf_______________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> in<span class='parenthesis'>(</span>ToU<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
</code></div></div></div></div><div class='para' id='conv-1'><div class='marginalizedparent'><a class='marginalized' href='#conv-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4601'>#</a></div><div class='texpara'><div id='conv-1.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='texttt'><span class='keyword'>return</span> quantity<span class='anglebracket'>&lt;</span><span class='texttt'><i >make-reference</i></span><span class='parenthesis'>(</span>quantity_<span class='shy'></span>spec, ToU<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span>, Rep<span class='anglebracket'>&gt;</span><span class='curlybracket'>{</span><span class='operator'>*</span><span class='keyword'>this</span><span class='curlybracket'>}</span>;</span></div></div></div></div><div class='texpara'><div id='lib:quantity,in_'><div id='lib:in,quantity_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:in,quantity_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf______'><span class='texttt'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> ToRep<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantityConvertibleTo____________'></a><span class='texttt'><i >QuantityConvertibleTo</i></span><span class='anglebracket'>&lt;</span>quantity, quantity<span class='anglebracket'>&lt;</span>reference, ToRep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf________________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> in<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span>;
</code></div></div></div></div><div class='para' id='conv-2'><div class='marginalizedparent'><a class='marginalized' href='#conv-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4615'>#</a></div><div class='texpara'><div id='conv-2.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='texttt'><span class='keyword'>return</span> quantity<span class='anglebracket'>&lt;</span>reference, ToRep<span class='anglebracket'>&gt;</span><span class='curlybracket'>{</span><span class='operator'>*</span><span class='keyword'>this</span><span class='curlybracket'>}</span>;</span></div></div></div></div><div class='texpara'><div id='lib:quantity,in__'><div id='lib:in,quantity__'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:in,quantity__'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf_______'><span class='texttt'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> ToRep,
<a class='index' id='conceptref:UnitCompatibleWith_______'></a><span class='texttt'><i >UnitCompatibleWith</i></span><span class='anglebracket'>&lt;</span>unit, quantity_spec<span class='anglebracket'>&gt;</span> ToU<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantityConvertibleTo_____________'></a><span class='texttt'><i >QuantityConvertibleTo</i></span><span class='anglebracket'>&lt;</span>quantity,
quantity<span class='anglebracket'>&lt;</span><span class='texttt'><i >make-reference</i></span><span class='parenthesis'>(</span>quantity_spec, ToU<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span>, ToRep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf_________________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> in<span class='parenthesis'>(</span>ToU<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
</code></div></div></div></div><div class='para' id='conv-3'><div class='marginalizedparent'><a class='marginalized' href='#conv-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4631'>#</a></div><div class='texpara'><div id='conv-3.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='codeblock'><span class='keyword'>return</span> quantity<span class='anglebracket'>&lt;</span><i >make-reference</i><span class='parenthesis'>(</span>quantity_spec, ToU<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span>, ToRep<span class='anglebracket'>&gt;</span><span class='curlybracket'>{</span><span class='operator'>*</span><span class='keyword'>this</span><span class='curlybracket'>}</span>;
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,force_in'><div id='lib:force_in,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:force_in,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:UnitCompatibleWith________'></a><span class='texttt'><i >UnitCompatibleWith</i></span><span class='anglebracket'>&lt;</span>unit, quantity_spec<span class='anglebracket'>&gt;</span> ToU<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='keyword'>const</span> quantity q<span class='parenthesis'>)</span> <span class='curlybracket'>{</span> value_cast<span class='anglebracket'>&lt;</span>ToU<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span>; <span class='curlybracket'>}</span>
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf__________________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> force_in<span class='parenthesis'>(</span>ToU<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
</code></div></div></div></div><div class='para' id='conv-4'><div class='marginalizedparent'><a class='marginalized' href='#conv-4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4647'>#</a></div><div class='texpara'><div id='conv-4.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='texttt'><span class='keyword'>return</span> value_<span class='shy'></span>cast<span class='anglebracket'>&lt;</span>ToU<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span><span class='operator'>*</span><span class='keyword'>this</span><span class='parenthesis'>)</span>;</span></div></div></div></div><div class='texpara'><div id='lib:quantity,force_in_'><div id='lib:force_in,quantity_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:force_in,quantity_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf________'><span class='texttt'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> ToRep<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='keyword'>const</span> quantity q<span class='parenthesis'>)</span> <span class='curlybracket'>{</span> value_cast<span class='anglebracket'>&lt;</span>ToRep<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span>; <span class='curlybracket'>}</span>
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf___________________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> force_in<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span>;
</code></div></div></div></div><div class='para' id='conv-5'><div class='marginalizedparent'><a class='marginalized' href='#conv-5'>5</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4661'>#</a></div><div class='texpara'><div id='conv-5.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='texttt'><span class='keyword'>return</span> value_<span class='shy'></span>cast<span class='anglebracket'>&lt;</span>ToRep<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span><span class='operator'>*</span><span class='keyword'>this</span><span class='parenthesis'>)</span>;</span></div></div></div></div><div class='texpara'><div id='lib:quantity,force_in__'><div id='lib:force_in,quantity__'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:force_in,quantity__'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf_________'><span class='texttt'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> ToRep,
<a class='index' id='conceptref:UnitCompatibleWith_________'></a><span class='texttt'><i >UnitCompatibleWith</i></span><span class='anglebracket'>&lt;</span>unit, quantity_spec<span class='anglebracket'>&gt;</span> ToU<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='keyword'>const</span> quantity q<span class='parenthesis'>)</span> <span class='curlybracket'>{</span> value_cast<span class='anglebracket'>&lt;</span>ToU<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, ToRep<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span>; <span class='curlybracket'>}</span>
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf____________________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> force_in<span class='parenthesis'>(</span>ToU<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
</code></div></div></div></div><div class='para' id='conv-6'><div class='marginalizedparent'><a class='marginalized' href='#conv-6'>6</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4676'>#</a></div><div class='texpara'><div id='conv-6.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='texttt'><span class='keyword'>return</span> value_<span class='shy'></span>cast<span class='anglebracket'>&lt;</span>ToU<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, ToRep<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span><span class='operator'>*</span><span class='keyword'>this</span><span class='parenthesis'>)</span>;</span></div></div></div></div></div><div id='obs' class='section'><h3 ><a class='secnum' href='#obs' style='min-width:80pt'>5.6.7</a> Numerical value observers <a class='abbr_ref' href='qty.obs.html'>[qty.obs]</a></h3><div class='texpara'><div id='lib:quantity,numerical_value_ref_in'><div id='lib:numerical_value_ref_in,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:numerical_value_ref_in,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4&emsp;Concepts&emsp;[qty.unit.concepts]'><span id='conceptref:Unit________'><span class='texttt'>Unit</span></span></a> U<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>equivalent<span class='parenthesis'>(</span>U<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, unit<span class='parenthesis'>)</span><span class='parenthesis'>)</span>
<span class='keyword'>constexpr</span> rep<span class='operator'>&amp;</span> numerical_value_ref_in<span class='parenthesis'>(</span>U<span class='parenthesis'>)</span> <span class='operator'>&amp;</span> <span class='keyword'>noexcept</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4&emsp;Concepts&emsp;[qty.unit.concepts]'><span id='conceptref:Unit_________'><span class='texttt'>Unit</span></span></a> U<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>equivalent<span class='parenthesis'>(</span>U<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, unit<span class='parenthesis'>)</span><span class='parenthesis'>)</span>
<span class='keyword'>constexpr</span> <span class='keyword'>const</span> rep<span class='operator'>&amp;</span> numerical_value_ref_in<span class='parenthesis'>(</span>U<span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='operator'>&amp;</span> <span class='keyword'>noexcept</span>;
</code></div></div></div></div><div class='para' id='obs-1'><div class='marginalizedparent'><a class='marginalized' href='#obs-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4695'>#</a></div><div class='texpara'><div id='obs-1.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'><i >numerical-value</i></span><a class='hidden_link' href='#obs-1.sentence-1'>.</a></div></div></div></div><div class='texpara'><div id='lib:quantity,numerical_value_in'><div id='lib:numerical_value_in,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:numerical_value_in,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:UnitCompatibleWith__________'></a><span class='texttt'><i >UnitCompatibleWith</i></span><span class='anglebracket'>&lt;</span>unit, quantity_spec<span class='anglebracket'>&gt;</span> U<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantityConvertibleTo______________'></a><span class='texttt'><i >QuantityConvertibleTo</i></span><span class='anglebracket'>&lt;</span>quantity, quantity<span class='anglebracket'>&lt;</span><span class='texttt'><i >make-reference</i></span><span class='parenthesis'>(</span>quantity_spec, U<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span>, Rep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> rep numerical_value_in<span class='parenthesis'>(</span>U<span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='keyword'>noexcept</span>;
</code></div></div></div></div><div class='para' id='obs-2'><div class='marginalizedparent'><a class='marginalized' href='#obs-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4708'>#</a></div><div class='texpara'><div id='obs-2.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='texttt'><span class='keyword'>return</span> <span class='parenthesis'>(</span><span class='operator'>*</span><span class='keyword'>this</span><span class='parenthesis'>)</span><span class='operator'>.</span>in<span class='parenthesis'>(</span>U<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span><span class='operator'>.</span><span class='texttt'><i >numerical-value</i></span>;</span></div></div></div></div><div class='texpara'><div id='lib:quantity,force_numerical_value_in'><div id='lib:force_numerical_value_in,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:force_numerical_value_in,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:UnitCompatibleWith___________'></a><span class='texttt'><i >UnitCompatibleWith</i></span><span class='anglebracket'>&lt;</span>unit, quantity_spec<span class='anglebracket'>&gt;</span> U<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='keyword'>const</span> quantity q<span class='parenthesis'>)</span> <span class='curlybracket'>{</span> value_cast<span class='anglebracket'>&lt;</span>U<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span>; <span class='curlybracket'>}</span>
<span class='keyword'>constexpr</span> rep force_numerical_value_in<span class='parenthesis'>(</span>U<span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='keyword'>noexcept</span>;
</code></div></div></div></div><div class='para' id='obs-3'><div class='marginalizedparent'><a class='marginalized' href='#obs-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4722'>#</a></div><div class='texpara'><div id='obs-3.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='texttt'><span class='keyword'>return</span> <span class='parenthesis'>(</span><span class='operator'>*</span><span class='keyword'>this</span><span class='parenthesis'>)</span><span class='operator'>.</span>force_<span class='shy'></span>in<span class='parenthesis'>(</span>U<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span><span class='operator'>.</span><span class='texttt'><i >numerical-value</i></span>;</span></div></div></div></div></div><div id='conv.ops' class='section'><h3 ><a class='secnum' href='#conv.ops' style='min-width:80pt'>5.6.8</a> Conversion operations <a class='abbr_ref' href='qty.conv.ops.html'>[qty.conv.ops]</a></h3><div class='texpara'><div id='lib:quantity,operator_constructible_from<Rep>'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity,operator_constructible_from%3cRep%3e'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> V_, std<span class='operator'>::</span>constructible_from<span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span> Value <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>V_<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span>
<span class='keyword'>explicit</span> <span class='keyword'>operator</span> V_<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='operator'>&amp;</span> <span class='keyword'>noexcept</span>;
</code></div></div></div><div class='para' id='conv.ops-1'><div class='marginalizedparent'><a class='marginalized' href='#conv.ops-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4738'>#</a></div><div class='texpara'><div id='conv.ops-1.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'><i >numerical-value</i></span><a class='hidden_link' href='#conv.ops-1.sentence-1'>.</a></div></div></div></div><div class='texpara'><div id='lib:quantity,operator_QuantityLike'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity,operator_QuantityLike'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Q_, <a href='#concept:QuantityLike' title='5.6.2&emsp;Interoperability&emsp;[qty.like]'><span id='conceptref:QuantityLike____'><span class='texttt'>QuantityLike</span></span></a> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>Q_<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantityConvertibleTo_______________'></a><span class='texttt'><i >QuantityConvertibleTo</i></span><span class='anglebracket'>&lt;</span>quantity, <span class='texttt'><i >quantity-like-type</i></span><span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <span class='keyword'>explicit</span><span class='parenthesis'>(</span><i ><span class='texttt'>see below</span></i><span class='parenthesis'>)</span> <span class='keyword'>operator</span> Q_<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='keyword'>noexcept</span><span class='parenthesis'>(</span><i ><span class='texttt'>see below</span></i><span class='parenthesis'>)</span>;
</code></div></div></div><div class='para' id='conv.ops-2'><div class='marginalizedparent'><a class='marginalized' href='#conv.ops-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4751'>#</a></div><div class='texpara'><div id='conv.ops-2.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='codeblock'><span class='keyword'>return</span> quantity_like_traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>::</span>from_numerical_value<span class='parenthesis'>(</span>
numerical_value_in<span class='parenthesis'>(</span>get_unit<span class='parenthesis'>(</span>quantity_like_traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>::</span>reference<span class='parenthesis'>)</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
</span></div></div></div></div><div class='para' id='conv.ops-3'><div class='marginalizedparent'><a class='marginalized' href='#conv.ops-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4759'>#</a></div><div class='texpara'><div id='conv.ops-3.sentence-1' class='sentence'><i >Remarks</i>: The expression inside <span class='texttt'><span class='keyword'>explicit</span></span> is equivalent to:
<span class='codeblock'>quantity_like_traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>::</span>explicit_export <span class='operator'>|</span><span class='operator'>|</span>
<span class='operator'>!</span>std<span class='operator'>::</span>convertible_to<span class='anglebracket'>&lt;</span>Rep, <span class='keyword'>typename</span> quantity_like_traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span>
</span></div> <div id='conv.ops-3.sentence-2' class='sentence'>
The exception specification is equivalent to:
<span class='codeblock'><span class='keyword'>noexcept</span><span class='parenthesis'>(</span>quantity_like_traits<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='operator'>::</span>from_numerical_value<span class='parenthesis'>(</span><i >numerical-value</i><span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
std<span class='operator'>::</span>is_nothrow_copy_constructible_v<span class='anglebracket'>&lt;</span>rep<span class='anglebracket'>&gt;</span>
</span></div></div></div></div></div><div id='unary.ops' class='section'><h3 ><a class='secnum' href='#unary.ops' style='min-width:80pt'>5.6.9</a> Unary operations <a class='abbr_ref' href='qty.unary.ops.html'>[qty.unary.ops]</a></h3><div class='para' id='unary.ops-1'><div class='marginalizedparent'><a class='marginalized' href='#unary.ops-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4775'>#</a></div><div class='texpara'><div id='unary.ops-1.sentence-1' class='sentence'>In the following descriptions,
let <span class='texttt'>@</span> be the <span class='textsf'><i >operator</i></span><a class='hidden_link' href='#unary.ops-1.sentence-1'>.</a></div></div></div><div class='texpara'><div id='lib:quantity,operator-'><div id='lib:operator-,quantity'><div id='lib:quantity,operator+'><div id='lib:operator+,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator+,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf_____________________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf______________________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
</code></div></div></div></div></div></div><div class='para' id='unary.ops-2'><div class='marginalizedparent'><a class='marginalized' href='#unary.ops-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4789'>#</a></div><div class='texpara'><div id='unary.ops-2.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='texttt'><span class='keyword'>return</span> <span class='operator'>&#x200b;::&#x200b;</span>mp_<span class='shy'></span>units<span class='operator'>&#x200b;::&#x200b;</span>quantity<span class='curlybracket'>{</span>@<span class='texttt'><i >numerical-value</i></span>, reference<span class='curlybracket'>}</span>;</span></div></div></div></div><div class='para' id='unary.ops-3'><div class='marginalizedparent'><a class='marginalized' href='#unary.ops-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4794'>#</a></div><div class='texpara'><div id='unary.ops-3.sentence-1' class='sentence'><i >Remarks</i>: The expression in the <span class='textsf'><i >requires-clause</i></span> is equivalent to:
<span class='codeblock'><span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='keyword'>const</span> rep v<span class='parenthesis'>)</span> <span class='curlybracket'>{</span>
<span class='curlybracket'>{</span> @v <span class='curlybracket'>}</span> <span class='operator'>-</span><span class='anglebracket'>&gt;</span> std<span class='operator'>::</span>common_with<span class='anglebracket'>&lt;</span>rep<span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span>
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator--'><div id='lib:operator--,quantity'><div id='lib:quantity,operator++'><div id='lib:operator++,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator++,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable_________'></a><span class='texttt'><i >Mutable</i></span><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q<span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='operator'>+</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable__________'></a><span class='texttt'><i >Mutable</i></span><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q<span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='operator'>-</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
</code></div></div></div></div></div></div><div class='para' id='unary.ops-4'><div class='marginalizedparent'><a class='marginalized' href='#unary.ops-4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4816'>#</a></div><div class='texpara'><div id='unary.ops-4.sentence-1' class='sentence'><i >Effects</i>: Equivalent to
<span class='texttt'>@q<span class='operator'>.</span><span class='texttt'><i >numerical-value</i></span></span><a class='hidden_link' href='#unary.ops-4.sentence-1'>.</a></div></div></div></div><div class='para' id='unary.ops-5'><div class='marginalizedparent'><a class='marginalized' href='#unary.ops-5'>5</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4821'>#</a></div><div class='texpara'><div id='unary.ops-5.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>forward<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span></span><a class='hidden_link' href='#unary.ops-5.sentence-1'>.</a></div></div></div></div><div class='para' id='unary.ops-6'><div class='marginalizedparent'><a class='marginalized' href='#unary.ops-6'>6</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4825'>#</a></div><div class='texpara'><div id='unary.ops-6.sentence-1' class='sentence'><i >Remarks</i>: The expression in the <span class='textsf'><i >requires-clause</i></span> is equivalent to:
<span class='codeblock'><span class='keyword'>requires</span><span class='parenthesis'>(</span>rep<span class='operator'>&amp;</span> v<span class='parenthesis'>)</span> <span class='curlybracket'>{</span>
<span class='curlybracket'>{</span> @v <span class='curlybracket'>}</span> <span class='operator'>-</span><span class='anglebracket'>&gt;</span> std<span class='operator'>::</span>same_as<span class='anglebracket'>&lt;</span>rep<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span>
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator--_'><div id='lib:operator--,quantity_'><div id='lib:quantity,operator++_'><div id='lib:operator++,quantity_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator++,quantity_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf_______________________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='operator'>+</span><span class='parenthesis'>(</span><span class='keyword'>int</span><span class='parenthesis'>)</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf________________________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='keyword'>int</span><span class='parenthesis'>)</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
</code></div></div></div></div></div></div><div class='para' id='unary.ops-7'><div class='marginalizedparent'><a class='marginalized' href='#unary.ops-7'>7</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4845'>#</a></div><div class='texpara'><div id='unary.ops-7.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='texttt'><span class='keyword'>return</span> <span class='operator'>&#x200b;::&#x200b;</span>mp_<span class='shy'></span>units<span class='operator'>&#x200b;::&#x200b;</span>quantity<span class='curlybracket'>{</span><span class='texttt'><i >numerical-value</i></span>@, reference<span class='curlybracket'>}</span>;</span></div></div></div></div><div class='para' id='unary.ops-8'><div class='marginalizedparent'><a class='marginalized' href='#unary.ops-8'>8</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4850'>#</a></div><div class='texpara'><div id='unary.ops-8.sentence-1' class='sentence'><i >Remarks</i>: The expression in the <span class='textsf'><i >requires-clause</i></span> is equivalent to:
<span class='codeblock'><span class='keyword'>requires</span><span class='parenthesis'>(</span>rep<span class='operator'>&amp;</span> v<span class='parenthesis'>)</span> <span class='curlybracket'>{</span>
<span class='curlybracket'>{</span> v@ <span class='curlybracket'>}</span> <span class='operator'>-</span><span class='anglebracket'>&gt;</span> std<span class='operator'>::</span>common_with<span class='anglebracket'>&lt;</span>rep<span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span>
</span></div></div></div></div></div><div id='assign.ops' class='section'><h3 ><a class='secnum' href='#assign.ops' style='min-width:80pt'>5.6.10</a> Compound assignment operations <a class='abbr_ref' href='qty.assign.ops.html'>[qty.assign.ops]</a></h3><div class='para' id='assign.ops-1'><div class='marginalizedparent'><a class='marginalized' href='#assign.ops-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4862'>#</a></div><div class='texpara'><div id='assign.ops-1.sentence-1' class='sentence'>In the following descriptions,
let <span class='texttt'>@</span> be the <span class='textsf'><i >operator</i></span><a class='hidden_link' href='#assign.ops-1.sentence-1'>.</a></div></div></div><div class='texpara'><div id='lib:quantity,operator%='><div id='lib:operator%=,quantity'><div id='lib:quantity,operator-='><div id='lib:operator-=,quantity'><div id='lib:quantity,operator+='><div id='lib:operator+=,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator+=,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable___________'></a><span class='texttt'><i >Mutable</i></span><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='operator'>=</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable____________'></a><span class='texttt'><i >Mutable</i></span><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='operator'>=</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable_____________'></a><span class='texttt'><i >Mutable</i></span><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>%</span><span class='operator'>=</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
</code></div></div></div></div></div></div></div></div><div class='para' id='assign.ops-2'><div class='marginalizedparent'><a class='marginalized' href='#assign.ops-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4882'>#</a></div><div class='texpara'><div id='assign.ops-2.sentence-1' class='sentence'><i >Preconditions</i>: If <span class='texttt'>@</span> is <span class='texttt'><span class='operator'>%</span><span class='operator'>=</span></span>, then <span class='texttt'>is_<span class='shy'></span>neq_<span class='shy'></span>zero<span class='parenthesis'>(</span>rhs<span class='parenthesis'>)</span></span> is <span class='texttt'><span class='literal'>true</span></span><a class='hidden_link' href='#assign.ops-2.sentence-1'>.</a></div></div></div></div><div class='para' id='assign.ops-3'><div class='marginalizedparent'><a class='marginalized' href='#assign.ops-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4886'>#</a></div><div class='texpara'><div id='assign.ops-3.sentence-1' class='sentence'><i >Effects</i>: Equivalent to
<span class='texttt'>lhs<span class='operator'>.</span><span class='texttt'><i >numerical-value</i></span> @ rhs<span class='operator'>.</span>in<span class='parenthesis'>(</span>lhs<span class='operator'>.</span>unit<span class='parenthesis'>)</span><span class='operator'>.</span><span class='texttt'><i >numerical-value</i></span></span><a class='hidden_link' href='#assign.ops-3.sentence-1'>.</a></div></div></div></div><div class='para' id='assign.ops-4'><div class='marginalizedparent'><a class='marginalized' href='#assign.ops-4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4891'>#</a></div><div class='texpara'><div id='assign.ops-4.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>forward<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>lhs<span class='parenthesis'>)</span></span><a class='hidden_link' href='#assign.ops-4.sentence-1'>.</a></div></div></div></div><div class='para' id='assign.ops-5'><div class='marginalizedparent'><a class='marginalized' href='#assign.ops-5'>5</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4895'>#</a></div><div class='texpara'><div id='assign.ops-5.sentence-1' class='sentence'><i >Remarks</i>: Let <i >C</i> be
<ul class='itemize'><li id='assign.ops-5.1'><div class='marginalizedparent' style='left:-39mm'><a class='marginalized' href='#assign.ops-5.1'>(5.1)</a></div><span class='texttt'><span class='parenthesis'>(</span><span class='operator'>!</span>treat_<span class='shy'></span>as_<span class='shy'></span>floating_<span class='shy'></span>point<span class='anglebracket'>&lt;</span>rep<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span></span> if <span class='texttt'>@</span> is <span class='texttt'><span class='operator'>%</span><span class='operator'>=</span></span>, and</li><li id='assign.ops-5.2'><div class='marginalizedparent' style='left:-39mm'><a class='marginalized' href='#assign.ops-5.2'>(5.2)</a></div><span class='texttt'><span class='literal'>true</span></span> otherwise<a class='hidden_link' href='#assign.ops-5.sentence-1'>.</a></li></ul></div> <div id='assign.ops-5.sentence-2' class='sentence'>
The expression in the <span class='textsf'><i >requires-clause</i></span> is equivalent to:
<span class='codeblock'><a class='index' id='conceptref:QuantityConvertibleTo________________'></a><i >QuantityConvertibleTo</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span>, quantity<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <i >C</i> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>rep<span class='operator'>&amp;</span> a, <span class='keyword'>const</span> Rep2 b<span class='parenthesis'>)</span> <span class='curlybracket'>{</span>
<span class='curlybracket'>{</span> a @ b <span class='curlybracket'>}</span> <span class='operator'>-</span><span class='anglebracket'>&gt;</span> std<span class='operator'>::</span>same_as<span class='anglebracket'>&lt;</span>rep<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span>
</span></div></div></div></div><div class='para' id='assign.ops-6'><div class='marginalizedparent'><a class='marginalized' href='#assign.ops-6'>6</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4912'>#</a></div><div class='texpara'><div id='assign.ops-6.sentence-1' class='sentence'><i >Recommended practice</i>: If <span class='texttt'>equivalent<span class='parenthesis'>(</span>unit, get_<span class='shy'></span>unit<span class='parenthesis'>(</span>rhs<span class='operator'>.</span>reference<span class='parenthesis'>)</span><span class='parenthesis'>)</span></span> is <span class='texttt'><span class='literal'>true</span></span>,
then the expression <span class='texttt'>rhs<span class='operator'>.</span>in<span class='parenthesis'>(</span>lhs<span class='operator'>.</span>unit<span class='parenthesis'>)</span></span> is replaced with <span class='texttt'>rhs</span><a class='hidden_link' href='#assign.ops-6.sentence-1'>.</a></div></div></div></div><div class='texpara'><div id='lib:quantity,operator/='><div id='lib:operator/=,quantity'><div id='lib:quantity,operator*='><div id='lib:operator*=,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator*=,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable______________'></a><span class='texttt'><i >Mutable</i></span><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a class='index' id='conceptref:ValuePreservingTo______'></a><span class='texttt'><i >ValuePreservingTo</i></span><span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>*</span><span class='operator'>=</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable_______________'></a><span class='texttt'><i >Mutable</i></span><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a class='index' id='conceptref:ValuePreservingTo_______'></a><span class='texttt'><i >ValuePreservingTo</i></span><span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>/</span><span class='operator'>=</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
</code></div></div></div></div></div></div><div class='para' id='assign.ops-7'><div class='marginalizedparent'><a class='marginalized' href='#assign.ops-7'>7</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4930'>#</a></div><div class='texpara'><div id='assign.ops-7.sentence-1' class='sentence'><i >Preconditions</i>: If <span class='texttt'>@</span> is <span class='texttt'><span class='operator'>/</span><span class='operator'>=</span></span>, then <span class='texttt'>rhs <span class='operator'>!</span><span class='operator'>=</span> representation_<span class='shy'></span>values<span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='operator'>&#x200b;::&#x200b;</span>zero<span class='parenthesis'>(</span><span class='parenthesis'>)</span></span> is <span class='texttt'><span class='literal'>true</span></span><a class='hidden_link' href='#assign.ops-7.sentence-1'>.</a></div></div></div></div><div class='para' id='assign.ops-8'><div class='marginalizedparent'><a class='marginalized' href='#assign.ops-8'>8</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4934'>#</a></div><div class='texpara'><div id='assign.ops-8.sentence-1' class='sentence'><i >Effects</i>: Equivalent to
<span class='texttt'>lhs<span class='operator'>.</span><span class='texttt'><i >numerical-value</i></span> @ rhs</span><a class='hidden_link' href='#assign.ops-8.sentence-1'>.</a></div></div></div></div><div class='para' id='assign.ops-9'><div class='marginalizedparent'><a class='marginalized' href='#assign.ops-9'>9</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4939'>#</a></div><div class='texpara'><div id='assign.ops-9.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>forward<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>lhs<span class='parenthesis'>)</span></span><a class='hidden_link' href='#assign.ops-9.sentence-1'>.</a></div></div></div></div><div class='para' id='assign.ops-10'><div class='marginalizedparent'><a class='marginalized' href='#assign.ops-10'>10</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4943'>#</a></div><div class='texpara'><div id='assign.ops-10.sentence-1' class='sentence'><i >Remarks</i>: The expression in the <span class='textsf'><i >requires-clause</i></span> is equivalent to:
<span class='codeblock'><span class='parenthesis'>(</span><span class='operator'>!</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity________________________'><span class='tcode_in_codeblock'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='keyword'>requires</span><span class='parenthesis'>(</span>rep<span class='operator'>&amp;</span> a, <span class='keyword'>const</span> Value b<span class='parenthesis'>)</span> <span class='curlybracket'>{</span>
<span class='curlybracket'>{</span> a @ b <span class='curlybracket'>}</span> <span class='operator'>-</span><span class='anglebracket'>&gt;</span> std<span class='operator'>::</span>same_as<span class='anglebracket'>&lt;</span>rep<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span>
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator/=_'><div id='lib:operator/=,quantity_'><div id='lib:quantity,operator*=_'><div id='lib:operator*=,quantity_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator*=,quantity_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable________________'></a><span class='texttt'><i >Mutable</i></span><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf_________________________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>dimensionless<span class='anglebracket'>&gt;</span> Q2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>*</span><span class='operator'>=</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Q2<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a class='index' id='conceptref:Mutable_________________'></a><span class='texttt'><i >Mutable</i></span><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf__________________________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>dimensionless<span class='anglebracket'>&gt;</span> Q2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>)</span> <span class='keyword'>operator</span><span class='operator'>/</span><span class='operator'>=</span><span class='parenthesis'>(</span>Q<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Q2<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
</code></div></div></div></div></div></div><div class='para' id='assign.ops-11'><div class='marginalizedparent'><a class='marginalized' href='#assign.ops-11'>11</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4965'>#</a></div><div class='texpara'><div id='assign.ops-11.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='texttt'><span class='keyword'>return</span> std<span class='operator'>&#x200b;::&#x200b;</span>forward<span class='anglebracket'>&lt;</span>Q<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>lhs<span class='parenthesis'>)</span> @ rhs<span class='operator'>.</span><span class='texttt'><i >numerical-value</i></span>;</span></div></div></div></div><div class='para' id='assign.ops-12'><div class='marginalizedparent'><a class='marginalized' href='#assign.ops-12'>12</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4970'>#</a></div><div class='texpara'><div id='assign.ops-12.sentence-1' class='sentence'><i >Remarks</i>: The expression in the <span class='textsf'><i >requires-clause</i></span> is equivalent to:
<span class='codeblock'><span class='parenthesis'>(</span>Q2<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <a class='index' id='conceptref:ValuePreservingTo________'></a><i >ValuePreservingTo</i><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Q2<span class='operator'>::</span>rep, Rep<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>rep<span class='operator'>&amp;</span> a, <span class='keyword'>const</span> Q2<span class='operator'>::</span>rep b<span class='parenthesis'>)</span> <span class='curlybracket'>{</span>
<span class='curlybracket'>{</span> a @ b <span class='curlybracket'>}</span> <span class='operator'>-</span><span class='anglebracket'>&gt;</span> std<span class='operator'>::</span>same_as<span class='anglebracket'>&lt;</span>rep<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span>
</span></div></div></div></div></div><div id='arith.ops' class='section'><h3 ><a class='secnum' href='#arith.ops' style='min-width:80pt'>5.6.11</a> Arithmetic operations <a class='abbr_ref' href='qty.arith.ops.html'>[qty.arith.ops]</a></h3><div class='para' id='arith.ops-1'><div class='marginalizedparent'><a class='marginalized' href='#arith.ops-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4983'>#</a></div><div class='texpara'><div id='arith.ops-1.sentence-1' class='sentence'>In the following descriptions,
let <span class='texttt'>@</span> be the <span class='textsf'><i >operator</i></span><a class='hidden_link' href='#arith.ops-1.sentence-1'>.</a></div></div></div><div class='texpara'><div id='lib:quantity,operator%'><div id='lib:operator%,quantity'><div id='lib:quantity,operator-_'><div id='lib:operator-,quantity_'><div id='lib:quantity,operator+_'><div id='lib:operator+,quantity_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator+,quantity_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:CommonlyInvocableQuantities___'></a><span class='texttt'><i >CommonlyInvocableQuantities</i></span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>plus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, quantity, quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:CommonlyInvocableQuantities____'></a><span class='texttt'><i >CommonlyInvocableQuantities</i></span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>minus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, quantity, quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity__________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span>treat_as_floating_point<span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='parenthesis'>(</span><span class='operator'>!</span>treat_as_floating_point<span class='anglebracket'>&lt;</span>Rep2<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:CommonlyInvocableQuantities_____'></a><span class='texttt'><i >CommonlyInvocableQuantities</i></span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>modulus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, quantity, quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity___________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>%</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
</code></div></div></div></div></div></div></div></div><div class='para' id='arith.ops-2'><div class='marginalizedparent'><a class='marginalized' href='#arith.ops-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5004'>#</a></div><div class='texpara'><div id='arith.ops-2.sentence-1' class='sentence'>Let <i >F</i> be the first argument to <a class='index' id='conceptref:CommonlyInvocableQuantities______'></a><span class='texttt'><i >CommonlyInvocableQuantities</i></span><a class='hidden_link' href='#arith.ops-2.sentence-1'>.</a></div></div></div></div><div class='para' id='arith.ops-3'><div class='marginalizedparent'><a class='marginalized' href='#arith.ops-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5007'>#</a></div><div class='texpara'><div id='arith.ops-3.sentence-1' class='sentence'><i >Preconditions</i>: If <span class='texttt'>@</span> is <span class='texttt'><span class='operator'>%</span></span>, then <span class='texttt'>is_<span class='shy'></span>neq_<span class='shy'></span>zero<span class='parenthesis'>(</span>rhs<span class='parenthesis'>)</span></span> is <span class='texttt'><span class='literal'>true</span></span><a class='hidden_link' href='#arith.ops-3.sentence-1'>.</a></div></div></div></div><div class='para' id='arith.ops-4'><div class='marginalizedparent'><a class='marginalized' href='#arith.ops-4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5011'>#</a></div><div class='texpara'><div id='arith.ops-4.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='codeblock'><span class='keyword'>using</span> ret <span class='operator'>=</span> <i >common-quantity-for</i><span class='anglebracket'>&lt;</span><i >F</i>, quantity, quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>;
<span class='keyword'>const</span> ret ret_lhs<span class='parenthesis'>(</span>lhs<span class='parenthesis'>)</span>;
<span class='keyword'>const</span> ret ret_rhs<span class='parenthesis'>(</span>rhs<span class='parenthesis'>)</span>;
<span class='keyword'>return</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>quantity<span class='curlybracket'>{</span>
ret_lhs<span class='operator'>.</span>numerical_value_ref_in<span class='parenthesis'>(</span>ret<span class='operator'>::</span>unit<span class='parenthesis'>)</span> @ ret_rhs<span class='operator'>.</span>numerical_value_ref_in<span class='parenthesis'>(</span>ret<span class='operator'>::</span>unit<span class='parenthesis'>)</span>,
ret<span class='operator'>::</span>reference<span class='curlybracket'>}</span>;
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator%_'><div id='lib:operator%,quantity_'><div id='lib:quantity,operator-__'><div id='lib:operator-,quantity__'><div id='lib:quantity,operator+__'><div id='lib:operator+,quantity__'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator+,quantity__'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation____________'><span class='texttt'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf___________'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>plus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity____________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation_____________'><span class='texttt'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf____________'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>minus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_____________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation______________'><span class='texttt'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf_____________'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>modulus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity______________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>%</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
</code></div></div></div></div></div></div></div></div><div class='para' id='arith.ops-5'><div class='marginalizedparent'><a class='marginalized' href='#arith.ops-5'>5</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5043'>#</a></div><div class='texpara'><div id='arith.ops-5.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='texttt'><span class='keyword'>return</span> lhs @ <span class='operator'>&#x200b;::&#x200b;</span>mp_<span class='shy'></span>units<span class='operator'>&#x200b;::&#x200b;</span>quantity<span class='curlybracket'>{</span>rhs<span class='curlybracket'>}</span>;</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator%__'><div id='lib:operator%,quantity__'><div id='lib:quantity,operator-___'><div id='lib:operator-,quantity___'><div id='lib:quantity,operator+___'><div id='lib:operator+,quantity___'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator+,quantity___'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation_______________'><span class='texttt'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf______________'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>plus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_______________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Q<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation________________'><span class='texttt'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf_______________'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>minus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity________________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Q<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation_________________'><span class='texttt'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf________________'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>modulus<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_________________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>%</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Q<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
</code></div></div></div></div></div></div></div></div><div class='para' id='arith.ops-6'><div class='marginalizedparent'><a class='marginalized' href='#arith.ops-6'>6</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5068'>#</a></div><div class='texpara'><div id='arith.ops-6.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='texttt'><span class='keyword'>return</span> <span class='operator'>&#x200b;::&#x200b;</span>mp_<span class='shy'></span>units<span class='operator'>&#x200b;::&#x200b;</span>quantity<span class='curlybracket'>{</span>lhs<span class='curlybracket'>}</span> @ rhs;</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator/'><div id='lib:operator/,quantity'><div id='lib:quantity,operator*'><div id='lib:operator*,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator*,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:InvocableQuantities___'></a><span class='texttt'><i >InvocableQuantities</i></span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>multiplies<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, quantity, quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity__________________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>*</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:InvocableQuantities____'></a><span class='texttt'><i >InvocableQuantities</i></span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>divides<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, quantity, quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity___________________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>/</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
</code></div></div></div></div></div></div><div class='para' id='arith.ops-7'><div class='marginalizedparent'><a class='marginalized' href='#arith.ops-7'>7</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5086'>#</a></div><div class='texpara'><div id='arith.ops-7.sentence-1' class='sentence'><i >Preconditions</i>: If <span class='texttt'>@</span> is <span class='texttt'><span class='operator'>/</span></span>, then <span class='texttt'>is_<span class='shy'></span>neq_<span class='shy'></span>zero<span class='parenthesis'>(</span>rhs<span class='parenthesis'>)</span></span> is <span class='texttt'><span class='literal'>true</span></span><a class='hidden_link' href='#arith.ops-7.sentence-1'>.</a></div></div></div></div><div class='para' id='arith.ops-8'><div class='marginalizedparent'><a class='marginalized' href='#arith.ops-8'>8</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5090'>#</a></div><div class='texpara'><div id='arith.ops-8.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='codeblock'><span class='keyword'>return</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>quantity<span class='curlybracket'>{</span>
lhs<span class='operator'>.</span>numerical_value_ref_in<span class='parenthesis'>(</span>unit<span class='parenthesis'>)</span> @ rhs<span class='operator'>.</span>numerical_value_ref_in<span class='parenthesis'>(</span>rhs<span class='operator'>.</span>unit<span class='parenthesis'>)</span>, R @ R2<span class='curlybracket'>}</span>;
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator/_'><div id='lib:operator/,quantity_'><div id='lib:quantity,operator*_'><div id='lib:operator*,quantity_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator*,quantity_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>typename</span> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity____________________________________'><span class='texttt'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference___________'><span class='texttt'>Reference</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf_________________'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>multiplies<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf___________________________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>*</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>typename</span> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_____________________________________'><span class='texttt'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference____________'><span class='texttt'>Reference</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf__________________'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>divides<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, Rep, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf____________________________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>/</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
</code></div></div></div></div></div></div><div class='para' id='arith.ops-9'><div class='marginalizedparent'><a class='marginalized' href='#arith.ops-9'>9</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5113'>#</a></div><div class='texpara'><div id='arith.ops-9.sentence-1' class='sentence'><i >Preconditions</i>: If <span class='texttt'>@</span> is <span class='texttt'><span class='operator'>/</span></span>, then <span class='texttt'>rhs <span class='operator'>!</span><span class='operator'>=</span> representation_<span class='shy'></span>values<span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='operator'>&#x200b;::&#x200b;</span>zero<span class='parenthesis'>(</span><span class='parenthesis'>)</span></span> is <span class='texttt'><span class='literal'>true</span></span><a class='hidden_link' href='#arith.ops-9.sentence-1'>.</a></div></div></div></div><div class='para' id='arith.ops-10'><div class='marginalizedparent'><a class='marginalized' href='#arith.ops-10'>10</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5117'>#</a></div><div class='texpara'><div id='arith.ops-10.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='codeblock'><span class='keyword'>return</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>quantity<span class='curlybracket'>{</span>lhs<span class='operator'>.</span>numerical_value_ref_in<span class='parenthesis'>(</span>unit<span class='parenthesis'>)</span> @ rhs, R<span class='curlybracket'>}</span>;
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator/__'><div id='lib:operator/,quantity__'><div id='lib:quantity,operator*__'><div id='lib:operator*,quantity__'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator*,quantity__'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Value, std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity______________________________________'><span class='texttt'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference_____________'><span class='texttt'>Reference</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf___________________'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>multiplies<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span>, Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityOf' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:QuantityOf_____________________________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'>&lt;</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>*</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Q<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Value, std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_______________________________________'><span class='texttt'>Quantity</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='parenthesis'>(</span><span class='operator'>!</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference______________'><span class='texttt'>Reference</span></span></a><span class='anglebracket'>&lt;</span>Value<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<a class='index' id='conceptref:InvokeResultOf____________________'></a><span class='texttt'><i >InvokeResultOf</i></span><span class='anglebracket'>&lt;</span>quantity_spec, std<span class='operator'>::</span>divides<span class='anglebracket'>&lt;</span><span class='anglebracket'>&gt;</span>, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span>, Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity________________________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>/</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Value<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Q<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
</code></div></div></div></div></div></div><div class='para' id='arith.ops-11'><div class='marginalizedparent'><a class='marginalized' href='#arith.ops-11'>11</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5139'>#</a></div><div class='texpara'><div id='arith.ops-11.sentence-1' class='sentence'><i >Preconditions</i>: If <span class='texttt'>@</span> is <span class='texttt'><span class='operator'>/</span></span>, then <span class='texttt'>is_<span class='shy'></span>neq_<span class='shy'></span>zero<span class='parenthesis'>(</span>rhs<span class='parenthesis'>)</span></span> is <span class='texttt'><span class='literal'>true</span></span><a class='hidden_link' href='#arith.ops-11.sentence-1'>.</a></div></div></div></div><div class='para' id='arith.ops-12'><div class='marginalizedparent'><a class='marginalized' href='#arith.ops-12'>12</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5143'>#</a></div><div class='texpara'><div id='arith.ops-12.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='codeblock'><span class='keyword'>return</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>quantity<span class='curlybracket'>{</span>lhs @ rhs<span class='operator'>.</span>numerical_value_ref_in<span class='parenthesis'>(</span>unit<span class='parenthesis'>)</span>, <span class='operator'>::</span>mp_units<span class='operator'>::</span>one @ R<span class='curlybracket'>}</span>;
</span></div></div></div></div></div><div id='cmp' class='section'><h3 ><a class='secnum' href='#cmp' style='min-width:80pt'>5.6.12</a> Comparison <a class='abbr_ref' href='qty.cmp.html'>[qty.cmp]</a></h3><div class='para' id='cmp-1'><div class='marginalizedparent'><a class='marginalized' href='#cmp-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5153'>#</a></div><div class='texpara'><div id='cmp-1.sentence-1' class='sentence'>In the following descriptions,
let <span class='texttt'>@</span> be the <span class='textsf'><i >operator</i></span><a class='hidden_link' href='#cmp-1.sentence-1'>.</a></div></div></div><div class='texpara'><div id='lib:quantity,operator<=>'><div id='lib:operator<=>,quantity'><div id='lib:quantity,operator=='><div id='lib:operator==,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator==,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='operator'>=</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='anglebracket'>&lt;</span><span class='operator'>=</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
</code></div></div></div></div></div></div><div class='para' id='cmp-2'><div class='marginalizedparent'><a class='marginalized' href='#cmp-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5169'>#</a></div><div class='texpara'><div id='cmp-2.sentence-1' class='sentence'>Let <i >C</i> be
<span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>equality_<span class='shy'></span>comparable</span> if <span class='texttt'>@</span> is <span class='texttt'><span class='operator'>=</span><span class='operator'>=</span></span>, and
<span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>three_<span class='shy'></span>way_<span class='shy'></span>comparable</span> if <span class='texttt'>@</span> is <span class='texttt'><span class='anglebracket'>&lt;</span><span class='operator'>=</span><span class='anglebracket'>&gt;</span></span><a class='hidden_link' href='#cmp-2.sentence-1'>.</a></div></div></div></div><div class='para' id='cmp-3'><div class='marginalizedparent'><a class='marginalized' href='#cmp-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5174'>#</a></div><div class='texpara'><div id='cmp-3.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='codeblock'><span class='keyword'>using</span> ct <span class='operator'>=</span> std<span class='operator'>::</span>common_type_t<span class='anglebracket'>&lt;</span>quantity, quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>;
<span class='keyword'>const</span> ct ct_lhs<span class='parenthesis'>(</span>lhs<span class='parenthesis'>)</span>;
<span class='keyword'>const</span> ct ct_rhs<span class='parenthesis'>(</span>rhs<span class='parenthesis'>)</span>;
<span class='keyword'>return</span> ct_lhs<span class='operator'>.</span>numerical_value_ref_in<span class='parenthesis'>(</span>ct<span class='operator'>::</span>unit<span class='parenthesis'>)</span> @ ct_rhs<span class='operator'>.</span>numerical_value_ref_in<span class='parenthesis'>(</span>ct<span class='operator'>::</span>unit<span class='parenthesis'>)</span>;
</span></div></div></div></div><div class='para' id='cmp-4'><div class='marginalizedparent'><a class='marginalized' href='#cmp-4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5184'>#</a></div><div class='texpara'><div id='cmp-4.sentence-1' class='sentence'><i >Remarks</i>: The expression in the <span class='textsf'><i >requires-clause</i></span> is equivalent to:
<span class='codeblock'><span class='keyword'>requires</span> <span class='curlybracket'>{</span>
<span class='keyword'>typename</span> std<span class='operator'>::</span>common_type_t<span class='anglebracket'>&lt;</span>quantity, quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <i >C</i><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> std<span class='operator'>::</span>common_type_t<span class='anglebracket'>&lt;</span>quantity, quantity<span class='anglebracket'>&lt;</span>R2, Rep2<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span><span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span>
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,operator<=>_'><div id='lib:operator<=>,quantity_'><div id='lib:quantity,operator==_'><div id='lib:operator==,quantity_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator==,quantity_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation__________________'><span class='texttt'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='operator'>=</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span> Q, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation___________________'><span class='texttt'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='anglebracket'>&lt;</span><span class='operator'>=</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span><span class='keyword'>const</span> Q<span class='operator'>&amp;</span> lhs, <span class='keyword'>const</span> Value<span class='operator'>&amp;</span> rhs<span class='parenthesis'>)</span>;
</code></div></div></div></div></div></div><div class='para' id='cmp-5'><div class='marginalizedparent'><a class='marginalized' href='#cmp-5'>5</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5206'>#</a></div><div class='texpara'><div id='cmp-5.sentence-1' class='sentence'>Let <i >C</i> be
<span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>equality_<span class='shy'></span>comparable_<span class='shy'></span>with</span> if <span class='texttt'>@</span> is <span class='texttt'><span class='operator'>=</span><span class='operator'>=</span></span>, and
<span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>three_<span class='shy'></span>way_<span class='shy'></span>comparable_<span class='shy'></span>with</span> if <span class='texttt'>@</span> is <span class='texttt'><span class='anglebracket'>&lt;</span><span class='operator'>=</span><span class='anglebracket'>&gt;</span></span><a class='hidden_link' href='#cmp-5.sentence-1'>.</a></div></div></div></div><div class='para' id='cmp-6'><div class='marginalizedparent'><a class='marginalized' href='#cmp-6'>6</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5211'>#</a></div><div class='texpara'><div id='cmp-6.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'>lhs<span class='operator'>.</span>numerical_<span class='shy'></span>value_<span class='shy'></span>ref_<span class='shy'></span>in<span class='parenthesis'>(</span>unit<span class='parenthesis'>)</span> @ rhs</span><a class='hidden_link' href='#cmp-6.sentence-1'>.</a></div></div></div></div><div class='para' id='cmp-7'><div class='marginalizedparent'><a class='marginalized' href='#cmp-7'>7</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5215'>#</a></div><div class='texpara'><div id='cmp-7.sentence-1' class='sentence'><i >Remarks</i>: The expression in the <span class='textsf'><i >requires-clause</i></span> is equivalent to:
<span class='codeblock'><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <i >C</i><span class='anglebracket'>&lt;</span>Rep, Value<span class='anglebracket'>&gt;</span>
</span></div></div></div></div></div><div id='val.cmp' class='section'><h3 ><a class='secnum' href='#val.cmp' style='min-width:80pt'>5.6.13</a> Value comparison <a class='abbr_ref' href='qty.val.cmp.html'>[qty.val.cmp]</a></h3><div class='texpara'><div id='lib:quantity,is_gteq_zero'><div id='lib:is_gteq_zero,quantity'><div id='lib:quantity,is_lteq_zero'><div id='lib:is_lteq_zero,quantity'><div id='lib:quantity,is_gt_zero'><div id='lib:is_gt_zero,quantity'><div id='lib:quantity,is_lt_zero'><div id='lib:is_lt_zero,quantity'><div id='lib:quantity,is_neq_zero'><div id='lib:is_neq_zero,quantity'><div id='lib:quantity,is_eq_zero'><div id='lib:is_eq_zero,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:is_eq_zero,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_eq_zero<span class='parenthesis'>(</span><span class='keyword'>const</span> quantity<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span> <span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_neq_zero<span class='parenthesis'>(</span><span class='keyword'>const</span> quantity<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span> <span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_lt_zero<span class='parenthesis'>(</span><span class='keyword'>const</span> quantity<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span> <span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_gt_zero<span class='parenthesis'>(</span><span class='keyword'>const</span> quantity<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span> <span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_lteq_zero<span class='parenthesis'>(</span><span class='keyword'>const</span> quantity<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span> <span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_gteq_zero<span class='parenthesis'>(</span><span class='keyword'>const</span> quantity<span class='operator'>&amp;</span> q<span class='parenthesis'>)</span> <span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
</code></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class='para' id='val.cmp-1'><div class='marginalizedparent'><a class='marginalized' href='#val.cmp-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5241'>#</a></div><div class='texpara'><div id='val.cmp-1.sentence-1' class='sentence'>Let <span class='texttt'>is_<span class='shy'></span><i >F</i>_<span class='shy'></span>zero</span> be the function name<a class='hidden_link' href='#val.cmp-1.sentence-1'>.</a></div></div></div></div><div class='para' id='val.cmp-2'><div class='marginalizedparent'><a class='marginalized' href='#val.cmp-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5244'>#</a></div><div class='texpara'><div id='val.cmp-2.sentence-1' class='sentence'><i >Returns</i>: <ul class='itemize'><li id='val.cmp-2.1'><div class='marginalizedparent' style='left:-39mm'><a class='marginalized' href='#val.cmp-2.1'>(2.1)</a></div><div class='texpara'><div id='val.cmp-2.1.sentence-1' class='sentence'>If <span class='texttt'><i >F</i></span> is <span class='texttt'>eq</span>, returns <span class='texttt'>q <span class='operator'>=</span><span class='operator'>=</span> zero<span class='parenthesis'>(</span><span class='parenthesis'>)</span></span><a class='hidden_link' href='#val.cmp-2.1.sentence-1'>.</a></div></div></li><li id='val.cmp-2.2'><div class='marginalizedparent' style='left:-39mm'><a class='marginalized' href='#val.cmp-2.2'>(2.2)</a></div><div class='texpara'><div id='val.cmp-2.2.sentence-1' class='sentence'>Otherwise, if <span class='texttt'><i >F</i></span> is <span class='texttt'>neq</span>, returns <span class='texttt'>q <span class='operator'>!</span><span class='operator'>=</span> zero<span class='parenthesis'>(</span><span class='parenthesis'>)</span></span><a class='hidden_link' href='#val.cmp-2.2.sentence-1'>.</a></div></div></li><li id='val.cmp-2.3'><div class='marginalizedparent' style='left:-39mm'><a class='marginalized' href='#val.cmp-2.3'>(2.3)</a></div><div class='texpara'><div id='val.cmp-2.3.sentence-1' class='sentence'>Otherwise, returns <span class='texttt'>is_<span class='shy'></span><i >F</i><span class='parenthesis'>(</span>q <span class='anglebracket'>&lt;</span><span class='operator'>=</span><span class='anglebracket'>&gt;</span> zero<span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span></span> (<a href="https://wg21.link/compare.syn">N4971, [compare.syn]</a>)<a class='hidden_link' href='#val.cmp-2.3.sentence-1'>.</a></div></div></li></ul></div></div></div></div><div class='para' id='val.cmp-3'><div class='marginalizedparent'><a class='marginalized' href='#val.cmp-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5255'>#</a></div><div class='texpara'><div id='val.cmp-3.sentence-1' class='sentence'><i >Remarks</i>: Let <i >C</i> be
<span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>equality_<span class='shy'></span>comparable_<span class='shy'></span>with</span> if <i >F</i> is <span class='texttt'>eq</span> or <span class='texttt'>neq</span>, and
<span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>three_<span class='shy'></span>way_<span class='shy'></span>comparable_<span class='shy'></span>with</span> otherwise<a class='hidden_link' href='#val.cmp-3.sentence-1'>.</a></div> <div id='val.cmp-3.sentence-2' class='sentence'>The expression in the <span class='textsf'><i >requires-clause</i></span> is equivalent to:
<span class='codeblock'><span class='keyword'>requires</span> <span class='curlybracket'>{</span>
<span class='curlybracket'>{</span> T<span class='operator'>::</span>zero<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='curlybracket'>}</span> <span class='operator'>-</span><span class='anglebracket'>&gt;</span> <i >C</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span>
</span></div></div></div></div></div><div id='delta' class='section'><h3 ><a class='secnum' href='#delta' style='min-width:80pt'>5.6.14</a> Construction helper <span class='texttt'>delta</span> <a class='abbr_ref' href='qty.delta.html'>[qty.delta]</a></h3><div class='texpara'><span id='lib:delta_'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:delta_'>🔗</a></div><span class='codeblock'><span class='keyword'>namespace</span> mp_units <span class='curlybracket'>{</span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5&emsp;Concepts&emsp;[qty.ref.concepts]'><span id='conceptref:Reference_______________'><span class='tcode_in_codeblock'>Reference</span></span></a> R<span class='anglebracket'>&gt;</span>
<span class='keyword'>struct</span> delta_ <span class='curlybracket'>{</span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> FwdRep,
<a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf__________'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>get_quantity_spec<span class='parenthesis'>(</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span><span class='anglebracket'>&gt;</span> Rep <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FwdRep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> quantity<span class='anglebracket'>&lt;</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, Rep<span class='anglebracket'>&gt;</span> <span class='keyword'>operator</span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>(</span>FwdRep<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
<span class='curlybracket'>}</span>;
<span class='curlybracket'>}</span>
</span></span></div><div class='texpara'><div id='lib:delta_,operator()'><div id='lib:operator(),delta_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator(),delta_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> FwdRep,
<a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf___________'><span class='texttt'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>get_quantity_spec<span class='parenthesis'>(</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span><span class='anglebracket'>&gt;</span> Rep <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FwdRep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> quantity<span class='anglebracket'>&lt;</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, Rep<span class='anglebracket'>&gt;</span> <span class='keyword'>operator</span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>(</span>FwdRep<span class='operator'>&amp;</span><span class='operator'>&amp;</span> lhs<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
</code></div></div></div></div><div class='para' id='delta-1'><div class='marginalizedparent'><a class='marginalized' href='#delta-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5292'>#</a></div><div class='texpara'><div id='delta-1.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='texttt'><span class='keyword'>return</span> quantity<span class='curlybracket'>{</span>std<span class='operator'>&#x200b;::&#x200b;</span>forward<span class='anglebracket'>&lt;</span>FwdRep<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>lhs<span class='parenthesis'>)</span>, R<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='curlybracket'>}</span>;</span></div></div></div></div></div><div id='non.mem.conv' class='section'><h3 ><a class='secnum' href='#non.mem.conv' style='min-width:80pt'>5.6.15</a> Non-member conversions <a class='abbr_ref' href='qty.non.mem.conv.html'>[qty.non.mem.conv]</a></h3><div class='texpara'><div id='lib:sudo-cast,quantity'><div id='lib:quantity,sudo-cast'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity,sudo-cast'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_________________________________________'><span class='texttt'>Quantity</span></span></a> To, <span class='keyword'>typename</span> FwdFrom, <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity__________________________________________'><span class='texttt'>Quantity</span></span></a> From <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FwdFrom<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>constexpr</span> To <span class='texttt'><i >sudo-cast</i></span><span class='parenthesis'>(</span>FwdFrom<span class='operator'>&amp;</span><span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>; <span class='comment'>// <i >exposition only</i></span>
</code></div></div></div></div><div class='para' id='non.mem.conv-1'><div class='marginalizedparent'><a class='marginalized' href='#non.mem.conv-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5308'>#</a></div><div class='texpara'><div id='non.mem.conv-1.sentence-1' class='sentence'><i >Returns</i>: TBD<a class='hidden_link' href='#non.mem.conv-1.sentence-1'>.</a></div></div></div></div><div class='para' id='non.mem.conv-2'><div class='marginalizedparent'><a class='marginalized' href='#non.mem.conv-2'>2</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5313'>#</a></div><div class='texpara'><div id='non.mem.conv-2.sentence-1' class='sentence'><span class='texttt'>value_<span class='shy'></span>cast</span> is an explicit cast that allows truncation<a class='hidden_link' href='#non.mem.conv-2.sentence-1'>.</a></div></div></div><div class='texpara'><div id='lib:quantity,value_cast'><div id='lib:value_cast,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:value_cast,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4&emsp;Concepts&emsp;[qty.unit.concepts]'><span id='conceptref:Unit__________'><span class='texttt'>Unit</span></span></a> <span class='keyword'>auto</span> ToU, <span class='keyword'>typename</span> FwdQ, <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity___________________________________________'><span class='texttt'>Quantity</span></span></a> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FwdQ<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>convertible<span class='parenthesis'>(</span>Q<span class='operator'>::</span>reference, ToU<span class='parenthesis'>)</span><span class='parenthesis'>)</span>
<span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity____________________________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> value_cast<span class='parenthesis'>(</span>FwdQ<span class='operator'>&amp;</span><span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>;
</code></div></div></div></div><div class='para' id='non.mem.conv-3'><div class='marginalizedparent'><a class='marginalized' href='#non.mem.conv-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5324'>#</a></div><div class='texpara'><div id='non.mem.conv-3.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='codeblock'><span class='keyword'>return</span> <i >sudo-cast</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&lt;</span><i >make-reference</i><span class='parenthesis'>(</span>Q<span class='operator'>::</span>quantity_spec, ToU<span class='parenthesis'>)</span>, <span class='keyword'>typename</span> Q<span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>
std<span class='operator'>::</span>forward<span class='anglebracket'>&lt;</span>FwdQ<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,value_cast_'><div id='lib:value_cast,quantity_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:value_cast,quantity_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation____________________'><span class='texttt'>Representation</span></span></a> ToRep, <span class='keyword'>typename</span> FwdQ, <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_____________________________________________'><span class='texttt'>Quantity</span></span></a> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FwdQ<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf____________'><span class='texttt'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>ToRep, Q<span class='operator'>::</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
std<span class='operator'>::</span>constructible_from<span class='anglebracket'>&lt;</span>ToRep, <span class='keyword'>typename</span> Q<span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> quantity<span class='anglebracket'>&lt;</span>Q<span class='operator'>::</span>reference, ToRep<span class='anglebracket'>&gt;</span> value_cast<span class='parenthesis'>(</span>FwdQ<span class='operator'>&amp;</span><span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>;
</code></div></div></div></div><div class='para' id='non.mem.conv-4'><div class='marginalizedparent'><a class='marginalized' href='#non.mem.conv-4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5342'>#</a></div><div class='texpara'><div id='non.mem.conv-4.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='codeblock'><span class='keyword'>return</span> <i >sudo-cast</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&lt;</span>Q<span class='operator'>::</span>reference, ToRep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>std<span class='operator'>::</span>forward<span class='anglebracket'>&lt;</span>FwdQ<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,value_cast__'><div id='lib:value_cast,quantity__'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:value_cast,quantity__'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4&emsp;Concepts&emsp;[qty.unit.concepts]'><span id='conceptref:Unit___________'><span class='texttt'>Unit</span></span></a> <span class='keyword'>auto</span> ToU, <a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation_____________________'><span class='texttt'>Representation</span></span></a> ToRep, <span class='keyword'>typename</span> FwdQ,
<a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity______________________________________________'><span class='texttt'>Quantity</span></span></a> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FwdQ<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_______________________________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> value_cast<span class='parenthesis'>(</span>FwdQ<span class='operator'>&amp;</span><span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation______________________'><span class='texttt'>Representation</span></span></a> ToRep, <a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4&emsp;Concepts&emsp;[qty.unit.concepts]'><span id='conceptref:Unit____________'><span class='texttt'>Unit</span></span></a> <span class='keyword'>auto</span> ToU, <span class='keyword'>typename</span> FwdQ,
<a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity________________________________________________'><span class='texttt'>Quantity</span></span></a> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FwdQ<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
<span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_________________________________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> value_cast<span class='parenthesis'>(</span>FwdQ<span class='operator'>&amp;</span><span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>;
</code></div></div></div></div><div class='para' id='non.mem.conv-5'><div class='marginalizedparent'><a class='marginalized' href='#non.mem.conv-5'>5</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5363'>#</a></div><div class='texpara'><div id='non.mem.conv-5.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='codeblock'><span class='keyword'>return</span> <i >sudo-cast</i><span class='anglebracket'>&lt;</span>quantity<span class='anglebracket'>&lt;</span><i >make-reference</i><span class='parenthesis'>(</span>Q<span class='operator'>::</span>quantity_spec, ToU<span class='parenthesis'>)</span>, ToRep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>
std<span class='operator'>::</span>forward<span class='anglebracket'>&lt;</span>FwdQ<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
</span></div></div></div></div><div class='para' id='non.mem.conv-6'><div class='marginalizedparent'><a class='marginalized' href='#non.mem.conv-6'>6</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5371'>#</a></div><div class='texpara'><div id='non.mem.conv-6.sentence-1' class='sentence'><i >Remarks</i>: The expression in the <span class='textsf'><i >requires-clause</i></span> is equivalent to:
<span class='codeblock'><span class='parenthesis'>(</span>convertible<span class='parenthesis'>(</span>Q<span class='operator'>::</span>reference, ToU<span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf_____________'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>ToRep, Q<span class='operator'>::</span>quantity_spec<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
std<span class='operator'>::</span>constructible_from<span class='anglebracket'>&lt;</span>ToRep, <span class='keyword'>typename</span> Q<span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span>
</span></div></div></div></div><div class='texpara'><div id='lib:quantity,value_cast___'><div id='lib:value_cast,quantity___'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:value_cast,quantity___'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity__________________________________________________'><span class='texttt'>Quantity</span></span></a> ToQ, <span class='keyword'>typename</span> FwdQ, <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity___________________________________________________'><span class='texttt'>Quantity</span></span></a> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FwdQ<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>convertible<span class='parenthesis'>(</span>Q<span class='operator'>::</span>reference, ToQ<span class='operator'>::</span>unit<span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='parenthesis'>(</span>ToQ<span class='operator'>::</span>quantity_spec <span class='operator'>=</span><span class='operator'>=</span> Q<span class='operator'>::</span>quantity_spec<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
std<span class='operator'>::</span>constructible_from<span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> ToQ<span class='operator'>::</span>rep, <span class='keyword'>typename</span> Q<span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity____________________________________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> value_cast<span class='parenthesis'>(</span>FwdQ<span class='operator'>&amp;</span><span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>;
</code></div></div></div></div><div class='para' id='non.mem.conv-7'><div class='marginalizedparent'><a class='marginalized' href='#non.mem.conv-7'>7</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5389'>#</a></div><div class='texpara'><div id='non.mem.conv-7.sentence-1' class='sentence'><i >Effects</i>: Equivalent to: <span class='texttt'><span class='keyword'>return</span> <span class='texttt'><i >sudo-cast</i></span><span class='anglebracket'>&lt;</span>ToQ<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>std<span class='operator'>&#x200b;::&#x200b;</span>forward<span class='anglebracket'>&lt;</span>FwdQ<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span><span class='parenthesis'>)</span>;</span></div></div></div></div><div class='para' id='non.mem.conv-8'><div class='marginalizedparent'><a class='marginalized' href='#non.mem.conv-8'>8</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5394'>#</a></div><div class='texpara'><div id='non.mem.conv-8.sentence-1' class='sentence'><span class='texttt'>quantity_<span class='shy'></span>cast</span> is an explicit cast that allows converting to more specific quantities<a class='hidden_link' href='#non.mem.conv-8.sentence-1'>.</a></div> <div id='non.mem.conv-example-1' class='example'><div class='texpara'>[<i>Example&nbsp;<a href='#non.mem.conv-example-1'>1</a></i>:&ensp;<span class='codeblock'><span class='keyword'>auto</span> length <span class='operator'>=</span> isq<span class='operator'>::</span>length<span class='parenthesis'>(</span><span class='literal'>42</span> <span class='operator'>*</span> m<span class='parenthesis'>)</span>;
<span class='keyword'>auto</span> distance <span class='operator'>=</span> quantity_cast<span class='anglebracket'>&lt;</span>isq<span class='operator'>::</span>distance<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>length<span class='parenthesis'>)</span>;
</span>&nbsp;<i>end example</i>]</div></div></div></div><div class='texpara'><div id='lib:quantity,quantity_cast'><div id='lib:quantity_cast,quantity'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity_cast,quantity'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='qty.spec.concepts.html#concept:QuantitySpec' title='5.4.3.2&emsp;Concepts&emsp;[qty.spec.concepts]'><span id='conceptref:QuantitySpec___'><span class='texttt'>QuantitySpec</span></span></a> <span class='keyword'>auto</span> ToQS, <span class='keyword'>typename</span> FwdQ, <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_____________________________________________________'><span class='texttt'>Quantity</span></span></a> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>FwdQ<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantitySpecCastableTo'></a><span class='texttt'><i >QuantitySpecCastableTo</i></span><span class='anglebracket'>&lt;</span>Q<span class='operator'>::</span>quantity_spec, ToQS<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity______________________________________________________'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> quantity_cast<span class='parenthesis'>(</span>FwdQ<span class='operator'>&amp;</span><span class='operator'>&amp;</span> q<span class='parenthesis'>)</span>;
</code></div></div></div></div><div class='para' id='non.mem.conv-9'><div class='marginalizedparent'><a class='marginalized' href='#non.mem.conv-9'>9</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5411'>#</a></div><div class='texpara'><div id='non.mem.conv-9.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
<span class='codeblock'><span class='keyword'>return</span> quantity<span class='curlybracket'>{</span>std<span class='operator'>::</span>forward<span class='anglebracket'>&lt;</span>FwdQ<span class='anglebracket'>&gt;</span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span><span class='operator'>.</span><i >numerical-value</i>, <i >make-reference</i><span class='parenthesis'>(</span>ToQS, Q<span class='operator'>::</span>unit<span class='parenthesis'>)</span><span class='curlybracket'>}</span>;
</span></div></div></div></div></div><div id='common.type' class='section'><h3 ><a class='secnum' href='#common.type' style='min-width:80pt'>5.6.16</a> <span class='texttt'>std&#x200b;::&#x200b;common_<span class='shy'></span>type</span> specializations <a class='abbr_ref' href='qty.common.type.html'>[qty.common.type]</a></h3><div class='texpara'><span class='codeblock'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span>mp_units<span class='operator'>::</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_______________________________________________________'><span class='tcode_in_codeblock'>Quantity</span></span></a> Q1, mp_units<span class='operator'>::</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity________________________________________________________'><span class='tcode_in_codeblock'>Quantity</span></span></a> Q2<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span> <span class='keyword'>requires</span> <span class='curlybracket'>{</span>
<span class='curlybracket'>{</span> mp_units<span class='operator'>::</span>get_common_reference<span class='parenthesis'>(</span>Q1<span class='operator'>::</span>reference, Q2<span class='operator'>::</span>reference<span class='parenthesis'>)</span> <span class='curlybracket'>}</span> <span class='operator'>-</span><span class='anglebracket'>&gt;</span> mp_units<span class='operator'>::</span>Reference;
<span class='keyword'>typename</span> std<span class='operator'>::</span>common_type_t<span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Q1<span class='operator'>::</span>rep, <span class='keyword'>typename</span> Q2<span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span>;
<span class='keyword'>requires</span> mp_units<span class='operator'>::</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:RepresentationOf______________'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'>&lt;</span>std<span class='operator'>::</span>common_type_t<span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Q1<span class='operator'>::</span>rep, <span class='keyword'>typename</span> Q2<span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span>,
mp_units<span class='operator'>::</span>get_common_quantity_spec<span class='parenthesis'>(</span>Q1<span class='operator'>::</span>quantity_spec,
Q2<span class='operator'>::</span>quantity_spec<span class='parenthesis'>)</span><span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span>
<span class='keyword'>struct</span> <a class='index' id='lib:std::common_type,quantity'></a>std<span class='operator'>::</span>common_type<span class='anglebracket'>&lt;</span>Q1, Q2<span class='anglebracket'>&gt;</span> <span class='curlybracket'>{</span>
<span class='keyword'>using</span> type <span class='operator'>=</span> mp_units<span class='operator'>::</span>quantity<span class='anglebracket'>&lt;</span>mp_units<span class='operator'>::</span>get_common_reference<span class='parenthesis'>(</span>Q1<span class='operator'>::</span>reference, Q2<span class='operator'>::</span>reference<span class='parenthesis'>)</span>,
std<span class='operator'>::</span>common_type_t<span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Q1<span class='operator'>::</span>rep, <span class='keyword'>typename</span> Q2<span class='operator'>::</span>rep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span>mp_units<span class='operator'>::</span><a href='#concept:Quantity' title='5.6.3&emsp;Class template quantity&emsp;[qty.syn]'><span id='conceptref:Quantity_________________________________________________________'><span class='tcode_in_codeblock'>Quantity</span></span></a> Q, mp_units<span class='operator'>::</span><a href='qty.rep.concepts.html#concept:Representation' title='5.5.4&emsp;Concepts&emsp;[qty.rep.concepts]'><span id='conceptref:Representation_______________________'><span class='tcode_in_codeblock'>Representation</span></span></a> Value<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>unit <span class='operator'>=</span><span class='operator'>=</span> mp_units<span class='operator'>::</span>one<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='keyword'>requires</span> <span class='curlybracket'>{</span>
<span class='keyword'>typename</span> mp_units<span class='operator'>::</span>quantity<span class='anglebracket'>&lt;</span>Q<span class='operator'>::</span>reference, std<span class='operator'>::</span>common_type_t<span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Q<span class='operator'>::</span>rep, Value<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span>
<span class='keyword'>struct</span> <a class='index' id='lib:std::common_type,quantity_'></a>std<span class='operator'>::</span>common_type<span class='anglebracket'>&lt;</span>Q, Value<span class='anglebracket'>&gt;</span> <span class='curlybracket'>{</span>
<span class='keyword'>using</span> type <span class='operator'>=</span> mp_units<span class='operator'>::</span>quantity<span class='anglebracket'>&lt;</span>Q<span class='operator'>::</span>reference, std<span class='operator'>::</span>common_type_t<span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Q<span class='operator'>::</span>rep, Value<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>;
<span class='curlybracket'>}</span>;
</span></div></div></div></body></html>