forked from mpusz/mp-units
81 lines
30 KiB
HTML
81 lines
30 KiB
HTML
<!DOCTYPE html><html lang='en'><head><title>[qty.named.unit]</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#qty.named.unit'>[qty.ref]</a></h2><h3 ><a class='secnum' style='min-width:80pt'>5.4.4</a> Unit <a class='abbr_ref' href='qty.unit.html#qty.named.unit'>[qty.unit]</a></h3><h4 ><a class='secnum' style='min-width:95pt'>5.4.4.5</a> Types <a class='abbr_ref' href='qty.unit.types.html#qty.named.unit'>[qty.unit.types]</a></h4><h4 ><a class='secnum' style='min-width:110pt'>5.4.4.5.3</a> Named <a class='abbr_ref'>[qty.named.unit]</a></h4><div class='texpara'><span id='lib:named_unit'><div class='marginalizedparent'><a class='itemDeclLink' href='#lib:named_unit'>🔗</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>symbol_text Symbol, <a class='index' id='conceptref:QuantityKindSpec'></a><i >QuantityKindSpec</i> <span class='keyword'>auto</span> QS<span class='anglebracket'>></span>
|
||
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span>Symbol<span class='operator'>.</span>empty<span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span> <a class='index' id='conceptref:BaseDimension'></a><i >BaseDimension</i><span class='anglebracket'><</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>(</span>QS<span class='operator'>.</span>dimension<span class='parenthesis'>)</span><span class='parenthesis'>)</span><span class='anglebracket'>></span>
|
||
<span class='keyword'>struct</span> named_unit<span class='anglebracket'><</span>Symbol, QS<span class='anglebracket'>></span> <span class='operator'>:</span> <i >unit-interface</i> <span class='curlybracket'>{</span>
|
||
<span class='keyword'>using</span> <i >base-type</i> <span class='operator'>=</span> named_unit; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >symbol</i> <span class='operator'>=</span> Symbol; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <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='keyword'>template</span><span class='anglebracket'><</span>symbol_text Symbol, <a class='index' id='conceptref:QuantityKindSpec_'></a><i >QuantityKindSpec</i> <span class='keyword'>auto</span> QS, <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='tcode_in_codeblock'>PointOrigin</span></span></a> <span class='keyword'>auto</span> PO<span class='anglebracket'>></span>
|
||
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span>Symbol<span class='operator'>.</span>empty<span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span> <a class='index' id='conceptref:BaseDimension_'></a><i >BaseDimension</i><span class='anglebracket'><</span><span class='keyword'>decltype</span><span class='parenthesis'>(</span><span class='keyword'>auto</span><span class='parenthesis'>(</span>QS<span class='operator'>.</span>dimension<span class='parenthesis'>)</span><span class='parenthesis'>)</span><span class='anglebracket'>></span>
|
||
<span class='keyword'>struct</span> named_unit<span class='anglebracket'><</span>Symbol, QS, PO<span class='anglebracket'>></span> <span class='operator'>:</span> <i >unit-interface</i> <span class='curlybracket'>{</span>
|
||
<span class='keyword'>using</span> <i >base-type</i> <span class='operator'>=</span> named_unit; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >symbol</i> <span class='operator'>=</span> Symbol; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >quantity-spec</i> <span class='operator'>=</span> QS; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >point-origin</i> <span class='operator'>=</span> PO; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='curlybracket'>}</span>;
|
||
|
||
<span class='keyword'>template</span><span class='anglebracket'><</span>symbol_text Symbol<span class='anglebracket'>></span>
|
||
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span>Symbol<span class='operator'>.</span>empty<span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
||
<span class='keyword'>struct</span> named_unit<span class='anglebracket'><</span>Symbol<span class='anglebracket'>></span> <span class='operator'>:</span> <i >unit-interface</i> <span class='curlybracket'>{</span>
|
||
<span class='keyword'>using</span> <i >base-type</i> <span class='operator'>=</span> named_unit; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >symbol</i> <span class='operator'>=</span> Symbol; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='curlybracket'>}</span>;
|
||
|
||
<span class='keyword'>template</span><span class='anglebracket'><</span>symbol_text Symbol, <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> U<span class='anglebracket'>></span>
|
||
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span>Symbol<span class='operator'>.</span>empty<span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
||
<span class='keyword'>struct</span> named_unit<span class='anglebracket'><</span>Symbol, U<span class='anglebracket'>></span> <span class='operator'>:</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span>U<span class='parenthesis'>)</span><span class='operator'>::</span><i >base-type</i> <span class='curlybracket'>{</span>
|
||
<span class='keyword'>using</span> <i >base-type</i> <span class='operator'>=</span> named_unit; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >symbol</i> <span class='operator'>=</span> Symbol; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='curlybracket'>}</span>;
|
||
|
||
<span class='keyword'>template</span><span class='anglebracket'><</span>symbol_text Symbol, <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> U, <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='tcode_in_codeblock'>PointOrigin</span></span></a> <span class='keyword'>auto</span> PO<span class='anglebracket'>></span>
|
||
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span>Symbol<span class='operator'>.</span>empty<span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>
|
||
<span class='keyword'>struct</span> named_unit<span class='anglebracket'><</span>Symbol, U, PO<span class='anglebracket'>></span> <span class='operator'>:</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span>U<span class='parenthesis'>)</span><span class='operator'>::</span><i >base-type</i> <span class='curlybracket'>{</span>
|
||
<span class='keyword'>using</span> <i >base-type</i> <span class='operator'>=</span> named_unit; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >symbol</i> <span class='operator'>=</span> Symbol; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >point-origin</i> <span class='operator'>=</span> PO; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='curlybracket'>}</span>;
|
||
|
||
<span class='keyword'>template</span><span class='anglebracket'><</span>symbol_text Symbol, <a href='qty.unit.concepts.html#concept:AssociatedUnit' title='5.4.4.4 Concepts [qty.unit.concepts]'><span id='conceptref:AssociatedUnit'><span class='tcode_in_codeblock'>AssociatedUnit</span></span></a> <span class='keyword'>auto</span> U, <a class='index' id='conceptref:QuantityKindSpec__'></a><i >QuantityKindSpec</i> <span class='keyword'>auto</span> QS<span class='anglebracket'>></span>
|
||
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span>Symbol<span class='operator'>.</span>empty<span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span> <span class='parenthesis'>(</span>QS<span class='operator'>.</span>dimension <span class='operator'>=</span><span class='operator'>=</span> <i >get-associated-quantity</i><span class='parenthesis'>(</span>U<span class='parenthesis'>)</span><span class='operator'>.</span>dimension<span class='parenthesis'>)</span>
|
||
<span class='keyword'>struct</span> named_unit<span class='anglebracket'><</span>Symbol, U, QS<span class='anglebracket'>></span> <span class='operator'>:</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span>U<span class='parenthesis'>)</span><span class='operator'>::</span><i >base-type</i> <span class='curlybracket'>{</span>
|
||
<span class='keyword'>using</span> <i >base-type</i> <span class='operator'>=</span> named_unit; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >symbol</i> <span class='operator'>=</span> Symbol; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <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='keyword'>template</span><span class='anglebracket'><</span>symbol_text Symbol, <a href='qty.unit.concepts.html#concept:AssociatedUnit' title='5.4.4.4 Concepts [qty.unit.concepts]'><span id='conceptref:AssociatedUnit_'><span class='tcode_in_codeblock'>AssociatedUnit</span></span></a> <span class='keyword'>auto</span> U, <a class='index' id='conceptref:QuantityKindSpec___'></a><i >QuantityKindSpec</i> <span class='keyword'>auto</span> QS,
|
||
<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='tcode_in_codeblock'>PointOrigin</span></span></a> <span class='keyword'>auto</span> PO<span class='anglebracket'>></span>
|
||
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span>Symbol<span class='operator'>.</span>empty<span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>&</span><span class='operator'>&</span> <span class='parenthesis'>(</span>QS<span class='operator'>.</span>dimension <span class='operator'>=</span><span class='operator'>=</span> <i >get-associated-quantity</i><span class='parenthesis'>(</span>U<span class='parenthesis'>)</span><span class='operator'>.</span>dimension<span class='parenthesis'>)</span>
|
||
<span class='keyword'>struct</span> named_unit<span class='anglebracket'><</span>Symbol, U, QS, PO<span class='anglebracket'>></span> <span class='operator'>:</span> <span class='keyword'>decltype</span><span class='parenthesis'>(</span>U<span class='parenthesis'>)</span><span class='operator'>::</span><i >base-type</i> <span class='curlybracket'>{</span>
|
||
<span class='keyword'>using</span> <i >base-type</i> <span class='operator'>=</span> named_unit; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >symbol</i> <span class='operator'>=</span> Symbol; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >quantity-spec</i> <span class='operator'>=</span> QS; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='keyword'>static</span> <span class='keyword'>constexpr</span> <span class='keyword'>auto</span> <i >point-origin</i> <span class='operator'>=</span> PO; <span class='comment'>// <i >exposition only</i></span>
|
||
<span class='curlybracket'>}</span>;
|
||
|
||
<span class='curlybracket'>}</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#L2705'>#</a></div><div class='texpara'><div id='1.sentence-1' class='sentence'>A <a class='hidden_link' href='#def:unit,named' title='5.4.4.5.3 Named [qty.named.unit]'><span id='def:unit,named'><i >named unit</i></span></a> is a type that models <a href='qty.unit.concepts.html#concept:PrefixableUnit' title='5.4.4.4 Concepts [qty.unit.concepts]'><span id='conceptref:PrefixableUnit'><span class='texttt'>PrefixableUnit</span></span></a><a class='hidden_link' href='#1.sentence-1'>.</a></div> <div id='1.sentence-2' class='sentence'>A specialization of <span class='texttt'>named_<span class='shy'></span>unit</span> is used as a base type when defining a named unit<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#L2709'>#</a></div><div class='texpara'><div id='2.sentence-1' class='sentence'>In the following descriptions, let <span class='texttt'>U</span> be a named unit 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'>U</span> represents
|
||
its unit name (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=112-01-15">IEC 60050, 112-01-15</a>)
|
||
or special unit name (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=112-01-16">IEC 60050, 112-01-16</a>)<a class='hidden_link' href='#2.sentence-2'>.</a></div> <div id='2.sentence-3' class='sentence'><span class='texttt'>Symbol</span> is its unit symbol (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=112-01-17">IEC 60050, 112-01-17</a>)<a class='hidden_link' href='#2.sentence-3'>.</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#L2716'>#</a></div><div class='texpara'><div id='3.sentence-1' class='sentence'>The possible arguments to <span class='texttt'>named_<span class='shy'></span>unit</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;">the unit symbol</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.446em; padding-bottom: 0.519em;">a kind of base 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-mtext"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.519em;">a point origin</span></span></span><span class="mjx-sub" style="font-size: 70.7%; vertical-align: -0.377em; 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;">the unit symbol</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;">the unit symbol</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 unit expression</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-mtext"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.519em;">a point origin</span></span></span><span class="mjx-sub" style="font-size: 70.7%; vertical-align: -0.377em; 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;">the unit symbol</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 unit expression</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.446em; padding-bottom: 0.519em;">a kind of 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-mtext"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.519em;">a point origin</span></span></span><span class="mjx-sub" style="font-size: 70.7%; vertical-align: -0.377em; 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-1'>.</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#L2729'>#</a></div><div class='texpara'><div id='4.sentence-1' class='sentence'>The first signature defines the unit of a base quantity
|
||
without a unit prefix (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=112-01-26">IEC 60050, 112-01-26</a>)<a class='hidden_link' href='#4.sentence-1'>.</a></div> <div id='4.sentence-2' class='sentence'>The second signature defines a unit
|
||
that can be reused by several base quantities<a class='hidden_link' href='#4.sentence-2'>.</a></div> <div id='4.sentence-3' class='sentence'>The third and fourth signatures with a unit expression argument <i >E</i>
|
||
define <span class='texttt'>U</span> as implicitly convertible from <i >E</i><a class='hidden_link' href='#4.sentence-3'>.</a></div> <div id='4.sentence-4' class='sentence'>The first and fourth signatures with a kind of quantity (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=112-01-04">IEC 60050, 112-01-04</a>) <i >Q</i>
|
||
also restrict <span class='texttt'>U</span> to <i >Q</i><a class='hidden_link' href='#4.sentence-4'>.</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#L2739'>#</a></div><div class='texpara'><div id='5.sentence-1' class='sentence'>A point origin argument specifies the default point origin of <span class='texttt'>U</span> (<a href='qty.pt.syn.html' title='5.7.4 Class template quantity_­point'>[qty.<span class='shy'></span>pt.<span class='shy'></span>syn]</a>)<a class='hidden_link' href='#5.sentence-1'>.</a></div></div></div><div class='para nonNormativeOnly' 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#L2742'>#</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 unit restricted to a kind of base quantity.</span>
|
||
<span class='keyword'>inline</span> <span class='keyword'>constexpr</span> <span class='keyword'>struct</span> second <span class='keyword'>final</span> <span class='operator'>:</span> named_unit<span class='anglebracket'><</span><span class='literal'>"s"</span>, kind_of<span class='anglebracket'><</span>time<span class='anglebracket'>></span><span class='anglebracket'>></span> <span class='curlybracket'>{</span>
|
||
<span class='curlybracket'>}</span> second;
|
||
|
||
<span class='comment'>// The third and fourth signatures give a name to the unit argument.</span>
|
||
<span class='keyword'>inline</span> <span class='keyword'>constexpr</span> <span class='keyword'>struct</span> minute <span class='keyword'>final</span> <span class='operator'>:</span> named_unit<span class='anglebracket'><</span><span class='literal'>"min"</span>, mag<span class='anglebracket'><</span><span class='literal'>60</span><span class='anglebracket'>></span> <span class='operator'>*</span> second<span class='anglebracket'>></span> <span class='curlybracket'>{</span>
|
||
<span class='curlybracket'>}</span> minute; <span class='comment'>// <span class="mjx-chtml"><span class="mjx-math"><span class="mjx-mrow" aria-hidden="true"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.372em;">min</span></span></span></span><span class="mjx-mo MJXc-space3"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.077em; padding-bottom: 0.298em;">=</span></span><span class="mjx-mn MJXc-space3"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.372em;">60</span></span><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.151em; padding-bottom: 0.372em;"> s</span></span></span></span></span></span></span>.</span>
|
||
|
||
<span class='comment'>// The fourth signature also further restricts the kind of quantity.</span>
|
||
<span class='keyword'>inline</span> <span class='keyword'>constexpr</span> <span class='keyword'>struct</span> hertz <span class='keyword'>final</span> <span class='operator'>:</span> named_unit<span class='anglebracket'><</span><span class='literal'>"Hz"</span>, inverse<span class='parenthesis'>(</span>second<span class='parenthesis'>)</span>, kind_of<span class='anglebracket'><</span>frequency<span class='anglebracket'>></span><span class='anglebracket'>></span> <span class='curlybracket'>{</span>
|
||
<span class='curlybracket'>}</span> hertz; <span class='comment'>// <span class='math'><span class='textrm'>Hz</span></span> can't measure becquerel, activity,</span>
|
||
<span class='comment'>// or any other quantity with dimension <span class="mjx-chtml"><span class="mjx-math"><span class="mjx-mrow" aria-hidden="true"><span class="mjx-msubsup"><span class="mjx-base"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mtext"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.372em;">T</span></span></span></span></span><span class="mjx-sup" style="font-size: 70.7%; vertical-align: 0.607em; padding-left: 0px; padding-right: 0.071em;"><span class="mjx-texatom"><span class="mjx-mrow"><span class="mjx-mo"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.298em; padding-bottom: 0.446em;">−</span></span><span class="mjx-mn"><span class="mjx-char MJXc-TeX-main-R" style="padding-top: 0.372em; padding-bottom: 0.372em;">1</span></span></span></span></span></span></span></span></span></span>
|
||
<span class='comment'>// that isn't a kind of frequency.</span>
|
||
</span> — <i>end example</i>]</div></div></div></div></div></body></html> |