forked from mpusz/mp-units
34 lines
15 KiB
HTML
34 lines
15 KiB
HTML
<!DOCTYPE html><html lang='en'><head><title>[qty.pt.cons]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css2?family=Noto+Serif'/><link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css2?family=Noto+Sans'/><link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css2?family=Noto+Sans+Mono'/><link rel='icon' href='icon.png'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Normal'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='alternate stylesheet' type='text/css' href='normative-only.css' title='Notes and examples hidden'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:50pt'>5</a> Quantities and units library <a class='abbr_ref' href='index.html#quantities'>[quantities]</a></h1><h2 ><a class='secnum' style='min-width:65pt'>5.7</a> Quantity point <a class='abbr_ref' href='qty.pt.html#cons'>[qty.pt]</a></h2><h3 ><a class='secnum' style='min-width:80pt'>5.7.6</a> Constructors <a class='abbr_ref'>[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='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5983'>#</a></div><div class='texpara'><div id='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='#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='qty.pt.orig.concepts.html#concept:PointOrigin' title='5.7.2.2 Concepts [qty.pt.orig.concepts]'><span id='conceptref:PointOrigin'><span class='texttt'>PointOrigin</span></span></a> PO2,
|
|
<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='2'><div class='marginalizedparent'><a class='marginalized' href='#2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L5997'>#</a></div><div class='texpara'><div id='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='qty.pt.syn.html#concept:QuantityPointOf' title='5.7.4 Class template quantity_­point [qty.pt.syn]'><span id='conceptref:QuantityPointOf'><span class='texttt'>QuantityPointOf</span></span></a><span class='anglebracket'><</span>absolute_point_origin<span class='anglebracket'>></span> QP<span class='anglebracket'>></span>
|
|
<span class='keyword'>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='3'><div class='marginalizedparent'><a class='marginalized' href='#3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L6015'>#</a></div><div class='texpara'><div id='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='#3.sentence-1'>.</a></div> <div id='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='#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='qty.pt.like.html#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='4'><div class='marginalizedparent'><a class='marginalized' href='#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='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='#4.sentence-1'>.</a></div></div></div></div><div class='para' id='5'><div class='marginalizedparent'><a class='marginalized' href='#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='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='6'><div class='marginalizedparent'><a class='marginalized' href='#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='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='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></body></html> |