forked from mpusz/mp-units
26 lines
9.0 KiB
HTML
26 lines
9.0 KiB
HTML
<!DOCTYPE html><html lang='en'><head><title>[qty.pt.obs]</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.7</a> Quantity point <a class='abbr_ref' href='qty.pt.html#obs'>[qty.pt]</a></h2><h3 ><a class='secnum' style='min-width:80pt'>5.7.8</a> Quantity value observers <a class='abbr_ref'>[qty.pt.obs]</a></h3><div class='texpara'><div id='lib:quantity_point,quantity_ref_from'><div id='lib:quantity_ref_from,quantity_point'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity_ref_from,quantity_point'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.pt.orig.concepts.html#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin'><span class='texttt'>PointOrigin</span></span></a> PO2<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span>PO2<span class='curlybracket'>{</span><span class='curlybracket'>}</span> <span class='operator'>=</span><span class='operator'>=</span> point_origin<span class='parenthesis'>)</span>
|
|
<span class='keyword'>constexpr</span> quantity_type<span class='operator'>&</span> quantity_ref_from<span class='parenthesis'>(</span>PO2<span class='parenthesis'>)</span> <span class='operator'>&</span> <span class='keyword'>noexcept</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.pt.orig.concepts.html#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin_'><span class='texttt'>PointOrigin</span></span></a> PO2<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span>PO2<span class='curlybracket'>{</span><span class='curlybracket'>}</span> <span class='operator'>=</span><span class='operator'>=</span> point_origin<span class='parenthesis'>)</span>
|
|
<span class='keyword'>constexpr</span> <span class='keyword'>const</span> quantity_type<span class='operator'>&</span> quantity_ref_from<span class='parenthesis'>(</span>PO2<span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='operator'>&</span> <span class='keyword'>noexcept</span>;
|
|
</code></div></div></div></div><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L6137'>#</a></div><div class='texpara'><div id='1.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'><i >quantity-from-origin</i></span><a class='hidden_link' href='#1.sentence-1'>.</a></div></div></div></div><div class='texpara'><div id='lib:quantity_point,quantity_from'><div id='lib:quantity_from,quantity_point'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity_from,quantity_point'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.pt.orig.concepts.html#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin__'><span class='texttt'>PointOrigin</span></span></a> PO2<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='keyword'>const</span> quantity_point qp<span class='parenthesis'>)</span> <span class='curlybracket'>{</span> qp <span class='operator'>-</span> PO2<span class='curlybracket'>{</span><span class='curlybracket'>}</span>; <span class='curlybracket'>}</span>
|
|
<span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> quantity_from<span class='parenthesis'>(</span>PO2 rhs<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.pt.syn.html#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf'><span class='texttt'>QuantityPointOf</span></span></a><span class='anglebracket'><</span>absolute_point_origin<span class='anglebracket'>></span> QP<span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity_'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> quantity_from<span class='parenthesis'>(</span><span class='keyword'>const</span> QP<span class='operator'>&</span> rhs<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
|
|
</code></div></div></div></div><div class='para' id='2'><div class='marginalizedparent'><a class='marginalized' href='#2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L6153'>#</a></div><div class='texpara'><div id='2.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='texttt'><span class='keyword'>return</span> <span class='operator'>*</span><span class='keyword'>this</span> <span class='operator'>-</span> rhs;</span></div></div></div></div><div class='texpara'><div id='lib:quantity_point,quantity_from_zero'><div id='lib:quantity_from_zero,quantity_point'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity_from_zero,quantity_point'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>constexpr</span> <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity__'><span class='texttt'>Quantity</span></span></a> <span class='keyword'>auto</span> quantity_from_zero<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span>;
|
|
</code></div></div></div></div><div class='para' id='3'><div class='marginalizedparent'><a class='marginalized' href='#3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L6165'>#</a></div><div class='texpara'><div id='3.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='codeblock'><span class='keyword'>if</span> <span class='keyword'>constexpr</span> <span class='parenthesis'>(</span><span class='keyword'>requires</span> <span class='curlybracket'>{</span> unit<span class='operator'>.</span><i >point-origin</i>; <span class='curlybracket'>}</span><span class='parenthesis'>)</span> <span class='curlybracket'>{</span>
|
|
<span class='comment'>// can lose the input unit</span>
|
|
<span class='keyword'>const</span> <span class='keyword'>auto</span> q <span class='operator'>=</span> quantity_from<span class='parenthesis'>(</span>unit<span class='operator'>.</span><i >point-origin</i><span class='parenthesis'>)</span>;
|
|
<span class='keyword'>if</span> <span class='keyword'>constexpr</span> <span class='parenthesis'>(</span><span class='keyword'>requires</span> <span class='curlybracket'>{</span> q<span class='operator'>.</span>in<span class='parenthesis'>(</span>unit<span class='parenthesis'>)</span>; <span class='curlybracket'>}</span><span class='parenthesis'>)</span>
|
|
<span class='comment'>// restore the unit</span>
|
|
<span class='keyword'>return</span> q<span class='operator'>.</span>in<span class='parenthesis'>(</span>unit<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>else</span>
|
|
<span class='keyword'>return</span> q;
|
|
<span class='curlybracket'>}</span> <span class='keyword'>else</span>
|
|
<span class='keyword'>return</span> quantity_from<span class='parenthesis'>(</span>absolute_point_origin<span class='parenthesis'>)</span>;
|
|
</span></div></div></div></div></div></body></html> |