forked from mpusz/mp-units
65 lines
27 KiB
HTML
65 lines
27 KiB
HTML
<!DOCTYPE html><html lang='en'><head><title>[named.qty]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css2?family=Noto+Serif'/><link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css2?family=Noto+Sans'/><link rel='stylesheet' type='text/css' href='https://fonts.googleapis.com/css2?family=Noto+Sans+Mono'/><link rel='icon' href='icon.png'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Normal'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='alternate stylesheet' type='text/css' href='normative-only.css' title='Notes and examples hidden'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:50pt'>5</a> Quantities and units library <a class='abbr_ref' href='index.html#quantities'>[quantities]</a></h1><h2 ><a class='secnum' style='min-width:65pt'>5.4</a> Reference <a class='abbr_ref' href='qty.ref.html#named.qty'>[qty.ref]</a></h2><h3 ><a class='secnum' style='min-width:80pt'>5.4.3</a> Quantity specification <a class='abbr_ref' href='qty.spec.html#named.qty'>[qty.spec]</a></h3><h4 ><a class='secnum' style='min-width:95pt'>5.4.3.3</a> Types <a class='abbr_ref' href='qty.spec.types.html#named.qty'>[qty.spec.types]</a></h4><h4 ><a class='secnum' style='min-width:110pt'>5.4.3.3.1</a> Named <a class='abbr_ref'>[named.qty]</a></h4><div class='texpara'><span id='lib:quantity_spec'><span id='lib:is_kind'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:is_kind'>🔗</a></div><span class='codeblock'><span class='keyword'>namespace</span> mp_units <span class='curlybracket'>{</span>
|
|
|
|
<span class='keyword'>struct</span> is_kind <span class='curlybracket'>{</span><span class='curlybracket'>}</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:BaseDimension'></a><i >BaseDimension</i> <span class='keyword'>auto</span> Dim, <a class='index' id='conceptref:QSProperty'></a><i >QSProperty</i> <span class='keyword'>auto</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> Args<span class='anglebracket'>></span>
|
|
<span class='keyword'>struct</span> quantity_spec<span class='anglebracket'><</span>Dim, Args<span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span><span class='anglebracket'>></span> <span class='operator'>:</span> <i >quantity-spec-interface</i> <span class='curlybracket'>{</span>
|
|
<span class='keyword'>using</span> <i >base-type</i> <span class='operator'>=</span> quantity_spec;
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <a class='index' id='conceptref:BaseDimension_'></a><i >BaseDimension</i> <span class='keyword'>auto</span> dimension <span class='operator'>=</span> Dim;
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> quantity_character character <span class='operator'>=</span> <i ><span class='texttt'>see below</span></i>;
|
|
<span class='curlybracket'>}</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:DerivedQuantitySpec'></a><i >DerivedQuantitySpec</i> <span class='keyword'>auto</span> Eq, <a class='index' id='conceptref:QSProperty_'></a><i >QSProperty</i> <span class='keyword'>auto</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> Args<span class='anglebracket'>></span>
|
|
<span class='keyword'>struct</span> quantity_spec<span class='anglebracket'><</span>Eq, Args<span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span><span class='anglebracket'>></span> <span class='operator'>:</span> <i >quantity-spec-interface</i> <span class='curlybracket'>{</span>
|
|
<span class='keyword'>using</span> <i >base-type</i> <span class='operator'>=</span> quantity_spec;
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >equation</i> <span class='operator'>=</span> Eq;
|
|
<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> Eq<span class='operator'>.</span>dimension;
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> quantity_character character <span class='operator'>=</span> <i ><span class='texttt'>see below</span></i>;
|
|
<span class='curlybracket'>}</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:NamedQuantitySpec'></a><i >NamedQuantitySpec</i> <span class='keyword'>auto</span> QS, <a class='index' id='conceptref:QSProperty__'></a><i >QSProperty</i> <span class='keyword'>auto</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> Args<span class='anglebracket'>></span>
|
|
<span class='keyword'>struct</span> quantity_spec<span class='anglebracket'><</span>QS, Args<span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span><span class='anglebracket'>></span> <span class='operator'>:</span> <i >quantity-spec-interface</i> <span class='curlybracket'>{</span>
|
|
<span class='keyword'>using</span> <i >base-type</i> <span class='operator'>=</span> quantity_spec;
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >parent</i> <span class='operator'>=</span> QS;
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >equation</i> <span class='operator'>=</span> <i >parent</i><span class='operator'>.</span><i >equation</i>; <span class='comment'>// <i >exposition only</i>, present only</span>
|
|
<span class='comment'>// if the <span class='textsf'><i >qualified-id</i></span> <span class='tcode_in_codeblock'><span class='tcode_in_codeblock'><i >parent</i></span>.<span class='tcode_in_codeblock'><i >equation</i></span></span> is valid and denotes an object</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> <i >parent</i><span class='operator'>.</span>dimension;
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> quantity_character character <span class='operator'>=</span> <i ><span class='texttt'>see below</span></i>;
|
|
<span class='curlybracket'>}</span>;
|
|
|
|
<span class='keyword'>template</span><span class='anglebracket'><</span><a class='index' id='conceptref:NamedQuantitySpec_'></a><i >NamedQuantitySpec</i> <span class='keyword'>auto</span> QS, <a class='index' id='conceptref:DerivedQuantitySpec_'></a><i >DerivedQuantitySpec</i> <span class='keyword'>auto</span> Eq, <a class='index' id='conceptref:QSProperty___'></a><i >QSProperty</i> <span class='keyword'>auto</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> Args<span class='anglebracket'>></span>
|
|
<span class='keyword'>requires</span> <a class='index' id='conceptref:QuantitySpecExplicitlyConvertibleTo'></a><i >QuantitySpecExplicitlyConvertibleTo</i><span class='anglebracket'><</span>Eq, QS<span class='anglebracket'>></span>
|
|
<span class='keyword'>struct</span> quantity_spec<span class='anglebracket'><</span>QS, Eq, Args<span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span><span class='anglebracket'>></span> <span class='operator'>:</span> <i >quantity-spec-interface</i> <span class='curlybracket'>{</span>
|
|
<span class='keyword'>using</span> <i >base-type</i> <span class='operator'>=</span> quantity_spec;
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >parent</i> <span class='operator'>=</span> QS;
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >equation</i> <span class='operator'>=</span> Eq;
|
|
<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> <i >parent</i><span class='operator'>.</span>dimension;
|
|
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> quantity_character character <span class='operator'>=</span> <i ><span class='texttt'>see below</span></i>;
|
|
<span class='curlybracket'>}</span>;
|
|
|
|
<span class='curlybracket'>}</span>
|
|
</span></span></span></div><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L1669'>#</a></div><div class='texpara'><div id='1.sentence-1' class='sentence'>A <a class='hidden_link' href='#def:quantity,named' title='5.4.3.3.1 Named [named.qty]'><span id='def:quantity,named'><i >named quantity</i></span></a> is a type that models <a class='index' id='conceptref:NamedQuantitySpec__'></a><span class='texttt'><i >NamedQuantitySpec</i></span><a class='hidden_link' href='#1.sentence-1'>.</a></div> <div id='1.sentence-2' class='sentence'>A specialization of <span class='texttt'>quantity_<span class='shy'></span>spec</span> is used as a base type when defining a named quantity<a class='hidden_link' href='#1.sentence-2'>.</a></div></div></div><div class='para' id='2'><div class='marginalizedparent'><a class='marginalized' href='#2'>2</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L1673'>#</a></div><div class='texpara'><div id='2.sentence-1' class='sentence'>In the following descriptions, let <span class='texttt'>Q</span> be a named quantity defined with an alluded signature<a class='hidden_link' href='#2.sentence-1'>.</a></div> <div id='2.sentence-2' class='sentence'>The identifier of <span class='texttt'>Q</span> represents its quantity name (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=112-01-02">IEC 60050, 112-01-02</a>)<a class='hidden_link' href='#2.sentence-2'>.</a></div></div></div><div class='para' id='3'><div class='marginalizedparent'><a class='marginalized' href='#3'>3</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L1677'>#</a></div><div class='texpara'><div id='3.sentence-1' class='sentence'>Let <span class='texttt'>Ch</span> be an enumerator value of <span class='texttt'>quantity_<span class='shy'></span>character</span><a class='hidden_link' href='#3.sentence-1'>.</a></div> <div id='3.sentence-2' class='sentence'>The possible arguments to <span class='texttt'>quantity_<span class='shy'></span>spec</span> are
|
|
<ul class='itemize'><li id='3.1'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#3.1'>(3.1)</a></div><span class="mjx-chtml"><span class="mjx-math"><span class="mjx-mrow" aria-hidden="true"><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.446em; padding-bottom: 0.593em;">(</span></span><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.519em;">a base quantity dimension</span></span><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="margin-top: -0.144em; padding-bottom: 0.519em;">,</span></span><span class="mjx-msubsup MJXc-space1"><span class="mjx-base"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R" style="padding-top: 0.446em; padding-bottom: 0.298em;">Ch</span></span></span></span></span><span class="mjx-sub" style="font-size: 70.7%; vertical-align: -0.212em; padding-right: 0.071em;"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mstyle" style="font-size: 113.1%; color: black;"><span class="mjx-mrow" style="font-size: 88.4%;"><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.225em; padding-bottom: 0.298em;">o</span></span></span></span><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.225em; padding-bottom: 0.446em;">p</span></span><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.372em; padding-bottom: 0.298em;">t</span></span></span></span></span></span><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.446em; padding-bottom: 0.593em;">)</span></span></span></span></span>,</li><li id='3.2'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#3.2'>(3.2)</a></div><span class="mjx-chtml"><span class="mjx-math"><span class="mjx-mrow" aria-hidden="true"><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.446em; padding-bottom: 0.593em;">(</span></span><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.519em;">a quantity calculus</span></span><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="margin-top: -0.144em; padding-bottom: 0.519em;">,</span></span><span class="mjx-msubsup MJXc-space1"><span class="mjx-base"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R" style="padding-top: 0.446em; padding-bottom: 0.298em;">Ch</span></span></span></span></span><span class="mjx-sub" style="font-size: 70.7%; vertical-align: -0.212em; padding-right: 0.071em;"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mstyle" style="font-size: 113.1%; color: black;"><span class="mjx-mrow" style="font-size: 88.4%;"><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.225em; padding-bottom: 0.298em;">o</span></span></span></span><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.225em; padding-bottom: 0.446em;">p</span></span><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.372em; padding-bottom: 0.298em;">t</span></span></span></span></span></span><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.446em; padding-bottom: 0.593em;">)</span></span></span></span></span>,</li><li id='3.3'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#3.3'>(3.3)</a></div><span class="mjx-chtml"><span class="mjx-math"><span class="mjx-mrow" aria-hidden="true"><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.446em; padding-bottom: 0.593em;">(</span></span><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.519em;">a named quantity</span></span><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="margin-top: -0.144em; padding-bottom: 0.519em;">,</span></span><span class="mjx-msubsup MJXc-space1"><span class="mjx-base"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R" style="padding-top: 0.446em; padding-bottom: 0.298em;">Ch</span></span></span></span></span><span class="mjx-sub" style="font-size: 70.7%; vertical-align: -0.212em; padding-right: 0.071em;"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mstyle" style="font-size: 113.1%; color: black;"><span class="mjx-mrow" style="font-size: 88.4%;"><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.225em; padding-bottom: 0.298em;">o</span></span></span></span><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.225em; padding-bottom: 0.446em;">p</span></span><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.372em; padding-bottom: 0.298em;">t</span></span></span></span></span></span><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="margin-top: -0.144em; padding-bottom: 0.519em;">,</span></span><span class="mjx-msubsup MJXc-space1"><span class="mjx-base"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R" style="padding-top: 0.372em; padding-bottom: 0.372em;">is_kind</span></span></span></span></span><span class="mjx-sub" style="font-size: 70.7%; vertical-align: -0.22em; padding-right: 0.071em;"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mstyle" style="font-size: 113.1%; color: black;"><span class="mjx-mrow" style="font-size: 88.4%;"><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.225em; padding-bottom: 0.298em;">o</span></span></span></span><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.225em; padding-bottom: 0.446em;">p</span></span><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.372em; padding-bottom: 0.298em;">t</span></span></span></span></span></span><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.446em; padding-bottom: 0.593em;">)</span></span></span></span></span>, and</li><li id='3.4'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#3.4'>(3.4)</a></div><span class="mjx-chtml"><span class="mjx-math"><span class="mjx-mrow" aria-hidden="true"><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.446em; padding-bottom: 0.593em;">(</span></span><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.519em;">a named quantity</span></span><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="margin-top: -0.144em; padding-bottom: 0.519em;">,</span></span><span class="mjx-mtext MJXc-space1"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.519em;">a quantity calculus</span></span><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="margin-top: -0.144em; padding-bottom: 0.519em;">,</span></span><span class="mjx-msubsup MJXc-space1"><span class="mjx-base"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R" style="padding-top: 0.446em; padding-bottom: 0.298em;">Ch</span></span></span></span></span><span class="mjx-sub" style="font-size: 70.7%; vertical-align: -0.212em; padding-right: 0.071em;"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mstyle" style="font-size: 113.1%; color: black;"><span class="mjx-mrow" style="font-size: 88.4%;"><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.225em; padding-bottom: 0.298em;">o</span></span></span></span><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.225em; padding-bottom: 0.446em;">p</span></span><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.372em; padding-bottom: 0.298em;">t</span></span></span></span></span></span><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="margin-top: -0.144em; padding-bottom: 0.519em;">,</span></span><span class="mjx-msubsup MJXc-space1"><span class="mjx-base"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-type-R" style="padding-top: 0.372em; padding-bottom: 0.372em;">is_kind</span></span></span></span></span><span class="mjx-sub" style="font-size: 70.7%; vertical-align: -0.22em; padding-right: 0.071em;"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mstyle" style="font-size: 113.1%; color: black;"><span class="mjx-mrow" style="font-size: 88.4%;"><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.225em; padding-bottom: 0.298em;">o</span></span></span></span><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.225em; padding-bottom: 0.446em;">p</span></span><span class="mjx-mi"><span class="mjx-char MJXc-TeX-main-I" style="padding-top: 0.372em; padding-bottom: 0.298em;">t</span></span></span></span></span></span><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.446em; padding-bottom: 0.593em;">)</span></span></span></span></span><a class='hidden_link' href='#3.sentence-2'>.</a></li></ul></div></div></div><div class='para' id='4'><div class='marginalizedparent'><a class='marginalized' href='#4'>4</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L1691'>#</a></div><div class='texpara'><div id='4.sentence-1' class='sentence'>If the first argument is a base quantity dimension,
|
|
then <span class='texttt'>Q</span> is that base quantity (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=112-01-08">IEC 60050, 112-01-08</a>)<a class='hidden_link' href='#4.sentence-1'>.</a></div> <div id='4.sentence-2' class='sentence'>If an argument is a quantity calculus (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=112-01-30">IEC 60050, 112-01-30</a>) <i >C</i>,
|
|
then <span class='texttt'>Q</span> is implicitly convertible from <i >C</i><a class='hidden_link' href='#4.sentence-2'>.</a></div> <div id='4.sentence-3' class='sentence'>If the first argument is a named quantity,
|
|
then <span class='texttt'>Q</span> is of its kind (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=112-01-04">IEC 60050, 112-01-04</a>)<a class='hidden_link' href='#4.sentence-3'>.</a></div></div></div><div class='para' id='5'><div class='marginalizedparent'><a class='marginalized' href='#5'>5</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L1699'>#</a></div><div class='texpara'><div id='5.sentence-1' class='sentence'>The member <span class='texttt'>character</span> represents
|
|
the set of the numerical value of <span class='texttt'>Q</span> (<a href='qty.char.traits.html' title='5.5.2.2 Quantity character'>[qty.<span class='shy'></span>char.<span class='shy'></span>traits]</a>)
|
|
and is equal to
|
|
<ul class='itemize'><li id='5.1'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#5.1'>(5.1)</a></div><span class='texttt'>Ch</span> if specified,</li><li id='5.2'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#5.2'>(5.2)</a></div>otherwise, <span class='texttt'>quantity_<span class='shy'></span>character<span class='operator'>​::​</span>real_<span class='shy'></span>scalar</span> for the first signature, and</li><li id='5.3'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#5.3'>(5.3)</a></div>otherwise, <span class='texttt'><span class='parenthesis'>(</span>BC<span class='parenthesis'>)</span><span class='operator'>.</span>character</span>,
|
|
where <span class='texttt'>BC</span> is the argument preceding <span class='texttt'>Ch</span> in the signatures above<a class='hidden_link' href='#5.sentence-1'>.</a></li></ul></div></div></div><div class='para' id='6'><div class='marginalizedparent'><a class='marginalized' href='#6'>6</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L1713'>#</a></div><div class='texpara'><div id='6.sentence-1' class='sentence'><span class='texttt'>is_<span class='shy'></span>kind</span> specifies <span class='texttt'>Q</span> to start a new hierarchy tree of a kind<a class='hidden_link' href='#6.sentence-1'>.</a></div></div></div><div class='para' id='7'><div class='marginalizedparent'><a class='marginalized' href='#7'>7</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L1716'>#</a></div><div class='texpara'><div id='7.sentence-1' class='sentence'>Optional arguments may appear in any order<a class='hidden_link' href='#7.sentence-1'>.</a></div></div></div><div class='para nonNormativeOnly' id='8'><div class='marginalizedparent'><a class='marginalized' href='#8'>8</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L1719'>#</a></div><div class='texpara'><div id='example-1' class='example'><div class='texpara'>[<i>Example <a href='#example-1'>1</a></i>: <span class='codeblock'><span class='comment'>// The first signature defines a base quantity.</span>
|
|
<span class='keyword'>inline</span> <span class='keyword'>constexpr</span> <span class='keyword'>struct</span> length <span class='keyword'>final</span> <span class='operator'>:</span> quantity_spec<span class='anglebracket'><</span>dim_length<span class='anglebracket'>></span> <span class='curlybracket'>{</span>
|
|
<span class='curlybracket'>}</span> length; <span class='comment'>// Length is a base quantity.</span>
|
|
|
|
<span class='comment'>// The second signature defines a derived quantity.</span>
|
|
<span class='keyword'>inline</span> <span class='keyword'>constexpr</span> <span class='keyword'>struct</span> area <span class='keyword'>final</span> <span class='operator'>:</span> quantity_spec<span class='anglebracket'><</span>pow<span class='anglebracket'><</span><span class='literal'>2</span><span class='anglebracket'>></span><span class='parenthesis'>(</span>length<span class='parenthesis'>)</span><span class='anglebracket'>></span> <span class='curlybracket'>{</span>
|
|
<span class='curlybracket'>}</span> area; <span class='comment'>// An area equals length by length.</span>
|
|
|
|
<span class='comment'>// The third and fourth signatures add a leaf to a hierarchy of kinds.</span>
|
|
<span class='keyword'>inline</span> <span class='keyword'>constexpr</span> <span class='keyword'>struct</span> width <span class='keyword'>final</span> <span class='operator'>:</span> quantity_spec<span class='anglebracket'><</span>length<span class='anglebracket'>></span> <span class='curlybracket'>{</span>
|
|
<span class='curlybracket'>}</span> width; <span class='comment'>// Width is a kind of length.</span>
|
|
|
|
<span class='comment'>// The fourth signature also refines the calculus required for implicit conversions.</span>
|
|
<span class='keyword'>inline</span> <span class='keyword'>constexpr</span> <span class='keyword'>struct</span> angular_measure <span class='keyword'>final</span> <span class='operator'>:</span>
|
|
quantity_spec<span class='anglebracket'><</span>dimensionless, arc_length <span class='operator'>/</span> radius, is_kind<span class='anglebracket'>></span> <span class='curlybracket'>{</span>
|
|
<span class='curlybracket'>}</span> angular_measure; <span class='comment'>// Requires an arc length per radius, not just any quantity of dimension one.</span>
|
|
</span> — <i>end example</i>]</div></div></div></div></div></body></html> |