forked from mpusz/mp-units
621 lines
213 KiB
HTML
621 lines
213 KiB
HTML
<!DOCTYPE html><html lang='en'><head><title>[qty.pt]</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'>[qty.pt]</a></h2><div id='general' class='section'><h3 ><a class='secnum' href='#general' style='min-width:80pt'>5.7.1</a> General <a class='abbr_ref' href='qty.pt.general.html'>[qty.pt.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#L5448'>#</a></div><div class='texpara'><div id='general-1.sentence-1' class='sentence'>Subclause [qty.<span class='shy'></span>pt] describes the class template <span class='texttt'>quantity_<span class='shy'></span>point</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 an affine space (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=102-03-02,102-04-01">IEC 60050, 102-03-02,102-04-01</a>)<a class='hidden_link' href='#general-1.sentence-1'>.</a></div></div></div></div><div id='orig' class='section'><h3 ><a class='secnum' href='#orig' style='min-width:80pt'>5.7.2</a> Point origin <a class='abbr_ref' href='qty.pt.orig.html'>[qty.pt.orig]</a></h3><div id='orig.general' class='section'><h4 ><a class='secnum' href='#orig.general' style='min-width:95pt'>5.7.2.1</a> General <a class='abbr_ref' href='qty.pt.orig.general.html'>[qty.pt.orig.general]</a></h4><div class='para' id='orig.general-1'><div class='marginalizedparent'><a class='marginalized' href='#orig.general-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5457'>#</a></div><div class='texpara'><div id='orig.general-1.sentence-1' class='sentence'>This subclause specifies the components
|
|
for defining the origin of an affine space<a class='hidden_link' href='#orig.general-1.sentence-1'>.</a></div> <div id='orig.general-1.sentence-2' class='sentence'>An <a class='hidden_link' href='#def:origin' title='5.7.2.1 General [qty.pt.orig.general]'><span id='def:origin'><i >origin</i></span></a> is a point from which measurements (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=112-04-01">IEC 60050, 112-04-01</a>) take place<a class='hidden_link' href='#orig.general-1.sentence-2'>.</a></div></div></div></div><div id='orig.concepts' class='section'><h4 ><a class='secnum' href='#orig.concepts' style='min-width:95pt'>5.7.2.2</a> Concepts <a class='abbr_ref' href='qty.pt.orig.concepts.html'>[qty.pt.orig.concepts]</a></h4><div class='texpara'><div class='itemdecl' id='orig.concepts-itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#orig.concepts-itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> T<span class='anglebracket'>></span>
|
|
<span class='keyword'>concept</span> <a class='hidden_link' href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='concept:PointOrigin'><span id='lib:PointOrigin'><span class='texttt'>PointOrigin</span></span></span></a> <span class='operator'>=</span> <a class='index' id='conceptref:SymbolicConstant'></a><span class='texttt'><i >SymbolicConstant</i></span><span class='anglebracket'><</span>T<span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span> std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>T, <span class='texttt'><i >point-origin-interface</i></span><span class='anglebracket'>></span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> T, <span class='keyword'>auto</span> QS<span class='anglebracket'>></span>
|
|
<span class='keyword'>concept</span> <a class='hidden_link' href='#concept:PointOriginFor' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='concept:PointOriginFor'><span id='lib:PointOriginFor'><span class='texttt'>PointOriginFor</span></span></span></a> <span class='operator'>=</span> <a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin'><span class='texttt'>PointOrigin</span></span></a><span class='anglebracket'><</span>T<span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span> <a href='qty.spec.concepts.html#concept:QuantitySpecOf' title='5.4.3.2 Concepts [qty.spec.concepts]'><span id='conceptref:QuantitySpecOf'><span class='texttt'>QuantitySpecOf</span></span></a><span class='anglebracket'><</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span>QS<span class='parenthesis'>)</span>, T<span class='operator'>::</span><span class='texttt'><i >quantity-spec</i></span><span class='anglebracket'>></span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> T, <span class='keyword'>auto</span> V<span class='anglebracket'>></span>
|
|
<span class='keyword'>concept</span> <span class='texttt'><i >SameAbsolutePointOriginAs</i></span><a class='index' id='concept:SameAbsolutePointOriginAs'></a> <span class='operator'>=</span> <span class='comment'>// <i >exposition only</i></span>
|
|
<a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin_'><span class='texttt'>PointOrigin</span></span></a><span class='anglebracket'><</span>T<span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span> <a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin__'><span class='texttt'>PointOrigin</span></span></a><span class='anglebracket'><</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span>V<span class='parenthesis'>)</span><span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span> <span class='texttt'><i >same-absolute-point-origins</i></span><span class='parenthesis'>(</span>T<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, V<span class='parenthesis'>)</span>;
|
|
</code></div></div></div><div id='orig.types' class='section'><h4 ><a class='secnum' href='#orig.types' style='min-width:95pt'>5.7.2.3</a> Types <a class='abbr_ref' href='qty.pt.orig.types.html'>[qty.pt.orig.types]</a></h4><div id='qty.abs.pt.orig' class='section'><h4 ><a class='secnum' href='#qty.abs.pt.orig' style='min-width:110pt'>5.7.2.3.1</a> Absolute <a class='abbr_ref' href='qty.abs.pt.orig.html'>[qty.abs.pt.orig]</a></h4><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'><</span><a href='qty.spec.concepts.html#concept:QuantitySpec' title='5.4.3.2 Concepts [qty.spec.concepts]'><span id='conceptref:QuantitySpec'><span class='tcode_in_codeblock'>QuantitySpec</span></span></a> <span class='keyword'>auto</span> QS<span class='anglebracket'>></span>
|
|
<span class='keyword'>struct</span> <span id='lib:absolute_point_origin'><a class='hidden_link' href='#lib:absolute_point_origin' title='5.7.2.3.1 Absolute [qty.abs.pt.orig]'>absolute_point_origin</a></span> <span class='operator'>:</span> <i >point-origin-interface</i> <span class='curlybracket'>{</span>
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <a href='qty.spec.concepts.html#concept:QuantitySpec' title='5.4.3.2 Concepts [qty.spec.concepts]'><span id='conceptref:QuantitySpec_'><span class='tcode_in_codeblock'>QuantitySpec</span></span></a> <span class='keyword'>auto</span> <i >quantity-spec</i> <span class='operator'>=</span> QS; <span class='comment'>// <i >exposition only</i></span>
|
|
<span class='curlybracket'>}</span>;
|
|
|
|
<span class='curlybracket'>}</span>
|
|
</span></div><div class='para' id='qty.abs.pt.orig-1'><div class='marginalizedparent'><a class='marginalized' href='#qty.abs.pt.orig-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5491'>#</a></div><div class='texpara'><div id='qty.abs.pt.orig-1.sentence-1' class='sentence'>An <a class='hidden_link' href='#def:origin,absolute' title='5.7.2.3.1 Absolute [qty.abs.pt.orig]'><span id='def:origin,absolute'><i >absolute origin</i></span></a> is an origin
|
|
chosen by convention and not defined in terms of another origin<a class='hidden_link' href='#qty.abs.pt.orig-1.sentence-1'>.</a></div> <div id='qty.abs.pt.orig-1.sentence-2' class='sentence'>A specialization of <span class='texttt'>absolute_<span class='shy'></span>point_<span class='shy'></span>origin</span> is used as a base type when defining an absolute origin<a class='hidden_link' href='#qty.abs.pt.orig-1.sentence-2'>.</a></div> <div id='qty.abs.pt.orig-1.sentence-3' class='sentence'><span class='texttt'>QS</span> is the quantity the origin represents<a class='hidden_link' href='#qty.abs.pt.orig-1.sentence-3'>.</a></div></div></div></div><div id='qty.rel.pt.orig' class='section'><h4 ><a class='secnum' href='#qty.rel.pt.orig' style='min-width:110pt'>5.7.2.3.2</a> Relative <a class='abbr_ref' href='qty.rel.pt.orig.html'>[qty.rel.pt.orig]</a></h4><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'><</span><a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint'><span class='tcode_in_codeblock'>QuantityPoint</span></span></a> <span class='keyword'>auto</span> QP<span class='anglebracket'>></span>
|
|
<span class='keyword'>struct</span> <span id='lib:relative_point_origin'><a class='hidden_link' href='#lib:relative_point_origin' title='5.7.2.3.2 Relative [qty.rel.pt.orig]'>relative_point_origin</a></span> <span class='operator'>:</span> <i >point-origin-interface</i> <span class='curlybracket'>{</span>
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint_'><span class='tcode_in_codeblock'>QuantityPoint</span></span></a> <span class='keyword'>auto</span> <i >quantity-point</i> <span class='operator'>=</span> QP; <span class='comment'>// <i >exposition only</i></span>
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <a href='qty.spec.concepts.html#concept:QuantitySpec' title='5.4.3.2 Concepts [qty.spec.concepts]'><span id='conceptref:QuantitySpec__'><span class='tcode_in_codeblock'>QuantitySpec</span></span></a> <span class='keyword'>auto</span> <i >quantity-spec</i> <span class='operator'>=</span> <i ><span class='texttt'>see below</span></i>; <span class='comment'>// <i >exposition only</i></span>
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin___'><span class='tcode_in_codeblock'>PointOrigin</span></span></a> <span class='keyword'>auto</span> <i >absolute-point-origin</i> <span class='operator'>=</span> <span class='comment'>// <i >exposition only</i></span>
|
|
QP<span class='operator'>.</span>absolute_point_origin;
|
|
<span class='curlybracket'>}</span>;
|
|
|
|
<span class='curlybracket'>}</span>
|
|
</span></div><div class='para' id='qty.rel.pt.orig-1'><div class='marginalizedparent'><a class='marginalized' href='#qty.rel.pt.orig-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5513'>#</a></div><div class='texpara'><div id='qty.rel.pt.orig-1.sentence-1' class='sentence'>A <a class='hidden_link' href='#def:origin,relative' title='5.7.2.3.2 Relative [qty.rel.pt.orig]'><span id='def:origin,relative'><i >relative origin</i></span></a> is an origin
|
|
of a subspace (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=102-03-03">IEC 60050, 102-03-03</a>)<a class='hidden_link' href='#qty.rel.pt.orig-1.sentence-1'>.</a></div> <div id='qty.rel.pt.orig-1.sentence-2' class='sentence'>A specialization of <span class='texttt'>relative_<span class='shy'></span>point_<span class='shy'></span>origin</span> is used as a base type when defining a relative origin <i >O</i><a class='hidden_link' href='#qty.rel.pt.orig-1.sentence-2'>.</a></div> <div id='qty.rel.pt.orig-1.sentence-3' class='sentence'><i >O</i> is offset from <span class='texttt'>QP<span class='operator'>.</span>absolute_<span class='shy'></span>point_<span class='shy'></span>origin</span> by <span class='texttt'>QP<span class='operator'>.</span>quantity_<span class='shy'></span>from_<span class='shy'></span>zero<span class='parenthesis'>(</span><span class='parenthesis'>)</span></span><a class='hidden_link' href='#qty.rel.pt.orig-1.sentence-3'>.</a></div></div></div><div class='para' id='qty.rel.pt.orig-2'><div class='marginalizedparent'><a class='marginalized' href='#qty.rel.pt.orig-2'>2</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5519'>#</a></div><div class='texpara'><div id='qty.rel.pt.orig-2.sentence-1' class='sentence'>The member <span class='texttt'><i >quantity-spec</i></span> is equal to
|
|
<span class='texttt'>QP<span class='operator'>.</span>point_<span class='shy'></span>origin<span class='operator'>.</span><span class='texttt'><i >quantity-spec</i></span></span> if
|
|
<span class='codeblock'><a class='index' id='conceptref:QuantityKindSpec'></a><i >QuantityKindSpec</i><span class='anglebracket'><</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>(</span>QP<span class='operator'>.</span><i >quantity-spec</i><span class='parenthesis'>)</span><span class='parenthesis'>)</span><span class='anglebracket'>></span>
|
|
</span>
|
|
is satisfied, and
|
|
to <span class='texttt'>QP<span class='operator'>.</span><span class='texttt'><i >quantity-spec</i></span></span> otherwise<a class='hidden_link' href='#qty.rel.pt.orig-2.sentence-1'>.</a></div></div></div></div><div id='qty.zeroth.pt.orig' class='section'><h4 ><a class='secnum' href='#qty.zeroth.pt.orig' style='min-width:110pt'>5.7.2.3.3</a> Zeroth <a class='abbr_ref' href='qty.zeroth.pt.orig.html'>[qty.zeroth.pt.orig]</a></h4><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'><</span><a href='qty.spec.concepts.html#concept:QuantitySpec' title='5.4.3.2 Concepts [qty.spec.concepts]'><span id='conceptref:QuantitySpec___'><span class='tcode_in_codeblock'>QuantitySpec</span></span></a> <span class='keyword'>auto</span> QS<span class='anglebracket'>></span>
|
|
<span class='keyword'>struct</span> <span id='lib:zeroth_point_origin_'><a class='hidden_link' href='#lib:zeroth_point_origin_' title='5.7.2.3.3 Zeroth [qty.zeroth.pt.orig]'>zeroth_point_origin_</a></span> <span class='keyword'>final</span> <span class='operator'>:</span> absolute_point_origin<span class='anglebracket'><</span>QS<span class='anglebracket'>></span> <span class='curlybracket'>{</span><span class='curlybracket'>}</span>;
|
|
|
|
<span class='curlybracket'>}</span>
|
|
</span></div><div class='para' id='qty.zeroth.pt.orig-1'><div class='marginalizedparent'><a class='marginalized' href='#qty.zeroth.pt.orig-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5539'>#</a></div><div class='texpara'><div id='qty.zeroth.pt.orig-1.sentence-1' class='sentence'><span class='texttt'>zeroth_<span class='shy'></span>point_<span class='shy'></span>origin_<span class='shy'></span><span class='anglebracket'><</span>QS<span class='anglebracket'>></span></span> represents an origin
|
|
chosen by convention as the value <span class='math'>0</span> of the quantity <span class='texttt'>QS</span><a class='hidden_link' href='#qty.zeroth.pt.orig-1.sentence-1'>.</a></div></div></div></div></div><div id='orig.ops' class='section'><h4 ><a class='secnum' href='#orig.ops' style='min-width:95pt'>5.7.2.4</a> Operations <a class='abbr_ref' href='qty.pt.orig.ops.html'>[qty.pt.orig.ops]</a></h4><div class='texpara'><span class='codeblock'><span class='keyword'>namespace</span> mp_units <span class='curlybracket'>{</span>
|
|
|
|
<span class='keyword'>struct</span> <i >point-origin-interface</i> <span class='curlybracket'>{</span>
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin____'><span class='tcode_in_codeblock'>PointOrigin</span></span></a> PO, <span class='keyword'>typename</span> FwdQ,
|
|
<a href='qty.syn.html#concept:QuantityOf' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:QuantityOf'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'><</span>PO<span class='operator'>::</span><i >quantity-spec</i><span class='anglebracket'>></span> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQ<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> quantity_point<span class='anglebracket'><</span>Q<span class='operator'>::</span>reference, PO<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, <span class='keyword'>typename</span> Q<span class='operator'>::</span>rep<span class='anglebracket'>></span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span>PO, FwdQ<span class='operator'>&</span><span class='operator'>&</span> q<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity'><span class='tcode_in_codeblock'>Quantity</span></span></a> FwdQ, <a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin_____'><span class='tcode_in_codeblock'>PointOrigin</span></span></a> PO,
|
|
<a href='qty.syn.html#concept:QuantityOf' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:QuantityOf_'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'><</span>PO<span class='operator'>::</span><i >quantity-spec</i><span class='anglebracket'>></span> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQ<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> quantity_point<span class='anglebracket'><</span>Q<span class='operator'>::</span>reference, PO<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, <span class='keyword'>typename</span> Q<span class='operator'>::</span>rep<span class='anglebracket'>></span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span>FwdQ<span class='operator'>&</span><span class='operator'>&</span> q, PO<span class='parenthesis'>)</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin______'><span class='tcode_in_codeblock'>PointOrigin</span></span></a> PO, <a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity_'><span class='tcode_in_codeblock'>Quantity</span></span></a> Q<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <a href='qty.ref.concepts.html#concept:ReferenceOf' title='5.4.5 Concepts [qty.ref.concepts]'><span id='conceptref:ReferenceOf'><span class='tcode_in_codeblock'>ReferenceOf</span></span></a><span class='anglebracket'><</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>reference<span class='parenthesis'>)</span><span class='parenthesis'>)</span>, PO<span class='operator'>::</span><i >quantity-spec</i><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint__'><span class='tcode_in_codeblock'>QuantityPoint</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span>PO po, <span class='keyword'>const</span> Q<span class='operator'>&</span> q<span class='parenthesis'>)</span>
|
|
<span class='keyword'>requires</span> <span class='keyword'>requires</span> <span class='curlybracket'>{</span> <span class='operator'>-</span>q; <span class='curlybracket'>}</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin_______'><span class='tcode_in_codeblock'>PointOrigin</span></span></a> PO1, <a class='index' id='conceptref:SameAbsolutePointOriginAs'></a><i >SameAbsolutePointOriginAs</i><span class='anglebracket'><</span>PO1<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='anglebracket'>></span> PO2<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>friend</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='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>PO1 po1, PO2 po2<span class='parenthesis'>)</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin________'><span class='tcode_in_codeblock'>PointOrigin</span></span></a> PO1, <a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin_________'><span class='tcode_in_codeblock'>PointOrigin</span></span></a> PO2<span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>consteval</span> <span class='keyword'>bool</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='operator'>=</span><span class='parenthesis'>(</span>PO1 po1, PO2 po2<span class='parenthesis'>)</span>;
|
|
<span class='curlybracket'>}</span>;
|
|
|
|
<span class='curlybracket'>}</span>
|
|
</span></div><div class='texpara'><div id='lib:quantity,operator+'><div id='lib:operator+,quantity'><div id='lib:point-origin-interface,operator+'><div id='lib:operator+,point-origin-interface'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator+,point-origin-interface'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin__________'><span class='texttt'>PointOrigin</span></span></a> PO, <span class='keyword'>typename</span> FwdQ,
|
|
<a href='qty.syn.html#concept:QuantityOf' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:QuantityOf__'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'><</span>PO<span class='operator'>::</span><span class='texttt'><i >quantity-spec</i></span><span class='anglebracket'>></span> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQ<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> quantity_point<span class='anglebracket'><</span>Q<span class='operator'>::</span>reference, PO<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, <span class='keyword'>typename</span> Q<span class='operator'>::</span>rep<span class='anglebracket'>></span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span>PO, FwdQ<span class='operator'>&</span><span class='operator'>&</span> q<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</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> FwdQ, <a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin___________'><span class='texttt'>PointOrigin</span></span></a> PO,
|
|
<a href='qty.syn.html#concept:QuantityOf' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:QuantityOf___'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'><</span>PO<span class='operator'>::</span><span class='texttt'><i >quantity-spec</i></span><span class='anglebracket'>></span> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQ<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> quantity_point<span class='anglebracket'><</span>Q<span class='operator'>::</span>reference, PO<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, <span class='keyword'>typename</span> Q<span class='operator'>::</span>rep<span class='anglebracket'>></span> <span class='keyword'>operator</span><span class='operator'>+</span><span class='parenthesis'>(</span>FwdQ<span class='operator'>&</span><span class='operator'>&</span> q, PO<span class='parenthesis'>)</span>;
|
|
</code></div></div></div></div></div></div><div class='para' id='orig.ops-1'><div class='marginalizedparent'><a class='marginalized' href='#orig.ops-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5584'>#</a></div><div class='texpara'><div id='orig.ops-1.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='texttt'><span class='keyword'>return</span> quantity_<span class='shy'></span>point<span class='curlybracket'>{</span>std<span class='operator'>​::​</span>forward<span class='anglebracket'><</span>FwdQ<span class='anglebracket'>></span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span>, PO<span class='curlybracket'>{</span><span class='curlybracket'>}</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:point-origin-interface,operator-'><div id='lib:operator-,point-origin-interface'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator-,point-origin-interface'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin____________'><span class='texttt'>PointOrigin</span></span></a> PO, <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> Q<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <a href='qty.ref.concepts.html#concept:ReferenceOf' title='5.4.5 Concepts [qty.ref.concepts]'><span id='conceptref:ReferenceOf_'><span class='texttt'>ReferenceOf</span></span></a><span class='anglebracket'><</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>(</span>Q<span class='operator'>::</span>reference<span class='parenthesis'>)</span><span class='parenthesis'>)</span>, PO<span class='operator'>::</span><span class='texttt'><i >quantity-spec</i></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint___'><span class='texttt'>QuantityPoint</span></span></a> <span class='keyword'>auto</span> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span>PO po, <span class='keyword'>const</span> Q<span class='operator'>&</span> q<span class='parenthesis'>)</span>
|
|
<span class='keyword'>requires</span> <span class='keyword'>requires</span> <span class='curlybracket'>{</span> <span class='operator'>-</span>q; <span class='curlybracket'>}</span>;
|
|
</code></div></div></div></div></div></div><div class='para' id='orig.ops-2'><div class='marginalizedparent'><a class='marginalized' href='#orig.ops-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5600'>#</a></div><div class='texpara'><div id='orig.ops-2.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='texttt'><span class='keyword'>return</span> po <span class='operator'>+</span> <span class='operator'>-</span>q;</span></div></div></div></div><div class='texpara'><div id='lib:point-origin-interface,operator-_'><div id='lib:operator-,point-origin-interface_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator-,point-origin-interface_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin_____________'><span class='texttt'>PointOrigin</span></span></a> PO1, <a class='index' id='conceptref:SameAbsolutePointOriginAs_'></a><span class='texttt'><i >SameAbsolutePointOriginAs</i></span><span class='anglebracket'><</span>PO1<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='anglebracket'>></span> PO2<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>friend</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> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span>PO1 po1, PO2 po2<span class='parenthesis'>)</span>;
|
|
</code></div></div></div></div><div class='para' id='orig.ops-3'><div class='marginalizedparent'><a class='marginalized' href='#orig.ops-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5614'>#</a></div><div class='texpara'><div id='orig.ops-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><i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO1, absolute_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='curlybracket'>{</span>
|
|
<span class='keyword'>return</span> po1 <span class='operator'>-</span> po2<span class='operator'>.</span><i >quantity-point</i>;
|
|
<span class='curlybracket'>}</span> <span class='keyword'>else</span> <span class='keyword'>if</span> <span class='keyword'>constexpr</span> <span class='parenthesis'>(</span><i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO2, absolute_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='curlybracket'>{</span>
|
|
<span class='keyword'>return</span> po1<span class='operator'>.</span><i >quantity-point</i> <span class='operator'>-</span> po2;
|
|
<span class='curlybracket'>}</span> <span class='keyword'>else</span> <span class='curlybracket'>{</span>
|
|
<span class='keyword'>return</span> po1<span class='operator'>.</span><i >quantity-point</i> <span class='operator'>-</span> po2<span class='operator'>.</span><i >quantity-point</i>;
|
|
<span class='curlybracket'>}</span>
|
|
</span></div></div></div></div><div class='para' id='orig.ops-4'><div class='marginalizedparent'><a class='marginalized' href='#orig.ops-4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5627'>#</a></div><div class='texpara'><div id='orig.ops-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'><a href='qty.spec.concepts.html#concept:QuantitySpecOf' title='5.4.3.2 Concepts [qty.spec.concepts]'><span id='conceptref:QuantitySpecOf_'><span class='tcode_in_codeblock'>QuantitySpecOf</span></span></a><span class='anglebracket'><</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>(</span>PO1<span class='operator'>::</span><i >quantity-spec</i><span class='parenthesis'>)</span><span class='parenthesis'>)</span>, PO2<span class='operator'>::</span><i >quantity-spec</i><span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<span class='parenthesis'>(</span><i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO1, relative_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='operator'>|</span><span class='operator'>|</span>
|
|
<i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO2, relative_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
|
</span></div></div></div></div><div class='texpara'><div id='lib:point-origin-interface,operator=='><div id='lib:operator==,point-origin-interface'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator==,point-origin-interface'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin______________'><span class='texttt'>PointOrigin</span></span></a> PO1, <a href='#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'>friend</span> <span class='keyword'>consteval</span> <span class='keyword'>bool</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='operator'>=</span><span class='parenthesis'>(</span>PO1 po1, PO2 po2<span class='parenthesis'>)</span>;
|
|
</code></div></div></div></div><div class='para' id='orig.ops-5'><div class='marginalizedparent'><a class='marginalized' href='#orig.ops-5'>5</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5644'>#</a></div><div class='texpara'><div id='orig.ops-5.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><i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO1, absolute_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO2, absolute_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>return</span> std<span class='operator'>::</span>is_same_v<span class='anglebracket'><</span>PO1, PO2<span class='anglebracket'>></span> <span class='operator'>|</span><span class='operator'>|</span>
|
|
<span class='parenthesis'>(</span><i >is-specialization-of</i><span class='anglebracket'><</span>PO1, zeroth_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<i >is-specialization-of</i><span class='anglebracket'><</span>PO2, zeroth_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
interconvertible<span class='parenthesis'>(</span>po1<span class='operator'>.</span><i >quantity-spec</i>, po2<span class='operator'>.</span><i >quantity-spec</i><span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
|
|
<span class='keyword'>else</span> <span class='keyword'>if</span> <span class='keyword'>constexpr</span> <span class='parenthesis'>(</span><i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO1, relative_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO2, relative_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>return</span> PO1<span class='operator'>::</span><i >quantity-point</i> <span class='operator'>=</span><span class='operator'>=</span> PO2<span class='operator'>::</span><i >quantity-point</i>;
|
|
<span class='keyword'>else</span> <span class='keyword'>if</span> <span class='keyword'>constexpr</span> <span class='parenthesis'>(</span><i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO1, relative_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>return</span> <i >same-absolute-point-origins</i><span class='parenthesis'>(</span>po1, po2<span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
is_eq_zero<span class='parenthesis'>(</span>PO1<span class='operator'>::</span><i >quantity-point</i><span class='operator'>.</span>quantity_from_zero<span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
|
|
<span class='keyword'>else</span> <span class='keyword'>if</span> <span class='keyword'>constexpr</span> <span class='parenthesis'>(</span><i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO2, relative_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>return</span> <i >same-absolute-point-origins</i><span class='parenthesis'>(</span>po1, po2<span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
is_eq_zero<span class='parenthesis'>(</span>PO2<span class='operator'>::</span><i >quantity-point</i><span class='operator'>.</span>quantity_from_zero<span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
|
|
</span></div></div></div></div></div><div id='orig.utils' class='section'><h4 ><a class='secnum' href='#orig.utils' style='min-width:95pt'>5.7.2.5</a> Utilities <a class='abbr_ref' href='qty.pt.orig.utils.html'>[qty.pt.orig.utils]</a></h4><div id='qty.same.abs.pt.origs' class='section'><h4 ><a class='secnum' href='#qty.same.abs.pt.origs' style='min-width:110pt'>5.7.2.5.1</a> Same absolute <a class='abbr_ref' href='qty.same.abs.pt.origs.html'>[qty.same.abs.pt.origs]</a></h4><div class='texpara'><div id='lib:same-absolute-point-origins,PointOrigin'><div id='lib:PointOrigin,same-absolute-point-origins'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:PointOrigin,same-absolute-point-origins'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin________________'><span class='texttt'>PointOrigin</span></span></a> PO1, <a href='#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'>consteval</span> <span class='keyword'>bool</span> <span class='texttt'><i >same-absolute-point-origins</i></span><span class='parenthesis'>(</span>PO1 po1, PO2 po2<span class='parenthesis'>)</span>; <span class='comment'>// <i >exposition only</i></span>
|
|
</code></div></div></div></div><div class='para' id='qty.same.abs.pt.origs-1'><div class='marginalizedparent'><a class='marginalized' href='#qty.same.abs.pt.origs-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5677'>#</a></div><div class='texpara'><div id='qty.same.abs.pt.origs-1.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><i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO1, absolute_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO2, absolute_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>return</span> po1 <span class='operator'>=</span><span class='operator'>=</span> po2;
|
|
<span class='keyword'>else</span> <span class='keyword'>if</span> <span class='keyword'>constexpr</span> <span class='parenthesis'>(</span><i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO1, relative_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO2, relative_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>return</span> po1<span class='operator'>.</span><i >absolute-point-origin</i> <span class='operator'>=</span><span class='operator'>=</span> po2<span class='operator'>.</span><i >absolute-point-origin</i>;
|
|
<span class='keyword'>else</span> <span class='keyword'>if</span> <span class='keyword'>constexpr</span> <span class='parenthesis'>(</span><i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO1, relative_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>return</span> po1<span class='operator'>.</span><i >absolute-point-origin</i> <span class='operator'>=</span><span class='operator'>=</span> po2;
|
|
<span class='keyword'>else</span> <span class='keyword'>if</span> <span class='keyword'>constexpr</span> <span class='parenthesis'>(</span><i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO2, relative_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>return</span> po1 <span class='operator'>=</span><span class='operator'>=</span> po2<span class='operator'>.</span><i >absolute-point-origin</i>;
|
|
<span class='keyword'>else</span>
|
|
<span class='keyword'>return</span> <span class='literal'>false</span>;
|
|
</span></div></div></div></div></div><div id='qty.def.pt.orig' class='section'><h4 ><a class='secnum' href='#qty.def.pt.orig' style='min-width:110pt'>5.7.2.5.2</a> Default <a class='abbr_ref' href='qty.def.pt.orig.html'>[qty.def.pt.orig]</a></h4><div class='texpara'><div id='lib:default_point_origin,Reference'><div id='lib:Reference,default_point_origin'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:Reference,default_point_origin'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5 Concepts [qty.ref.concepts]'><span id='conceptref:Reference'><span class='texttt'>Reference</span></span></a> R<span class='anglebracket'>></span>
|
|
<span class='keyword'>consteval</span> <a href='#concept:PointOriginFor' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOriginFor'><span class='texttt'>PointOriginFor</span></span></a><span class='anglebracket'><</span>get_quantity_spec<span class='parenthesis'>(</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span><span class='anglebracket'>></span> <span class='keyword'>auto</span> default_point_origin<span class='parenthesis'>(</span>R<span class='parenthesis'>)</span>;
|
|
</code></div></div></div></div><div class='para' id='qty.def.pt.orig-1'><div class='marginalizedparent'><a class='marginalized' href='#qty.def.pt.orig-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5705'>#</a></div><div class='texpara'><div id='qty.def.pt.orig-1.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> get_unit<span class='parenthesis'>(</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span><span class='operator'>.</span><i >point-origin</i>; <span class='curlybracket'>}</span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>return</span> get_unit<span class='parenthesis'>(</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span><span class='operator'>.</span><i >point-origin</i>;
|
|
<span class='keyword'>else</span>
|
|
<span class='keyword'>return</span> zeroth_point_origin<span class='anglebracket'><</span>get_quantity_spec<span class='parenthesis'>(</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span><span class='anglebracket'>></span>;
|
|
</span></div></div></div></div></div></div></div><div id='like' class='section'><h3 ><a class='secnum' href='#like' style='min-width:80pt'>5.7.3</a> Interoperability <a class='abbr_ref' href='qty.pt.like.html'>[qty.pt.like]</a></h3><div class='texpara'><div class='itemdecl' id='concept:QuantityPointLike'><div class='marginalizedparent'><a class='itemDeclLink' href='#concept:QuantityPointLike'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> T<span class='anglebracket'>></span>
|
|
<span class='keyword'>concept</span> <a class='hidden_link' href='#concept:QuantityPointLike' title='5.7.3 Interoperability [qty.pt.like]'><span id='concept:QuantityPointLike'><span id='lib:QuantityPointLike'><span class='texttt'>QuantityPointLike</span></span></span></a> <span class='operator'>=</span>
|
|
<span class='operator'>!</span><a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint____'><span class='texttt'>QuantityPoint</span></span></a><span class='anglebracket'><</span>T<span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<a class='index' id='conceptref:qty-like-impl'></a><span class='texttt'><i >qty-like-impl</i></span><span class='anglebracket'><</span>T, quantity_point_like_traits<span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span> <span class='comment'>// see <a href='qty.like.html' title='5.6.2 Interoperability'>[qty.<span class='shy'></span>like]</a></span>
|
|
<span class='keyword'>requires</span> <span class='curlybracket'>{</span>
|
|
<span class='keyword'>typename</span> quantity_point<span class='anglebracket'><</span>quantity_point_like_traits<span class='anglebracket'><</span>T<span class='anglebracket'>></span><span class='operator'>::</span>reference,
|
|
quantity_point_like_traits<span class='anglebracket'><</span>T<span class='anglebracket'>></span><span class='operator'>::</span>point_origin,
|
|
<span class='keyword'>typename</span> quantity_point_like_traits<span class='anglebracket'><</span>T<span class='anglebracket'>></span><span class='operator'>::</span>rep<span class='anglebracket'>></span>;
|
|
<span class='curlybracket'>}</span>;
|
|
</code></div></div></div><div id='syn' class='section'><h3 ><a class='secnum' href='#syn' style='min-width:80pt'>5.7.4</a> Class template <span class='texttt'>quantity_<span class='shy'></span>point</span> <a class='abbr_ref' href='qty.pt.syn.html'>[qty.pt.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'><</span><span class='keyword'>typename</span> T<span class='anglebracket'>></span>
|
|
<span class='keyword'>concept</span> <a class='hidden_link' href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='concept:QuantityPoint'><span id='lib:QuantityPoint'><span class='tcode_in_codeblock'>QuantityPoint</span></span></span></a> <span class='operator'>=</span> <span class='parenthesis'>(</span><i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>T, quantity_point<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> QP, <span class='keyword'>auto</span> V<span class='anglebracket'>></span>
|
|
<span class='keyword'>concept</span> <a class='hidden_link' href='#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='concept:QuantityPointOf'><span id='lib:QuantityPointOf'><span class='tcode_in_codeblock'>QuantityPointOf</span></span></span></a> <span class='operator'>=</span>
|
|
<a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint_____'><span class='tcode_in_codeblock'>QuantityPoint</span></span></a><span class='anglebracket'><</span>QP<span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span> <span class='parenthesis'>(</span><a href='qty.spec.concepts.html#concept:QuantitySpecOf' title='5.4.3.2 Concepts [qty.spec.concepts]'><span id='conceptref:QuantitySpecOf__'><span class='tcode_in_codeblock'>QuantitySpecOf</span></span></a><span class='anglebracket'><</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>(</span>QP<span class='operator'>::</span>quantity_spec<span class='parenthesis'>)</span><span class='parenthesis'>)</span>, V<span class='anglebracket'>></span> <span class='operator'>|</span><span class='operator'>|</span>
|
|
<a class='index' id='conceptref:SameAbsolutePointOriginAs__'></a><i >SameAbsolutePointOriginAs</i><span class='anglebracket'><</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>(</span>QP<span class='operator'>::</span>absolute_point_origin<span class='parenthesis'>)</span><span class='parenthesis'>)</span>, V<span class='anglebracket'>></span><span class='parenthesis'>)</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5 Concepts [qty.ref.concepts]'><span id='conceptref:Reference_'><span class='tcode_in_codeblock'>Reference</span></span></a> <span class='keyword'>auto</span> R,
|
|
<a href='#concept:PointOriginFor' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOriginFor_'><span class='tcode_in_codeblock'>PointOriginFor</span></span></a><span class='anglebracket'><</span>get_quantity_spec<span class='parenthesis'>(</span>R<span class='parenthesis'>)</span><span class='anglebracket'>></span> <span class='keyword'>auto</span> PO <span class='operator'>=</span> default_point_origin<span class='parenthesis'>(</span>R<span class='parenthesis'>)</span>,
|
|
<a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:RepresentationOf'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'><</span>get_quantity_spec<span class='parenthesis'>(</span>R<span class='parenthesis'>)</span><span class='anglebracket'>></span> Rep <span class='operator'>=</span> <span class='keyword'>double</span><span class='anglebracket'>></span>
|
|
<span class='keyword'>class</span> <span id='lib:quantity_point'><a class='hidden_link' href='#lib:quantity_point' title='5.7.4 Class template quantity_­point [qty.pt.syn]'>quantity_point</a></span> <span class='curlybracket'>{</span>
|
|
<span class='keyword'>public</span><span class='operator'>:</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 Concepts [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 Concepts [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 Concepts [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 Concepts [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'>static</span> <span class='keyword'>constexpr</span> <a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin__________________'><span class='tcode_in_codeblock'>PointOrigin</span></span></a> <span class='keyword'>auto</span> absolute_point_origin <span class='operator'>=</span> <i ><span class='texttt'>see below</span></i>;
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin___________________'><span class='tcode_in_codeblock'>PointOrigin</span></span></a> <span class='keyword'>auto</span> point_origin <span class='operator'>=</span> PO;
|
|
<span class='keyword'>using</span> rep <span class='operator'>=</span> Rep;
|
|
<span class='keyword'>using</span> quantity_type <span class='operator'>=</span> quantity<span class='anglebracket'><</span>reference, Rep<span class='anglebracket'>></span>;
|
|
|
|
quantity_type <i >quantity-from-origin</i>; <span class='comment'>// <i >exposition only</i></span>
|
|
|
|
<span class='comment'>// <a href='#static' title='5.7.5 Static member functions'>[qty.<span class='shy'></span>pt.<span class='shy'></span>static]</a>, static member functions</span>
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> quantity_point 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_point 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.7.6 Constructors'>[qty.<span class='shy'></span>pt.<span class='shy'></span>cons]</a>, constructors and assignment</span>
|
|
|
|
quantity_point<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='operator'>=</span> <span class='keyword'>default</span>;
|
|
quantity_point<span class='parenthesis'>(</span><span class='keyword'>const</span> quantity_point<span class='operator'>&</span><span class='parenthesis'>)</span> <span class='operator'>=</span> <span class='keyword'>default</span>;
|
|
quantity_point<span class='parenthesis'>(</span>quantity_point<span class='operator'>&</span><span class='operator'>&</span><span class='parenthesis'>)</span> <span class='operator'>=</span> <span class='keyword'>default</span>;
|
|
<span class='operator'>~</span>quantity_point<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'><</span><span class='keyword'>typename</span> FwdQ, <a href='qty.syn.html#concept:QuantityOf' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:QuantityOf____'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQ<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> std<span class='operator'>::</span>constructible_from<span class='anglebracket'><</span>quantity_type, FwdQ<span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<span class='parenthesis'>(</span>point_origin <span class='operator'>=</span><span class='operator'>=</span> default_point_origin<span class='parenthesis'>(</span>R<span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<span class='parenthesis'>(</span>implicitly_convertible<span class='parenthesis'>(</span>Q<span class='operator'>::</span>quantity_spec, quantity_spec<span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>constexpr</span> <span class='keyword'>explicit</span> quantity_point<span class='parenthesis'>(</span>FwdQ<span class='operator'>&</span><span class='operator'>&</span> q<span class='parenthesis'>)</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> FwdQ, <a href='qty.syn.html#concept:QuantityOf' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:QuantityOf_____'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQ<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> std<span class='operator'>::</span>constructible_from<span class='anglebracket'><</span>quantity_type, FwdQ<span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> quantity_point<span class='parenthesis'>(</span>FwdQ<span class='operator'>&</span><span class='operator'>&</span> q, <span class='keyword'>decltype</span><span class='parenthesis'>(</span>PO<span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> FwdQ, <a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin____________________'><span class='tcode_in_codeblock'>PointOrigin</span></span></a> PO2,
|
|
<a href='qty.syn.html#concept:QuantityOf' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:QuantityOf______'><span class='tcode_in_codeblock'>QuantityOf</span></span></a><span class='anglebracket'><</span>PO2<span class='operator'>::</span><i >quantity-spec</i><span class='anglebracket'>></span> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQ<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> std<span class='operator'>::</span>constructible_from<span class='anglebracket'><</span>quantity_type, FwdQ<span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span> <a class='index' id='conceptref:SameAbsolutePointOriginAs___'></a><i >SameAbsolutePointOriginAs</i><span class='anglebracket'><</span>PO2, PO<span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> quantity_point<span class='parenthesis'>(</span>FwdQ<span class='operator'>&</span><span class='operator'>&</span> q, PO2<span class='parenthesis'>)</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf'><span class='tcode_in_codeblock'>QuantityPointOf</span></span></a><span class='anglebracket'><</span>absolute_point_origin<span class='anglebracket'>></span> QP<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> std<span class='operator'>::</span>constructible_from<span class='anglebracket'><</span>quantity_type, <span class='keyword'>typename</span> QP<span class='operator'>::</span>quantity_type<span class='anglebracket'>></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'><</span><span class='keyword'>typename</span> QP<span class='operator'>::</span>quantity_type, quantity_type<span class='anglebracket'>></span><span class='parenthesis'>)</span>
|
|
quantity_point<span class='parenthesis'>(</span><span class='keyword'>const</span> QP<span class='operator'>&</span> qp<span class='parenthesis'>)</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:QuantityPointLike' title='5.7.3 Interoperability [qty.pt.like]'><span id='conceptref:QuantityPointLike'><span class='tcode_in_codeblock'>QuantityPointLike</span></span></a> QP<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<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_point<span class='parenthesis'>(</span><span class='keyword'>const</span> QP<span class='operator'>&</span> qp<span class='parenthesis'>)</span>;
|
|
|
|
quantity_point<span class='operator'>&</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='parenthesis'>(</span><span class='keyword'>const</span> quantity_point<span class='operator'>&</span><span class='parenthesis'>)</span> <span class='operator'>=</span> <span class='keyword'>default</span>;
|
|
quantity_point<span class='operator'>&</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='parenthesis'>(</span>quantity_point<span class='operator'>&</span><span class='operator'>&</span><span class='parenthesis'>)</span> <span class='operator'>=</span> <span class='keyword'>default</span>;
|
|
|
|
<span class='comment'>// <a href='#conv' title='5.7.7 Conversions'>[qty.<span class='shy'></span>pt.<span class='shy'></span>conv]</a>, conversions</span>
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:SameAbsolutePointOriginAs____'></a><i >SameAbsolutePointOriginAs</i><span class='anglebracket'><</span>absolute_point_origin<span class='anglebracket'>></span> NewPO<span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> <a href='#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf_'><span class='tcode_in_codeblock'>QuantityPointOf</span></span></a><span class='anglebracket'><</span><span class='parenthesis'>(</span>NewPO<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span><span class='anglebracket'>></span> <span class='keyword'>auto</span> point_for<span class='parenthesis'>(</span>NewPO new_origin<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:UnitCompatibleWith'></a><i >UnitCompatibleWith</i><span class='anglebracket'><</span>unit, quantity_spec<span class='anglebracket'>></span> ToU<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf__'><span class='tcode_in_codeblock'>QuantityPointOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></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'><</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:RepresentationOf_'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> ToRep<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf___'><span class='tcode_in_codeblock'>QuantityPointOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></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'><</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:RepresentationOf__'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> ToRep,
|
|
<a class='index' id='conceptref:UnitCompatibleWith_'></a><i >UnitCompatibleWith</i><span class='anglebracket'><</span>unit, quantity_spec<span class='anglebracket'>></span> ToU<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf____'><span class='tcode_in_codeblock'>QuantityPointOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></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'><</span><a class='index' id='conceptref:UnitCompatibleWith__'></a><i >UnitCompatibleWith</i><span class='anglebracket'><</span>unit, quantity_spec<span class='anglebracket'>></span> ToU<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf_____'><span class='tcode_in_codeblock'>QuantityPointOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></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'><</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:RepresentationOf___'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> ToRep<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf______'><span class='tcode_in_codeblock'>QuantityPointOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></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'><</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:RepresentationOf____'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> ToRep,
|
|
<a class='index' id='conceptref:UnitCompatibleWith___'></a><i >UnitCompatibleWith</i><span class='anglebracket'><</span>unit, quantity_spec<span class='anglebracket'>></span> ToU<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf_______'><span class='tcode_in_codeblock'>QuantityPointOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></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.7.8 Quantity value observers'>[qty.<span class='shy'></span>pt.<span class='shy'></span>obs]</a>, quantity value observers</span>
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin_____________________'><span class='tcode_in_codeblock'>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='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin______________________'><span class='tcode_in_codeblock'>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>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin_______________________'><span class='tcode_in_codeblock'>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'>void</span> quantity_ref_from<span class='parenthesis'>(</span>PO2<span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='operator'>&</span><span class='operator'>&</span> <span class='operator'>=</span> <span class='keyword'>delete</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin________________________'><span class='tcode_in_codeblock'>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='tcode_in_codeblock'>Quantity</span></span></a> <span class='keyword'>auto</span> quantity_from<span class='parenthesis'>(</span>PO2<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf________'><span class='tcode_in_codeblock'>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='tcode_in_codeblock'>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><span class='parenthesis'>)</span> <span class='keyword'>const</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='tcode_in_codeblock'>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>;
|
|
|
|
<span class='comment'>// <a href='#conv.ops' title='5.7.9 Conversion operations'>[qty.<span class='shy'></span>pt.<span class='shy'></span>conv.<span class='shy'></span>ops]</a>, conversion operations</span>
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> QP_, <a href='#concept:QuantityPointLike' title='5.7.3 Interoperability [qty.pt.like]'><span id='conceptref:QuantityPointLike_'><span class='tcode_in_codeblock'>QuantityPointLike</span></span></a> QP <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>QP_<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<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> QP_<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='operator'>&</span> <span class='keyword'>noexcept</span><span class='parenthesis'>(</span><i ><span class='texttt'>see below</span></i><span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> QP_, <a href='#concept:QuantityPointLike' title='5.7.3 Interoperability [qty.pt.like]'><span id='conceptref:QuantityPointLike__'><span class='tcode_in_codeblock'>QuantityPointLike</span></span></a> QP <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>QP_<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<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> QP_<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</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.7.10 Unary operations'>[qty.<span class='shy'></span>pt.<span class='shy'></span>unary.<span class='shy'></span>ops]</a>, unary operations</span>
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:Mutable'></a><i >Mutable</i><span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP<span class='anglebracket'>></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>QP<span class='operator'>&</span><span class='operator'>&</span> qp<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'><</span><a class='index' id='conceptref:Mutable_'></a><i >Mutable</i><span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP<span class='anglebracket'>></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>QP<span class='operator'>&</span><span class='operator'>&</span> qp<span class='parenthesis'>)</span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
|
|
|
|
<span class='keyword'>constexpr</span> quantity_point <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> quantity_point <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.7.11 Compound assignment operations'>[qty.<span class='shy'></span>pt.<span class='shy'></span>assign.<span class='shy'></span>ops]</a>, compound assignment operations</span>
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:Mutable__'></a><i >Mutable</i><span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></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>QP<span class='operator'>&</span><span class='operator'>&</span> qp, <span class='keyword'>const</span> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</span> q<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:Mutable___'></a><i >Mutable</i><span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></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>QP<span class='operator'>&</span><span class='operator'>&</span> qp, <span class='keyword'>const</span> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</span> q<span class='parenthesis'>)</span>;
|
|
|
|
<span class='comment'>// <a href='#arith.ops' title='5.7.12 Arithmetic operations'>[qty.<span class='shy'></span>pt.<span class='shy'></span>arith.<span class='shy'></span>ops]</a>, arithmetic operations</span>
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint______'><span class='tcode_in_codeblock'>QuantityPoint</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> QP<span class='operator'>&</span> qp, <span class='keyword'>const</span> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</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'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint_______'><span class='tcode_in_codeblock'>QuantityPoint</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> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</span> q, <span class='keyword'>const</span> QP<span class='operator'>&</span> qp<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'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint________'><span class='tcode_in_codeblock'>QuantityPoint</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> QP<span class='operator'>&</span> qp, <span class='keyword'>const</span> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</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'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <a href='#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf_________'><span class='tcode_in_codeblock'>QuantityPointOf</span></span></a><span class='anglebracket'><</span>absolute_point_origin<span class='anglebracket'>></span> QP2<span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</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='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> QP<span class='operator'>&</span> lhs, <span class='keyword'>const</span> QP2<span class='operator'>&</span> rhs<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'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin_________________________'><span class='tcode_in_codeblock'>PointOrigin</span></span></a> PO2<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>friend</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='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> QP<span class='operator'>&</span> qp, PO2 po<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin__________________________'><span class='tcode_in_codeblock'>PointOrigin</span></span></a> PO2<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>friend</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='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>PO2 po, <span class='keyword'>const</span> QP<span class='operator'>&</span> qp<span class='parenthesis'>)</span>;
|
|
|
|
<span class='comment'>// <a href='#cmp' title='5.7.13 Comparison'>[qty.<span class='shy'></span>pt.<span class='shy'></span>cmp]</a>, comparison</span>
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <a href='#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf__________'><span class='tcode_in_codeblock'>QuantityPointOf</span></span></a><span class='anglebracket'><</span>absolute_point_origin<span class='anglebracket'>></span> QP2<span class='anglebracket'>></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> QP<span class='operator'>&</span> lhs, <span class='keyword'>const</span> QP2<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <a href='#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf___________'><span class='tcode_in_codeblock'>QuantityPointOf</span></span></a><span class='anglebracket'><</span>absolute_point_origin<span class='anglebracket'>></span> QP2<span class='anglebracket'>></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'><</span><span class='operator'>=</span><span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='keyword'>const</span> QP<span class='operator'>&</span> lhs, <span class='keyword'>const</span> QP2<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
<span class='curlybracket'>}</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity____________'><span class='tcode_in_codeblock'>Quantity</span></span></a> Q<span class='anglebracket'>></span>
|
|
<span class='keyword'>explicit</span> quantity_point<span class='parenthesis'>(</span>Q q<span class='parenthesis'>)</span>
|
|
<span class='operator'>-</span><span class='anglebracket'>></span> quantity_point<span class='anglebracket'><</span>Q<span class='operator'>::</span>reference, default_point_origin<span class='parenthesis'>(</span>Q<span class='operator'>::</span>reference<span class='parenthesis'>)</span>, <span class='keyword'>typename</span> Q<span class='operator'>::</span>rep<span class='anglebracket'>></span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.syn.html#concept:Quantity' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:Quantity_____________'><span class='tcode_in_codeblock'>Quantity</span></span></a> Q, <a href='#concept:PointOriginFor' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOriginFor__'><span class='tcode_in_codeblock'>PointOriginFor</span></span></a><span class='anglebracket'><</span>Q<span class='operator'>::</span>quantity_spec<span class='anglebracket'>></span> PO<span class='anglebracket'>></span>
|
|
quantity_point<span class='parenthesis'>(</span>Q, PO<span class='parenthesis'>)</span> <span class='operator'>-</span><span class='anglebracket'>></span> quantity_point<span class='anglebracket'><</span>Q<span class='operator'>::</span>reference, PO<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, <span class='keyword'>typename</span> Q<span class='operator'>::</span>rep<span class='anglebracket'>></span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:QuantityPointLike' title='5.7.3 Interoperability [qty.pt.like]'><span id='conceptref:QuantityPointLike___'><span class='tcode_in_codeblock'>QuantityPointLike</span></span></a> QP, <span class='keyword'>typename</span> Traits <span class='operator'>=</span> quantity_point_like_traits<span class='anglebracket'><</span>QP<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>explicit</span><span class='parenthesis'>(</span>quantity_point_like_traits<span class='anglebracket'><</span>QP<span class='anglebracket'>></span><span class='operator'>::</span>explicit_import<span class='parenthesis'>)</span> quantity_point<span class='parenthesis'>(</span>QP<span class='parenthesis'>)</span>
|
|
<span class='operator'>-</span><span class='anglebracket'>></span> quantity_point<span class='anglebracket'><</span>Traits<span class='operator'>::</span>reference, Traits<span class='operator'>::</span>point_origin, <span class='keyword'>typename</span> Traits<span class='operator'>::</span>rep<span class='anglebracket'>></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#L5928'>#</a></div><div class='texpara'><div id='syn-1.sentence-1' class='sentence'><span class='texttt'>quantity_<span class='shy'></span>point<span class='anglebracket'><</span>R, PO, Rep<span class='anglebracket'>></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 class='para' id='syn-2'><div class='marginalizedparent'><a class='marginalized' href='#syn-2'>2</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5932'>#</a></div><div class='texpara'><div id='syn-2.sentence-1' class='sentence'>The member <span class='texttt'>absolute_<span class='shy'></span>point_<span class='shy'></span>origin</span> is equal to <span class='texttt'>PO</span> if
|
|
<span class='codeblock'><i >is-derived-from-specialization-of</i><span class='anglebracket'><</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span>PO<span class='parenthesis'>)</span>, absolute_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span>
|
|
</span>
|
|
is <span class='texttt'><span class='literal'>true</span></span>, and
|
|
to <span class='texttt'>PO<span class='operator'>.</span><span class='texttt'><i >quantity-point</i></span><span class='operator'>.</span>absolute_<span class='shy'></span>point_<span class='shy'></span>origin</span> otherwise<a class='hidden_link' href='#syn-2.sentence-1'>.</a></div></div></div></div><div id='static' class='section'><h3 ><a class='secnum' href='#static' style='min-width:80pt'>5.7.5</a> Static member functions <a class='abbr_ref' href='qty.pt.static.html'>[qty.pt.static]</a></h3><div class='texpara'><div id='lib:quantity_point,max'><div id='lib:max,quantity_point'><div id='lib:quantity_point,min'><div id='lib:min,quantity_point'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:min,quantity_point'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>static</span> <span class='keyword'>constexpr</span> quantity_point 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_point 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 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#L5952'>#</a></div><div class='texpara'><div id='static-1.sentence-1' class='sentence'>Let <i >F</i> be one of <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#L5955'>#</a></div><div class='texpara'><div id='static-2.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'><span class='curlybracket'>{</span>quantity_<span class='shy'></span>type<span class='operator'>​::​</span><i >F</i><span class='parenthesis'>(</span><span class='parenthesis'>)</span>, PO<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#L5959'>#</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> quantity_type<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.7.6</a> Constructors <a class='abbr_ref' href='qty.pt.cons.html'>[qty.pt.cons]</a></h3><div class='texpara'><div id='lib:quantity_point,constructor'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity_point,constructor'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> FwdQ, <a href='qty.syn.html#concept:QuantityOf' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:QuantityOf_______'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQ<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> std<span class='operator'>::</span>constructible_from<span class='anglebracket'><</span>quantity_type, FwdQ<span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<span class='parenthesis'>(</span>point_origin <span class='operator'>=</span><span class='operator'>=</span> default_point_origin<span class='parenthesis'>(</span>R<span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<span class='parenthesis'>(</span>implicitly_convertible<span class='parenthesis'>(</span>Q<span class='operator'>::</span>quantity_spec, quantity_spec<span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>constexpr</span> <span class='keyword'>explicit</span> quantity_point<span class='parenthesis'>(</span>FwdQ<span class='operator'>&</span><span class='operator'>&</span> q<span class='parenthesis'>)</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> FwdQ, <a href='qty.syn.html#concept:QuantityOf' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:QuantityOf________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQ<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> std<span class='operator'>::</span>constructible_from<span class='anglebracket'><</span>quantity_type, FwdQ<span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> quantity_point<span class='parenthesis'>(</span>FwdQ<span class='operator'>&</span><span class='operator'>&</span> q, <span class='keyword'>decltype</span><span class='parenthesis'>(</span>PO<span class='parenthesis'>)</span><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#L5983'>#</a></div><div class='texpara'><div id='cons-1.sentence-1' class='sentence'><i >Effects</i>: Initializes <span class='texttt'><i >quantity-from-origin</i></span> with <span class='texttt'>std<span class='operator'>​::​</span>forward<span class='anglebracket'><</span>FwdQ<span class='anglebracket'>></span><span class='parenthesis'>(</span>q<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_point,constructor_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity_point,constructor_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> FwdQ, <a href='#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin___________________________'><span class='texttt'>PointOrigin</span></span></a> PO2,
|
|
<a href='qty.syn.html#concept:QuantityOf' title='5.6.3 Class template quantity [qty.syn]'><span id='conceptref:QuantityOf_________'><span class='texttt'>QuantityOf</span></span></a><span class='anglebracket'><</span>PO2<span class='operator'>::</span><span class='texttt'><i >quantity-spec</i></span><span class='anglebracket'>></span> Q <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQ<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> std<span class='operator'>::</span>constructible_from<span class='anglebracket'><</span>quantity_type, FwdQ<span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span> <a class='index' id='conceptref:SameAbsolutePointOriginAs_____'></a><span class='texttt'><i >SameAbsolutePointOriginAs</i></span><span class='anglebracket'><</span>PO2, PO<span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> quantity_point<span class='parenthesis'>(</span>FwdQ<span class='operator'>&</span><span class='operator'>&</span> q, PO2<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#L5997'>#</a></div><div class='texpara'><div id='cons-2.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='codeblock'>quantity_point<span class='parenthesis'>(</span>quantity_point<span class='anglebracket'><</span>Q<span class='operator'>::</span>reference, PO2<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, <span class='keyword'>typename</span> Q<span class='operator'>::</span>rep<span class='anglebracket'>></span><span class='curlybracket'>{</span>std<span class='operator'>::</span>forward<span class='anglebracket'><</span>FwdQ<span class='anglebracket'>></span><span class='parenthesis'>(</span>q<span class='parenthesis'>)</span>,
|
|
PO2<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span>
|
|
</span></div></div></div></div><div class='texpara'><div id='lib:quantity_point,constructor__'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity_point,constructor__'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='#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'>requires</span> std<span class='operator'>::</span>constructible_from<span class='anglebracket'><</span>quantity_type, <span class='keyword'>typename</span> QP<span class='operator'>::</span>quantity_type<span class='anglebracket'>></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'><</span><span class='keyword'>typename</span> QP<span class='operator'>::</span>quantity_type, quantity_type<span class='anglebracket'>></span><span class='parenthesis'>)</span>
|
|
quantity_point<span class='parenthesis'>(</span><span class='keyword'>const</span> QP<span class='operator'>&</span> qp<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#L6015'>#</a></div><div class='texpara'><div id='cons-3.sentence-1' class='sentence'><i >Effects</i>: If <span class='texttt'>point_<span class='shy'></span>origin <span class='operator'>=</span><span class='operator'>=</span> QP<span class='operator'>​::​</span>point_<span class='shy'></span>origin</span> is <span class='texttt'><span class='literal'>true</span></span>,
|
|
initializes <span class='texttt'><i >quantity-from-origin</i></span> with <span class='texttt'>qp<span class='operator'>.</span>quantity_<span class='shy'></span>ref_<span class='shy'></span>from<span class='parenthesis'>(</span>point_<span class='shy'></span>origin<span class='parenthesis'>)</span></span><a class='hidden_link' href='#cons-3.sentence-1'>.</a></div> <div id='cons-3.sentence-2' class='sentence'>Otherwise, initializes <span class='texttt'><i >quantity-from-origin</i></span> with <span class='texttt'>qp <span class='operator'>-</span> point_<span class='shy'></span>origin</span><a class='hidden_link' href='#cons-3.sentence-2'>.</a></div></div></div></div><div class='texpara'><div id='lib:quantity_point,constructor___'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity_point,constructor___'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:QuantityPointLike' title='5.7.3 Interoperability [qty.pt.like]'><span id='conceptref:QuantityPointLike____'><span class='texttt'>QuantityPointLike</span></span></a> QP<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<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_point<span class='parenthesis'>(</span><span class='keyword'>const</span> QP<span class='operator'>&</span> qp<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#L6030'>#</a></div><div class='texpara'><div id='cons-4.sentence-1' class='sentence'>Let <span class='texttt'>Traits</span> be <span class='texttt'>quantity_<span class='shy'></span>point_<span class='shy'></span>like_<span class='shy'></span>traits<span class='anglebracket'><</span>QP<span class='anglebracket'>></span></span><a class='hidden_link' href='#cons-4.sentence-1'>.</a></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#L6033'>#</a></div><div class='texpara'><div id='cons-5.sentence-1' class='sentence'><i >Effects</i>: Initializes <span class='texttt'><i >quantity-from-origin</i></span> with
|
|
<span class='codeblock'>Traits<span class='operator'>::</span>to_numerical_value<span class='parenthesis'>(</span>qp<span class='parenthesis'>)</span>, get_unit<span class='parenthesis'>(</span>Traits<span class='operator'>::</span>reference<span class='parenthesis'>)</span>
|
|
</span></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#L6040'>#</a></div><div class='texpara'><div id='cons-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>Traits<span class='operator'>::</span>point_origin <span class='operator'>=</span><span class='operator'>=</span> point_origin<span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
std<span class='operator'>::</span>convertible_to<span class='anglebracket'><</span>quantity<span class='anglebracket'><</span>Traits<span class='operator'>::</span>reference, <span class='keyword'>typename</span> Traits<span class='operator'>::</span>rep<span class='anglebracket'>></span>, quantity_type<span class='anglebracket'>></span>
|
|
</span></div> <div id='cons-6.sentence-2' class='sentence'>
|
|
The expression inside <span class='texttt'><span class='keyword'>explicit</span></span> is equivalent to:
|
|
<span class='codeblock'>Traits<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'><</span>quantity<span class='anglebracket'><</span>Traits<span class='operator'>::</span>reference, <span class='keyword'>typename</span> Traits<span class='operator'>::</span>rep<span class='anglebracket'>></span>, quantity_type<span class='anglebracket'>></span>
|
|
</span></div></div></div></div></div><div id='conv' class='section'><h3 ><a class='secnum' href='#conv' style='min-width:80pt'>5.7.7</a> Conversions <a class='abbr_ref' href='qty.pt.conv.html'>[qty.pt.conv]</a></h3><div class='texpara'><div id='lib:quantity_point,point_for'><div id='lib:point_for,quantity_point'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:point_for,quantity_point'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:SameAbsolutePointOriginAs______'></a><span class='texttt'><i >SameAbsolutePointOriginAs</i></span><span class='anglebracket'><</span>absolute_point_origin<span class='anglebracket'>></span> NewPO<span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> <a href='#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><span class='parenthesis'>(</span>NewPO<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span><span class='anglebracket'>></span> <span class='keyword'>auto</span> point_for<span class='parenthesis'>(</span>NewPO new_origin<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#L6063'>#</a></div><div class='texpara'><div id='conv-1.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>std<span class='operator'>::</span>is_same_v<span class='anglebracket'><</span>NewPO, <span class='keyword'>decltype</span><span class='parenthesis'>(</span>point_origin<span class='parenthesis'>)</span><span class='anglebracket'>></span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>return</span> <span class='operator'>*</span><span class='keyword'>this</span>;
|
|
<span class='keyword'>else</span>
|
|
<span class='keyword'>return</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>quantity_point<span class='curlybracket'>{</span><span class='operator'>*</span><span class='keyword'>this</span> <span class='operator'>-</span> new_origin, new_origin<span class='curlybracket'>}</span>;
|
|
</span></div></div></div></div><div class='texpara'><div id='lib:quantity_point,force_in'><div id='lib:force_in,quantity_point'><div id='lib:quantity_point,in'><div id='lib:in,quantity_point'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:in,quantity_point'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:UnitCompatibleWith____'></a><span class='texttt'><i >UnitCompatibleWith</i></span><span class='anglebracket'><</span>unit, quantity_spec<span class='anglebracket'>></span> ToU<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#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>quantity_spec<span class='anglebracket'>></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'><</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:RepresentationOf_____'><span class='texttt'>RepresentationOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> ToRep<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#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>quantity_spec<span class='anglebracket'>></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'><</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:RepresentationOf______'><span class='texttt'>RepresentationOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> ToRep,
|
|
<a class='index' id='conceptref:UnitCompatibleWith_____'></a><span class='texttt'><i >UnitCompatibleWith</i></span><span class='anglebracket'><</span>unit, quantity_spec<span class='anglebracket'>></span> ToU<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#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>quantity_spec<span class='anglebracket'>></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'><</span><a class='index' id='conceptref:UnitCompatibleWith______'></a><span class='texttt'><i >UnitCompatibleWith</i></span><span class='anglebracket'><</span>unit, quantity_spec<span class='anglebracket'>></span> ToU<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#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>quantity_spec<span class='anglebracket'>></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'><</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:RepresentationOf_______'><span class='texttt'>RepresentationOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> ToRep<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#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>quantity_spec<span class='anglebracket'>></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'><</span><a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:RepresentationOf________'><span class='texttt'>RepresentationOf</span></span></a><span class='anglebracket'><</span>quantity_spec<span class='anglebracket'>></span> ToRep,
|
|
<a class='index' id='conceptref:UnitCompatibleWith_______'></a><span class='texttt'><i >UnitCompatibleWith</i></span><span class='anglebracket'><</span>unit, quantity_spec<span class='anglebracket'>></span> ToU<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#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>quantity_spec<span class='anglebracket'>></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></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#L6105'>#</a></div><div class='texpara'><div id='conv-2.sentence-1' class='sentence'>Let <span class='texttt'><i >converted-quantity-expr</i></span> be an expression denoting
|
|
the function call to the corresponding member of <span class='texttt'>quantity_<span class='shy'></span>ref_<span class='shy'></span>from<span class='parenthesis'>(</span>point_<span class='shy'></span>origin<span class='parenthesis'>)</span></span><a class='hidden_link' href='#conv-2.sentence-1'>.</a></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#L6109'>#</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> <span class='operator'>::</span>mp_units<span class='operator'>::</span>quantity_point<span class='curlybracket'>{</span><i >converted-quantity-expr</i>, point_origin<span class='curlybracket'>}</span>;
|
|
</span></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#L6116'>#</a></div><div class='texpara'><div id='conv-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> <i >converted-quantity-expr</i>; <span class='curlybracket'>}</span>
|
|
</span></div></div></div></div></div><div id='obs' class='section'><h3 ><a class='secnum' href='#obs' style='min-width:80pt'>5.7.8</a> Quantity value observers <a class='abbr_ref' href='qty.pt.obs.html'>[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='#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='#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='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#L6137'>#</a></div><div class='texpara'><div id='obs-1.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'><i >quantity-from-origin</i></span><a class='hidden_link' href='#obs-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='#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='#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='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#L6153'>#</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='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='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#L6165'>#</a></div><div class='texpara'><div id='obs-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><div id='conv.ops' class='section'><h3 ><a class='secnum' href='#conv.ops' style='min-width:80pt'>5.7.9</a> Conversion operations <a class='abbr_ref' href='qty.pt.conv.ops.html'>[qty.pt.conv.ops]</a></h3><div class='texpara'><div id='lib:quantity_point,operator_QuantityPointLike'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity_point,operator_QuantityPointLike'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> QP_, <a href='#concept:QuantityPointLike' title='5.7.3 Interoperability [qty.pt.like]'><span id='conceptref:QuantityPointLike_____'><span class='texttt'>QuantityPointLike</span></span></a> QP <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>QP_<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<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> QP_<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='operator'>&</span> <span class='keyword'>noexcept</span><span class='parenthesis'>(</span><i ><span class='texttt'>see below</span></i><span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> QP_, <a href='#concept:QuantityPointLike' title='5.7.3 Interoperability [qty.pt.like]'><span id='conceptref:QuantityPointLike______'><span class='texttt'>QuantityPointLike</span></span></a> QP <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>QP_<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<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> QP_<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</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-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#L6195'>#</a></div><div class='texpara'><div id='conv.ops-1.sentence-1' class='sentence'>Let <span class='texttt'>Traits</span> be <span class='texttt'>quantity_<span class='shy'></span>point_<span class='shy'></span>like_<span class='shy'></span>traits<span class='anglebracket'><</span>QP<span class='anglebracket'>></span></span><a class='hidden_link' href='#conv.ops-1.sentence-1'>.</a></div> <div id='conv.ops-1.sentence-2' class='sentence'>Let <span class='texttt'><i >result-expr</i></span> be
|
|
<span class='codeblock'>Traits<span class='operator'>::</span>from_numerical_value<span class='parenthesis'>(</span>std<span class='operator'>::</span>move<span class='parenthesis'>(</span><i >quantity-from-origin</i><span class='parenthesis'>)</span><span class='operator'>.</span><i >numerical-value</i><span class='parenthesis'>)</span>
|
|
</span></div></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#L6202'>#</a></div><div class='texpara'><div id='conv.ops-2.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'><i >result-expr</i></span><a class='hidden_link' href='#conv.ops-2.sentence-1'>.</a></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#L6206'>#</a></div><div class='texpara'><div id='conv.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='parenthesis'>(</span>point_origin <span class='operator'>=</span><span class='operator'>=</span> Traits<span class='operator'>::</span>point_origin<span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
std<span class='operator'>::</span>convertible_to<span class='anglebracket'><</span>quantity_type, quantity<span class='anglebracket'><</span>Traits<span class='operator'>::</span>reference, <span class='keyword'>typename</span> Traits<span class='operator'>::</span>rep<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
</span></div> <div id='conv.ops-3.sentence-2' class='sentence'>
|
|
The expression inside <span class='texttt'><span class='keyword'>explicit</span></span> is equivalent to:
|
|
<span class='codeblock'>Traits<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'><</span>quantity_type, quantity<span class='anglebracket'><</span>Traits<span class='operator'>::</span>reference, <span class='keyword'>typename</span> Traits<span class='operator'>::</span>rep<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
</span></div> <div id='conv.ops-3.sentence-3' class='sentence'>
|
|
Let <i >T</i> be
|
|
<span class='texttt'>std<span class='operator'>​::​</span>is_<span class='shy'></span>nothrow_<span class='shy'></span>copy_<span class='shy'></span>constructible_<span class='shy'></span>v</span> for the first signature, and
|
|
<span class='texttt'>std<span class='operator'>​::​</span>is_<span class='shy'></span>nothrow_<span class='shy'></span>move_<span class='shy'></span>constructible_<span class='shy'></span>v</span> for the second signature<a class='hidden_link' href='#conv.ops-3.sentence-3'>.</a></div> <div id='conv.ops-3.sentence-4' class='sentence'>The exception specification is equivalent to:
|
|
<span class='codeblock'><span class='keyword'>noexcept</span><span class='parenthesis'>(</span><i >result-expr</i><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span> <i >T</i><span class='anglebracket'><</span>rep<span class='anglebracket'>></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.7.10</a> Unary operations <a class='abbr_ref' href='qty.pt.unary.ops.html'>[qty.pt.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#L6229'>#</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_point,operator--'><div id='lib:operator--,quantity_point'><div id='lib:quantity_point,operator++'><div id='lib:operator++,quantity_point'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator++,quantity_point'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:Mutable____'></a><span class='texttt'><i >Mutable</i></span><span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP<span class='anglebracket'>></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>QP<span class='operator'>&</span><span class='operator'>&</span> qp<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'><</span><a class='index' id='conceptref:Mutable_____'></a><span class='texttt'><i >Mutable</i></span><span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP<span class='anglebracket'>></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>QP<span class='operator'>&</span><span class='operator'>&</span> qp<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-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#L6245'>#</a></div><div class='texpara'><div id='unary.ops-2.sentence-1' class='sentence'><i >Effects</i>: Equivalent to
|
|
<span class='texttt'>@qp<span class='operator'>.</span><span class='texttt'><i >quantity-from-origin</i></span></span><a class='hidden_link' href='#unary.ops-2.sentence-1'>.</a></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#L6250'>#</a></div><div class='texpara'><div id='unary.ops-3.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'>std<span class='operator'>​::​</span>forward<span class='anglebracket'><</span>QP<span class='anglebracket'>></span><span class='parenthesis'>(</span>qp<span class='parenthesis'>)</span></span><a class='hidden_link' href='#unary.ops-3.sentence-1'>.</a></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#L6254'>#</a></div><div class='texpara'><div id='unary.ops-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> @qp<span class='operator'>.</span><i >quantity-from-origin</i>; <span class='curlybracket'>}</span>
|
|
</span></div></div></div></div><div class='texpara'><div id='lib:quantity_point,operator--_'><div id='lib:operator--,quantity_point_'><div id='lib:quantity_point,operator++_'><div id='lib:operator++,quantity_point_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator++,quantity_point_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>constexpr</span> quantity_point <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> quantity_point <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-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#L6272'>#</a></div><div class='texpara'><div id='unary.ops-5.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='texttt'><span class='keyword'>return</span> <span class='curlybracket'>{</span><span class='texttt'><i >quantity-from-origin</i></span>@, PO<span class='curlybracket'>}</span>;</span></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#L6277'>#</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='curlybracket'>{</span> <i >quantity-from-origin</i>@; <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.7.11</a> Compound assignment operations <a class='abbr_ref' href='qty.pt.assign.ops.html'>[qty.pt.assign.ops]</a></h3><div class='texpara'><div id='lib:quantity,operator-='><div id='lib:operator-=,quantity'><div id='lib:quantity_point,operator-='><div id='lib:operator-=,quantity_point'><div id='lib:quantity,operator+='><div id='lib:operator+=,quantity'><div id='lib:quantity_point,operator+='><div id='lib:operator+=,quantity_point'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator+=,quantity_point'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:Mutable______'></a><span class='texttt'><i >Mutable</i></span><span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></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>QP<span class='operator'>&</span><span class='operator'>&</span> qp, <span class='keyword'>const</span> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</span> q<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:Mutable_______'></a><span class='texttt'><i >Mutable</i></span><span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></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>QP<span class='operator'>&</span><span class='operator'>&</span> qp, <span class='keyword'>const</span> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</span> q<span class='parenthesis'>)</span>;
|
|
</code></div></div></div></div></div></div></div></div></div></div><div class='para' id='assign.ops-1'><div class='marginalizedparent'><a class='marginalized' href='#assign.ops-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L6301'>#</a></div><div class='texpara'><div id='assign.ops-1.sentence-1' class='sentence'>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><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#L6304'>#</a></div><div class='texpara'><div id='assign.ops-2.sentence-1' class='sentence'><i >Effects</i>: Equivalent to
|
|
<span class='texttt'>qp<span class='operator'>.</span><span class='texttt'><i >quantity-from-origin</i></span> @ q</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#L6309'>#</a></div><div class='texpara'><div id='assign.ops-3.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'>std<span class='operator'>​::​</span>forward<span class='anglebracket'><</span>QP<span class='anglebracket'>></span><span class='parenthesis'>(</span>qp<span class='parenthesis'>)</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#L6313'>#</a></div><div class='texpara'><div id='assign.ops-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'><a class='index' id='conceptref:QuantityConvertibleTo'></a><i >QuantityConvertibleTo</i><span class='anglebracket'><</span>quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span>, quantity_type<span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<span class='keyword'>requires</span> <span class='curlybracket'>{</span> qp<span class='operator'>.</span><i >quantity-from-origin</i> @ q; <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.7.12</a> Arithmetic operations <a class='abbr_ref' href='qty.pt.arith.ops.html'>[qty.pt.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#L6324'>#</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_point,operator-'><div id='lib:operator-,quantity_point'><div id='lib:quantity,operator+'><div id='lib:operator+,quantity'><div id='lib:quantity_point,operator+'><div id='lib:operator+,quantity_point'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator+,quantity_point'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint_________'><span class='texttt'>QuantityPoint</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> QP<span class='operator'>&</span> qp, <span class='keyword'>const</span> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</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'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint__________'><span class='texttt'>QuantityPoint</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> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</span> q, <span class='keyword'>const</span> QP<span class='operator'>&</span> qp<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'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <span class='keyword'>auto</span> R2, <span class='keyword'>typename</span> Rep2<span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</span> <span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint___________'><span class='texttt'>QuantityPoint</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> QP<span class='operator'>&</span> qp, <span class='keyword'>const</span> quantity<span class='anglebracket'><</span>R2, Rep2<span class='anglebracket'>></span><span class='operator'>&</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 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#L6345'>#</a></div><div class='texpara'><div id='arith.ops-2.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><i >is-specialization-of</i><span class='anglebracket'><</span>PO, zeroth_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>return</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>quantity_point<span class='curlybracket'>{</span>qp<span class='operator'>.</span>quantity_ref_from<span class='parenthesis'>(</span>PO<span class='parenthesis'>)</span> @ q<span class='curlybracket'>}</span>;
|
|
<span class='keyword'>else</span>
|
|
<span class='keyword'>return</span> <span class='operator'>::</span>mp_units<span class='operator'>::</span>quantity_point<span class='curlybracket'>{</span>qp<span class='operator'>.</span>quantity_ref_from<span class='parenthesis'>(</span>PO<span class='parenthesis'>)</span> @ q, PO<span class='curlybracket'>}</span>;
|
|
</span></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#L6355'>#</a></div><div class='texpara'><div id='arith.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'><a href='qty.ref.concepts.html#concept:ReferenceOf' title='5.4.5 Concepts [qty.ref.concepts]'><span id='conceptref:ReferenceOf__'><span class='tcode_in_codeblock'>ReferenceOf</span></span></a><span class='anglebracket'><</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span>R2<span class='parenthesis'>)</span>, PO<span class='operator'>.</span><i >quantity-spec</i><span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span> <span class='keyword'>requires</span> <span class='curlybracket'>{</span>
|
|
qp<span class='operator'>.</span>quantity_ref_from<span class='parenthesis'>(</span>PO<span class='parenthesis'>)</span> @ q;
|
|
<span class='curlybracket'>}</span>
|
|
</span></div></div></div></div><div class='texpara'><div id='lib:quantity_point,operator-_'><div id='lib:operator-,quantity_point_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator-,quantity_point_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <a href='#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> QP2<span class='anglebracket'>></span>
|
|
<span class='keyword'>friend</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> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='keyword'>const</span> QP<span class='operator'>&</span> lhs, <span class='keyword'>const</span> QP2<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>;
|
|
</code></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#L6373'>#</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'>return</span> lhs<span class='operator'>.</span>quantity_ref_from<span class='parenthesis'>(</span>point_origin<span class='parenthesis'>)</span> <span class='operator'>-</span> rhs<span class='operator'>.</span>quantity_ref_from<span class='parenthesis'>(</span>QP2<span class='operator'>::</span>point_origin<span class='parenthesis'>)</span> <span class='operator'>+</span>
|
|
<span class='parenthesis'>(</span>lhs<span class='operator'>.</span>point_origin <span class='operator'>-</span> rhs<span class='operator'>.</span>point_origin<span class='parenthesis'>)</span>;
|
|
</span></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#L6381'>#</a></div><div class='texpara'><div id='arith.ops-5.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> lhs<span class='operator'>.</span>quantity_ref_from<span class='parenthesis'>(</span>point_origin<span class='parenthesis'>)</span> <span class='operator'>-</span> rhs<span class='operator'>.</span>quantity_ref_from<span class='parenthesis'>(</span>QP2<span class='operator'>::</span>point_origin<span class='parenthesis'>)</span>; <span class='curlybracket'>}</span>
|
|
</span></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#L6388'>#</a></div><div class='texpara'><div id='arith.ops-6.sentence-1' class='sentence'><i >Recommended practice</i>: The subtraction of two equal origins is not evaluated<a class='hidden_link' href='#arith.ops-6.sentence-1'>.</a></div></div></div></div><div class='texpara'><div id='lib:PointOrigin,operator-'><div id='lib:operator-,PointOrigin'><div id='lib:quantity_point,operator-__'><div id='lib:operator-,quantity_point__'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator-,quantity_point__'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <a href='#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> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>friend</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> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span><span class='keyword'>const</span> QP<span class='operator'>&</span> qp, PO2 po<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <a href='#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> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>friend</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> <span class='keyword'>operator</span><span class='operator'>-</span><span class='parenthesis'>(</span>PO2 po, <span class='keyword'>const</span> QP<span class='operator'>&</span> qp<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#L6405'>#</a></div><div class='texpara'><div id='arith.ops-7.sentence-1' class='sentence'><i >Effects</i>: For the first signature,
|
|
equivalent to:
|
|
<span class='codeblock'><span class='keyword'>if</span> <span class='keyword'>constexpr</span> <span class='parenthesis'>(</span>point_origin <span class='operator'>=</span><span class='operator'>=</span> po<span class='parenthesis'>)</span>
|
|
<span class='keyword'>return</span> qp<span class='operator'>.</span>quantity_ref_from<span class='parenthesis'>(</span>point_origin<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>else</span> <span class='keyword'>if</span> <span class='keyword'>constexpr</span> <span class='parenthesis'>(</span><i >is-derived-from-specialization-of</i><span class='anglebracket'><</span>PO2,
|
|
<span class='operator'>::</span>mp_units<span class='operator'>::</span>absolute_point_origin<span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='curlybracket'>{</span>
|
|
<span class='keyword'>return</span> qp<span class='operator'>.</span>quantity_ref_from<span class='parenthesis'>(</span>point_origin<span class='parenthesis'>)</span> <span class='operator'>+</span> <span class='parenthesis'>(</span>qp<span class='operator'>.</span>point_origin <span class='operator'>-</span> qp<span class='operator'>.</span>absolute_point_origin<span class='parenthesis'>)</span>;
|
|
<span class='curlybracket'>}</span> <span class='keyword'>else</span> <span class='curlybracket'>{</span>
|
|
<span class='keyword'>return</span> qp<span class='operator'>.</span>quantity_ref_from<span class='parenthesis'>(</span>point_origin<span class='parenthesis'>)</span> <span class='operator'>-</span>
|
|
po<span class='operator'>.</span><i >quantity-point</i><span class='operator'>.</span>quantity_ref_from<span class='parenthesis'>(</span>po<span class='operator'>.</span><i >quantity-point</i><span class='operator'>.</span>point_origin<span class='parenthesis'>)</span> <span class='operator'>+</span>
|
|
<span class='parenthesis'>(</span>qp<span class='operator'>.</span>point_origin <span class='operator'>-</span> po<span class='operator'>.</span><i >quantity-point</i><span class='operator'>.</span>point_origin<span class='parenthesis'>)</span>;
|
|
<span class='curlybracket'>}</span>
|
|
</span></div> <div id='arith.ops-7.sentence-2' class='sentence'>
|
|
For the second signature,
|
|
equivalent to: <span class='texttt'><span class='keyword'>return</span> <span class='operator'>-</span><span class='parenthesis'>(</span>qp <span class='operator'>-</span> po<span class='parenthesis'>)</span>;</span></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#L6424'>#</a></div><div class='texpara'><div id='arith.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'><a href='#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf______________________'><span class='tcode_in_codeblock'>QuantityPointOf</span></span></a><span class='anglebracket'><</span>quantity_point, PO2<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<a href='qty.ref.concepts.html#concept:ReferenceOf' title='5.4.5 Concepts [qty.ref.concepts]'><span id='conceptref:ReferenceOf___'><span class='tcode_in_codeblock'>ReferenceOf</span></span></a><span class='anglebracket'><</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>(</span>reference<span class='parenthesis'>)</span><span class='parenthesis'>)</span>, PO2<span class='operator'>::</span><i >quantity-spec</i><span class='anglebracket'>></span>
|
|
</span></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#L6432'>#</a></div><div class='texpara'><div id='arith.ops-9.sentence-1' class='sentence'><i >Recommended practice</i>: The subtraction of two equal origins is not evaluated<a class='hidden_link' href='#arith.ops-9.sentence-1'>.</a></div></div></div></div></div><div id='cmp' class='section'><h3 ><a class='secnum' href='#cmp' style='min-width:80pt'>5.7.13</a> Comparison <a class='abbr_ref' href='qty.pt.cmp.html'>[qty.pt.cmp]</a></h3><div class='texpara'><div id='lib:quantity_point,operator<=>'><div id='lib:operator<=>,quantity_point'><div id='lib:quantity_point,operator=='><div id='lib:operator==,quantity_point'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator==,quantity_point'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <a href='#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> QP2<span class='anglebracket'>></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> QP<span class='operator'>&</span> lhs, <span class='keyword'>const</span> QP2<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span>std<span class='operator'>::</span>derived_from<span class='anglebracket'><</span>quantity_point<span class='anglebracket'>></span> QP, <a href='#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> QP2<span class='anglebracket'>></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'><</span><span class='operator'>=</span><span class='anglebracket'>></span><span class='parenthesis'>(</span><span class='keyword'>const</span> QP<span class='operator'>&</span> lhs, <span class='keyword'>const</span> QP2<span class='operator'>&</span> rhs<span class='parenthesis'>)</span>;
|
|
</code></div></div></div></div></div></div><div class='para' id='cmp-1'><div class='marginalizedparent'><a class='marginalized' href='#cmp-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L6451'>#</a></div><div class='texpara'><div id='cmp-1.sentence-1' class='sentence'>Let <span class='texttt'>@</span> be the <span class='textsf'><i >operator</i></span>, and
|
|
let <i >C</i> be
|
|
<span class='texttt'>std<span class='operator'>​::​</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'>​::​</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'><</span><span class='operator'>=</span><span class='anglebracket'>></span></span><a class='hidden_link' href='#cmp-1.sentence-1'>.</a></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#L6457'>#</a></div><div class='texpara'><div id='cmp-2.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='codeblock'><span class='keyword'>return</span> lhs <span class='operator'>-</span> lhs<span class='operator'>.</span>absolute_point_origin @ rhs <span class='operator'>-</span> rhs<span class='operator'>.</span>absolute_point_origin;
|
|
</span></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#L6464'>#</a></div><div class='texpara'><div id='cmp-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'><i >C</i><span class='anglebracket'><</span>quantity_type, <span class='keyword'>typename</span> QP2<span class='operator'>::</span>quantity_type<span class='anglebracket'>></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#L6471'>#</a></div><div class='texpara'><div id='cmp-4.sentence-1' class='sentence'><i >Recommended practice</i>: If the origins are equal, instead evaluate
|
|
<span class='codeblock'>lhs<span class='operator'>.</span>quantity_ref_from<span class='parenthesis'>(</span>point_origin<span class='parenthesis'>)</span> @ rhs<span class='operator'>.</span>quantity_ref_from<span class='parenthesis'>(</span>QP2<span class='operator'>::</span>point_origin<span class='parenthesis'>)</span>
|
|
</span></div></div></div></div></div><div id='qty.point' class='section'><h3 ><a class='secnum' href='#qty.point' style='min-width:80pt'>5.7.14</a> Construction helper <span class='texttt'>point</span> <a class='abbr_ref' href='qty.point.html'>[qty.point]</a></h3><div class='texpara'><span id='lib:point'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:point'>🔗</a></div><span class='codeblock'><span class='keyword'>namespace</span> mp_units <span class='curlybracket'>{</span>
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.ref.concepts.html#concept:Reference' title='5.4.5 Concepts [qty.ref.concepts]'><span id='conceptref:Reference___'><span class='tcode_in_codeblock'>Reference</span></span></a> R<span class='anglebracket'>></span>
|
|
<span class='keyword'>struct</span> point_ <span class='curlybracket'>{</span>
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> FwdRep,
|
|
<a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:RepresentationOf_________'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'><</span>get_quantity_spec<span class='parenthesis'>(</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span><span class='anglebracket'>></span> Rep <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdRep<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> quantity_point<span class='anglebracket'><</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, default_point_origin<span class='parenthesis'>(</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span>, Rep<span class='anglebracket'>></span> <span class='keyword'>operator</span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>(</span>FwdRep<span class='operator'>&</span><span class='operator'>&</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:point_,operator()'><div id='lib:operator(),point_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:operator(),point_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><span class='keyword'>typename</span> FwdRep,
|
|
<a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:RepresentationOf__________'><span class='texttt'>RepresentationOf</span></span></a><span class='anglebracket'><</span>get_quantity_spec<span class='parenthesis'>(</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span><span class='anglebracket'>></span> Rep <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdRep<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> quantity_point<span class='anglebracket'><</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span>, default_point_origin<span class='parenthesis'>(</span>R<span class='curlybracket'>{</span><span class='curlybracket'>}</span><span class='parenthesis'>)</span>, Rep<span class='anglebracket'>></span> <span class='keyword'>operator</span><span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>(</span>FwdRep<span class='operator'>&</span><span class='operator'>&</span> lhs<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
|
|
</code></div></div></div></div><div class='para' id='qty.point-1'><div class='marginalizedparent'><a class='marginalized' href='#qty.point-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L6503'>#</a></div><div class='texpara'><div id='qty.point-1.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='texttt'><span class='keyword'>return</span> quantity_<span class='shy'></span>point<span class='curlybracket'>{</span>quantity<span class='curlybracket'>{</span>std<span class='operator'>​::​</span>forward<span class='anglebracket'><</span>FwdRep<span class='anglebracket'>></span><span class='parenthesis'>(</span>lhs<span class='parenthesis'>)</span>, R<span class='curlybracket'>{</span><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.7.15</a> Non-member conversions <a class='abbr_ref' href='qty.pt.non.mem.conv.html'>[qty.pt.non.mem.conv]</a></h3><div class='texpara'><div id='lib:sudo-cast,quantity_point'><div id='lib:quantity_point,sudo-cast'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity_point,sudo-cast'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint____________'><span class='texttt'>QuantityPoint</span></span></a> ToQP, <span class='keyword'>typename</span> FwdFromQP,
|
|
<a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint_____________'><span class='texttt'>QuantityPoint</span></span></a> FromQP <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdFromQP<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint______________'><span class='texttt'>QuantityPoint</span></span></a> <span class='keyword'>auto</span> <span class='texttt'><i >sudo-cast</i></span><span class='parenthesis'>(</span>FwdFromQP<span class='operator'>&</span><span class='operator'>&</span> qp<span class='parenthesis'>)</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#L6520'>#</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#L6525'>#</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_point,value_cast'><div id='lib:value_cast,quantity_point'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:value_cast,quantity_point'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4 Concepts [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> FwdQP, <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint_______________'><span class='texttt'>QuantityPoint</span></span></a> QP <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQP<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span>convertible<span class='parenthesis'>(</span>QP<span class='operator'>::</span>reference, ToU<span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
|
<span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint________________'><span class='texttt'>QuantityPoint</span></span></a> <span class='keyword'>auto</span> value_cast<span class='parenthesis'>(</span>FwdQP<span class='operator'>&</span><span class='operator'>&</span> qp<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#L6536'>#</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> quantity_point<span class='curlybracket'>{</span>value_cast<span class='anglebracket'><</span>ToU<span class='anglebracket'>></span><span class='parenthesis'>(</span>std<span class='operator'>::</span>forward<span class='anglebracket'><</span>FwdQP<span class='anglebracket'>></span><span class='parenthesis'>(</span>qp<span class='parenthesis'>)</span><span class='operator'>.</span><i >quantity-from-origin</i><span class='parenthesis'>)</span>,
|
|
QP<span class='operator'>::</span>point_origin<span class='curlybracket'>}</span>;
|
|
</span></div></div></div></div><div class='texpara'><div id='lib:quantity_point,value_cast_'><div id='lib:value_cast,quantity_point_'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:value_cast,quantity_point_'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.rep.concepts.html#concept:Representation' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:Representation'><span class='texttt'>Representation</span></span></a> ToRep, <span class='keyword'>typename</span> FwdQP, <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint_________________'><span class='texttt'>QuantityPoint</span></span></a> QP <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQP<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:RepresentationOf___________'><span class='texttt'>RepresentationOf</span></span></a><span class='anglebracket'><</span>ToRep, QP<span class='operator'>::</span>quantity_spec<span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
std<span class='operator'>::</span>constructible_from<span class='anglebracket'><</span>ToRep, <span class='keyword'>typename</span> QP<span class='operator'>::</span>rep<span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> quantity_point<span class='anglebracket'><</span>QP<span class='operator'>::</span>reference, QP<span class='operator'>::</span>point_origin, ToRep<span class='anglebracket'>></span> value_cast<span class='parenthesis'>(</span>FwdQP<span class='operator'>&</span><span class='operator'>&</span> qp<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#L6554'>#</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> <span class='curlybracket'>{</span>value_cast<span class='anglebracket'><</span>ToRep<span class='anglebracket'>></span><span class='parenthesis'>(</span>std<span class='operator'>::</span>forward<span class='anglebracket'><</span>FwdQP<span class='anglebracket'>></span><span class='parenthesis'>(</span>qp<span class='parenthesis'>)</span><span class='operator'>.</span><i >quantity-from-origin</i><span class='parenthesis'>)</span>, QP<span class='operator'>::</span>point_origin<span class='curlybracket'>}</span>;
|
|
</span></div></div></div></div><div class='texpara'><div id='lib:quantity_point,value_cast__'><div id='lib:value_cast,quantity_point__'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:value_cast,quantity_point__'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.unit.concepts.html#concept:Unit' title='5.4.4.4 Concepts [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 Concepts [qty.rep.concepts]'><span id='conceptref:Representation_'><span class='texttt'>Representation</span></span></a> ToRep, <span class='keyword'>typename</span> FwdQP,
|
|
<a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint__________________'><span class='texttt'>QuantityPoint</span></span></a> QP <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQP<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint___________________'><span class='texttt'>QuantityPoint</span></span></a> <span class='keyword'>auto</span> value_cast<span class='parenthesis'>(</span>FwdQP<span class='operator'>&</span><span class='operator'>&</span> qp<span class='parenthesis'>)</span>;
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.rep.concepts.html#concept:Representation' title='5.5.4 Concepts [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 Concepts [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> FwdQP,
|
|
<a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint____________________'><span class='texttt'>QuantityPoint</span></span></a> QP <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQP<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <i ><span class='texttt'>see below</span></i>
|
|
<span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint_____________________'><span class='texttt'>QuantityPoint</span></span></a> <span class='keyword'>auto</span> value_cast<span class='parenthesis'>(</span>FwdQP<span class='operator'>&</span><span class='operator'>&</span> qp<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#L6575'>#</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> quantity_point<span class='curlybracket'>{</span>value_cast<span class='anglebracket'><</span>ToU, ToRep<span class='anglebracket'>></span><span class='parenthesis'>(</span>std<span class='operator'>::</span>forward<span class='anglebracket'><</span>FwdQP<span class='anglebracket'>></span><span class='parenthesis'>(</span>qp<span class='parenthesis'>)</span><span class='operator'>.</span><i >quantity-from-origin</i><span class='parenthesis'>)</span>,
|
|
QP<span class='operator'>::</span>point_origin<span class='curlybracket'>}</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#L6583'>#</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>QP<span class='operator'>::</span>reference, ToU<span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span> <a href='qty.rep.concepts.html#concept:RepresentationOf' title='5.5.4 Concepts [qty.rep.concepts]'><span id='conceptref:RepresentationOf____________'><span class='tcode_in_codeblock'>RepresentationOf</span></span></a><span class='anglebracket'><</span>ToRep, QP<span class='operator'>::</span>quantity_spec<span class='anglebracket'>></span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
std<span class='operator'>::</span>constructible_from<span class='anglebracket'><</span>ToRep, <span class='keyword'>typename</span> QP<span class='operator'>::</span>rep<span class='anglebracket'>></span>
|
|
</span></div></div></div></div><div class='texpara'><div id='lib:quantity_point,value_cast___'><div id='lib:value_cast,quantity_point___'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:value_cast,quantity_point___'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</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> ToQ, <span class='keyword'>typename</span> FwdQP, <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint______________________'><span class='texttt'>QuantityPoint</span></span></a> QP <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQP<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span>convertible<span class='parenthesis'>(</span>QP<span class='operator'>::</span>reference, ToQ<span class='operator'>::</span>unit<span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span> <span class='parenthesis'>(</span>ToQ<span class='operator'>::</span>quantity_spec <span class='operator'>=</span><span class='operator'>=</span> QP<span class='operator'>::</span>quantity_spec<span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
std<span class='operator'>::</span>constructible_from<span class='anglebracket'><</span><span class='keyword'>typename</span> ToQ<span class='operator'>::</span>rep, <span class='keyword'>typename</span> QP<span class='operator'>::</span>rep<span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint_______________________'><span class='texttt'>QuantityPoint</span></span></a> <span class='keyword'>auto</span> value_cast<span class='parenthesis'>(</span>FwdQP<span class='operator'>&</span><span class='operator'>&</span> qp<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#L6601'>#</a></div><div class='texpara'><div id='non.mem.conv-7.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='codeblock'><span class='keyword'>return</span> quantity_point<span class='curlybracket'>{</span>value_cast<span class='anglebracket'><</span>ToQ<span class='anglebracket'>></span><span class='parenthesis'>(</span>std<span class='operator'>::</span>forward<span class='anglebracket'><</span>FwdQP<span class='anglebracket'>></span><span class='parenthesis'>(</span>qp<span class='parenthesis'>)</span><span class='operator'>.</span><i >quantity-from-origin</i><span class='parenthesis'>)</span>,
|
|
QP<span class='operator'>::</span>point_origin<span class='curlybracket'>}</span>;
|
|
</span></div></div></div></div><div class='texpara'><div id='lib:quantity_point,value_cast____'><div id='lib:value_cast,quantity_point____'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:value_cast,quantity_point____'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint________________________'><span class='texttt'>QuantityPoint</span></span></a> ToQP, <span class='keyword'>typename</span> FwdQP, <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint_________________________'><span class='texttt'>QuantityPoint</span></span></a> QP <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQP<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span><span class='parenthesis'>(</span>convertible<span class='parenthesis'>(</span>QP<span class='operator'>::</span>reference, ToQP<span class='operator'>::</span>unit<span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<span class='parenthesis'>(</span>ToQP<span class='operator'>::</span>quantity_spec <span class='operator'>=</span><span class='operator'>=</span> QP<span class='operator'>::</span>quantity_spec<span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
<span class='parenthesis'>(</span><span class='texttt'><i >same-absolute-point-origins</i></span><span class='parenthesis'>(</span>ToQP<span class='operator'>::</span>point_origin, QP<span class='operator'>::</span>point_origin<span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span>
|
|
std<span class='operator'>::</span>constructible_from<span class='anglebracket'><</span><span class='keyword'>typename</span> ToQP<span class='operator'>::</span>rep, <span class='keyword'>typename</span> QP<span class='operator'>::</span>rep<span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint__________________________'><span class='texttt'>QuantityPoint</span></span></a> <span class='keyword'>auto</span> value_cast<span class='parenthesis'>(</span>FwdQP<span class='operator'>&</span><span class='operator'>&</span> qp<span class='parenthesis'>)</span>;
|
|
</code></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='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L6621'>#</a></div><div class='texpara'><div id='non.mem.conv-8.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'><</span>ToQP<span class='anglebracket'>></span><span class='parenthesis'>(</span>std<span class='operator'>​::​</span>forward<span class='anglebracket'><</span>FwdQP<span class='anglebracket'>></span><span class='parenthesis'>(</span>qp<span class='parenthesis'>)</span><span class='parenthesis'>)</span>;</span></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='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L6627'>#</a></div><div class='texpara'><div id='non.mem.conv-9.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-9.sentence-1'>.</a></div></div></div><div class='texpara'><div id='lib:quantity_point,quantity_cast'><div id='lib:quantity_cast,quantity_point'><div class='itemdecl'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:quantity_cast,quantity_point'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'><</span><a href='qty.spec.concepts.html#concept:QuantitySpec' title='5.4.3.2 Concepts [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> FwdQP, <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint___________________________'><span class='texttt'>QuantityPoint</span></span></a> QP <span class='operator'>=</span> std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'><</span>FwdQP<span class='anglebracket'>></span><span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantitySpecCastableTo'></a><span class='texttt'><i >QuantitySpecCastableTo</i></span><span class='anglebracket'><</span>QP<span class='operator'>::</span>quantity_spec, ToQS<span class='anglebracket'>></span>
|
|
<span class='keyword'>constexpr</span> <a href='#concept:QuantityPoint' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPoint____________________________'><span class='texttt'>QuantityPoint</span></span></a> <span class='keyword'>auto</span> quantity_cast<span class='parenthesis'>(</span>FwdQP<span class='operator'>&</span><span class='operator'>&</span> qp<span class='parenthesis'>)</span>;
|
|
</code></div></div></div></div><div class='para' id='non.mem.conv-10'><div class='marginalizedparent'><a class='marginalized' href='#non.mem.conv-10'>10</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L6638'>#</a></div><div class='texpara'><div id='non.mem.conv-10.sentence-1' class='sentence'><i >Effects</i>: Equivalent to:
|
|
<span class='codeblock'><span class='keyword'>return</span> QP<span class='curlybracket'>{</span>quantity_cast<span class='anglebracket'><</span>ToQS<span class='anglebracket'>></span><span class='parenthesis'>(</span>std<span class='operator'>::</span>forward<span class='anglebracket'><</span>FwdQP<span class='anglebracket'>></span><span class='parenthesis'>(</span>qp<span class='parenthesis'>)</span><span class='operator'>.</span><i >quantity_from_origin</i><span class='parenthesis'>)</span>,
|
|
QP<span class='operator'>::</span>point_origin<span class='curlybracket'>}</span>;
|
|
</span></div></div></div></div></div></div></body></html> |