Files
mp-units/HEAD/api_reference/gen/full.html
T

174 lines
52 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang='en'><head><title>14882</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'><div id='scope' class='section'><h1 ><a class='secnum' style='min-width:50pt'>1</a> Scope <a class='abbr_ref' href='index.html#scope'>[scope]</a></h1><div class='para'><div class='marginalizedparent'><a class='marginalized' href='scope.html#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/intro.tex#L6'>#</a></div><div class='texpara'><div id='scope-1.sentence-1' class='sentence'><a class='index' id=':scope'></a>This document describes the contents of the <a class='hidden_link' href='#def:mp-units_library' title='1&emsp;Scope&emsp;[scope]'><span id='def:mp-units_library'><i >mp-units library</i></span></a><a class='hidden_link' href='#scope-1.sentence-1'>.</a></div> </div></div></div><div id='refs' class='section'><h1 ><a class='secnum' style='min-width:50pt'>2</a> References <a class='abbr_ref' href='index.html#refs'>[refs]</a></h1><div class='para'><div class='marginalizedparent'><a class='marginalized' href='refs.html#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/intro.tex#L14'>#</a></div><div class='texpara'><div id='refs-1.sentence-1' class='sentence'><a class='index' id=':references'></a>The following documents are referred to in the text
in such a way that some or all of their content
constitutes requirements of this document<a class='hidden_link' href='#refs-1.sentence-1'>.</a></div> <div id='refs-1.sentence-2' class='sentence'>For dated references, only the edition cited applies<a class='hidden_link' href='#refs-1.sentence-2'>.</a></div> <div id='refs-1.sentence-3' class='sentence'>For undated references,
the latest edition of the referenced document
(including any amendments) applies<a class='hidden_link' href='#refs-1.sentence-3'>.</a></div> <ul class='itemize'><li id='refs-1.1'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#refs-1.1'>(1.1)</a></div><div class='texpara'><div id='refs-1.1.sentence-1' class='sentence'>IEC 60050-102:2007/AMD3:2021,
<i >Amendment 3 — International Electrotechnical Vocabulary (IEV) —
Part 102: Mathematics — General concepts and linear algebra</i></div></div></li><li id='refs-1.2'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#refs-1.2'>(1.2)</a></div><div class='texpara'><div id='refs-1.2.sentence-1' class='sentence'>IEC 60050-112:2010/AMD2:2020,
<i >Amendment 2 — International Electrotechnical Vocabulary (IEV) —
Part 112: Quantities and units</i></div></div></li><li id='refs-1.3'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#refs-1.3'>(1.3)</a></div><div class='texpara'><div id='refs-1.3.sentence-1' class='sentence'>ISO 80000 (all parts), <i >Quantities and units</i></div></div></li><li id='refs-1.4'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#refs-1.4'>(1.4)</a></div><div class='texpara'><div id='refs-1.4.sentence-1' class='sentence'>The C++ Standards Committee<a class='hidden_link' href='#refs-1.4.sentence-1'>.</a></div> <div id='refs-1.4.sentence-2' class='sentence'>N4971: <i >Working Draft, Standard for Programming Language C++</i><a class='hidden_link' href='#refs-1.4.sentence-2'>.</a></div> <div id='refs-1.4.sentence-3' class='sentence'>Edited by Thomas Köppe<a class='hidden_link' href='#refs-1.4.sentence-3'>.</a></div> <div id='refs-1.4.sentence-4' class='sentence'>Available from: <a href='https://wg21.link/N4971'>https://wg21.link/N4971</a></div></div></li><li id='refs-1.5'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#refs-1.5'>(1.5)</a></div><div class='texpara'><div id='refs-1.5.sentence-1' class='sentence'>The C++ Standards Committee<a class='hidden_link' href='#refs-1.5.sentence-1'>.</a></div> <div id='refs-1.5.sentence-2' class='sentence'>SD-8: <i >Standard Library Compatibility</i><a class='hidden_link' href='#refs-1.5.sentence-2'>.</a></div> <div id='refs-1.5.sentence-3' class='sentence'>Edited by Bryce Lelbach<a class='hidden_link' href='#refs-1.5.sentence-3'>.</a></div> <div id='refs-1.5.sentence-4' class='sentence'>Available from: <a href='https://wg21.link/SD8'>https://wg21.link/SD8</a></div></div></li></ul> </div></div></div><div id='defs' class='section'><h1 ><a class='secnum' style='min-width:50pt'>3</a> Terms and definitions <a class='abbr_ref' href='index.html#defs'>[defs]</a></h1><div class='para'><div class='marginalizedparent'><a class='marginalized' href='defs.html#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/intro.tex#L50'>#</a></div><div class='texpara'><div id='defs-1.sentence-1' class='sentence'><a class='index' id=':definitions'></a>For the purposes of this document,
the terms and definitions given in
IEC 60050-102:2007/AMD3:2021,
IEC 60050-112:2010/AMD2:2020,
ISO 80000-2:2019,
and
N4971,
and the following apply<a class='hidden_link' href='#defs-1.sentence-1'>.</a></div></div></div><div class='para'><div class='marginalizedparent'><a class='marginalized' href='defs.html#2'>2</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/intro.tex#L61'>#</a></div><div class='texpara'><div id='defs-2.sentence-1' class='sentence'>ISO and IEC maintain terminology databases
for use in standardization
at the following addresses:
<ul class='itemize'><li id='defs-2.1'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#defs-2.1'>(2.1)</a></div>ISO Online browsing platform: available at <a href='https://www.iso.org/obp'>https://www.iso.org/obp</a></li><li id='defs-2.2'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#defs-2.2'>(2.2)</a></div>IEC Electropedia: available at <a href='http://www.electropedia.org'>http://www.electropedia.org</a></li></ul>
</div></div></div></div><div id='spec' class='section'><h1 ><a class='secnum' style='min-width:50pt'>4</a> Specification <a class='abbr_ref' href='index.html#spec'>[spec]</a></h1><div id='spec.ext' class='section'><h2 ><a class='secnum' style='min-width:65pt'>4.1</a> External <a class='abbr_ref' href='spec.ext.html'>[spec.ext]</a></h2><div class='para'><div class='marginalizedparent'><a class='marginalized' href='spec.ext.html#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/intro.tex#L76'>#</a></div><div class='texpara'><div id='spec.ext-1.sentence-1' class='sentence'>The specification of the mp-units library subsumes
<a href="https://wg21.link/description">N4971, [description]</a>, <a href="https://wg21.link/requirements">N4971, [requirements]</a>, <a href="https://wg21.link/concepts.equality">N4971, [concepts.equality]</a>, and SD-8,
all assumingly amended for the context of this library<a class='hidden_link' href='#spec.ext-1.sentence-1'>.</a></div> <div id='spec.ext-note-1' class='note'><div class='texpara'>[<i>Note&nbsp;<a href='#spec.ext-note-1'>1</a></i>:&ensp;<div id='spec.ext-1.sentence-2' class='sentence'>This means that, non exhaustively,
<ul class='itemize'><li id='spec.ext-1.1'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#spec.ext-1.1'>(1.1)</a></div><span class='texttt'><span class='operator'>&#x200b;::&#x200b;</span>mp_<span class='shy'></span>units2</span> is a reserved namespace, and</li><li id='spec.ext-1.2'><div class='marginalizedparent' style='left:-27mm'><a class='marginalized' href='#spec.ext-1.2'>(1.2)</a></div><span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>vector<span class='anglebracket'>&lt;</span>mp_<span class='shy'></span>units<span class='operator'>&#x200b;::&#x200b;</span><i >type</i><span class='anglebracket'>&gt;</span></span>
is a program-defined specialization and a library-defined specialization
from the point of view of the C++ standard library and the mp-units library, respectively<a class='hidden_link' href='#spec.ext-1.sentence-2'>.</a></li></ul></div>&nbsp;<i>end note</i>]</div></div></div></div><div class='para'><div class='marginalizedparent'><a class='marginalized' href='spec.ext.html#2'>2</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/intro.tex#L91'>#</a></div><div class='texpara'><div id='spec.ext-2.sentence-1' class='sentence'>The mp-units library is not part of the C++ implementation<a class='hidden_link' href='#spec.ext-2.sentence-1'>.</a></div></div></div></div><div id='spec.cats' class='section'><h2 ><a class='secnum' style='min-width:65pt'>4.2</a> Categories <a class='abbr_ref' href='spec.cats.html'>[spec.cats]</a></h2><div class='para'><div class='marginalizedparent'><a class='marginalized' href='spec.cats.html#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/intro.tex#L96'>#</a></div><div class='texpara'><div id='spec.cats-1.sentence-1' class='sentence'>Detailed specifications for each of the components in the library are in
<a href='#qties' title='5&emsp;Quantities library'>[qties]</a><a href='#qties' title='5&emsp;Quantities library'>[qties]</a>,
as shown in Table <a href='#tab:lib.cats' title='Table 1: Library categories'>1</a><a class='hidden_link' href='#spec.cats-1.sentence-1'>.</a></div></div><div class='texpara'><div class='numberedTable' id='tab:lib.cats'>Table <a href='#tab:lib.cats'>1</a>: Library categories&emsp;<a href='./tab:lib.cats.html'>[tab:lib.cats]</a><br><table ><tr id='tab:lib.cats-row-1' class='rowsep'><td class='hidden'><div class='marginalizedparent'><a class='itemDeclLink' href='#tab:lib.cats-row-1'>🔗</a></div></td><td class='left'><div class='texpara'><div id='tab:lib.cats-row-1-column-1-sentence-1' class='sentence'><b>Clause</b></div></div></td><td class='left'><div class='texpara'><div id='tab:lib.cats-row-1-column-2-sentence-1' class='sentence'><b>Category</b></div></div></td></tr><tr id='tab:lib.cats-row-2' class='capsep'><td class='hidden'><div class='marginalizedparent'><a class='itemDeclLink' href='#tab:lib.cats-row-2'>🔗</a></div></td><td class='left'><div class='texpara'><div id='tab:lib.cats-row-2-column-1-sentence-1' class='sentence'><a href='#qties' title='5&emsp;Quantities library'>[qties]</a></div></div></td><td class='left'><div class='texpara'><div id='tab:lib.cats-row-2-column-2-sentence-1' class='sentence'>Quantities library</div></div></td></tr></table></div></div></div><div class='para'><div class='marginalizedparent'><a class='marginalized' href='spec.cats.html#2'>2</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/intro.tex#L108'>#</a></div><div class='texpara'><div id='spec.cats-2.sentence-1' class='sentence'>The quantities library (<a href='#qties' title='5&emsp;Quantities library'>[qties]</a>)
describes components for dealing with quantities<a class='hidden_link' href='#spec.cats-2.sentence-1'>.</a></div></div></div></div><div id='spec.mods' class='section'><h2 ><a class='secnum' style='min-width:65pt'>4.3</a> Modules <a class='abbr_ref' href='spec.mods.html'>[spec.mods]</a></h2><div class='para'><div class='marginalizedparent'><a class='marginalized' href='spec.mods.html#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/intro.tex#L114'>#</a></div><div class='texpara'><div id='spec.mods-1.sentence-1' class='sentence'>The mp-units library provides the
<a class='hidden_link' href='#def:module,mp-units' title='4.3&emsp;Modules&emsp;[spec.mods]'><span id='def:module,mp-units'><i >mp-units modules</i></span></a>,
shown in Table <a href='#tab:modules' title='Table 2: mp-units modules'>2</a><a class='hidden_link' href='#spec.mods-1.sentence-1'>.</a></div></div><div class='texpara'><div class='numberedTable' id='tab:modules'>Table <a href='#tab:modules'>2</a>: mp-units modules&emsp;<a href='./tab:modules.html'>[tab:modules]</a><br><table ><tr id='tab:modules-row-1'><td class='hidden'><div class='marginalizedparent'><a class='itemDeclLink' href='#tab:modules-row-1'>🔗</a></div></td><td class='left'><div class='texpara'><div id='tab:modules-row-1-column-1-sentence-1' class='sentence'><span class='texttt'>mp_<span class='shy'></span>units</span></div></div></td><td class='left'><div class='texpara'><div id='tab:modules-row-1-column-2-sentence-1' class='sentence'><span class='texttt'>mp_<span class='shy'></span>units<span class='operator'>.</span>core</span></div></div></td><td class='left'><div class='texpara'><div id='tab:modules-row-1-column-3-sentence-1' class='sentence'><span class='texttt'>mp_<span class='shy'></span>units<span class='operator'>.</span>systems</span></div></div></td></tr></table></div></div></div></div><div id='spec.reqs' class='section'><h2 ><a class='secnum' style='min-width:65pt'>4.4</a> Library-wide requirements <a class='abbr_ref' href='spec.reqs.html'>[spec.reqs]</a></h2><div id='spec.res.names' class='section'><h3 ><a class='secnum' style='min-width:80pt'>4.4.1</a> Reserved names <a class='abbr_ref' href='spec.res.names.html'>[spec.res.names]</a></h3><div class='para'><div class='marginalizedparent'><a class='marginalized' href='spec.res.names.html#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/intro.tex#L132'>#</a></div><div class='texpara'><div id='spec.res.names-1.sentence-1' class='sentence'>The mp-units library reserves macro names that start with
<span class='texttt'>MP_<span class='shy'></span>UNITS<span class='textsf'><i >digit-sequence</i></span><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-mi"><span class="mjx-char"></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></span></span>_<span class='shy'></span></span><a class='hidden_link' href='#spec.res.names-1.sentence-1'>.</a></div></div></div></div></div></div><div id='qties' class='section'><h1 ><a class='secnum' style='min-width:50pt'>5</a> Quantities library <a class='abbr_ref' href='index.html#qties'>[qties]</a></h1><div id='qties.summary' class='section'><h2 ><a class='secnum' style='min-width:65pt'>5.1</a> Summary <a class='abbr_ref' href='qties.summary.html'>[qties.summary]</a></h2><div class='para'><div class='marginalizedparent'><a class='marginalized' href='qties.summary.html#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/quantities.tex#L6'>#</a></div><div class='texpara'><div id='qties.summary-1.sentence-1' class='sentence'>This Clause describes components for dealing with quantities,
as summarized in Table <a href='#tab:qties.summary' title='Table 3: Quantities library summary'>3</a><a class='hidden_link' href='#qties.summary-1.sentence-1'>.</a></div></div><div class='texpara'><div class='numberedTable' id='tab:qties.summary'>Table <a href='#tab:qties.summary'>3</a>: Quantities library summary&emsp;<a href='./tab:qties.summary.html'>[tab:qties.summary]</a><br><table ><tr id='tab:qties.summary-row-1' class='rowsep'><td class='hidden'><div class='marginalizedparent'><a class='itemDeclLink' href='#tab:qties.summary-row-1'>🔗</a></div></td><td class='empty left'></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-1-column-2-sentence-1' class='sentence'><b>Subclause</b></div></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-1-column-3-sentence-1' class='sentence'><b>Module</b></div></div></td></tr><tr id='tab:qties.summary-row-2' class='capsep'><td class='hidden'><div class='marginalizedparent'><a class='itemDeclLink' href='#tab:qties.summary-row-2'>🔗</a></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-2-column-1-sentence-1' class='sentence'><a href='#qty.helpers' title='5.5&emsp;Helpers'>[qty.<span class='shy'></span>helpers]</a></div></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-2-column-2-sentence-1' class='sentence'>Helpers</div></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-2-column-3-sentence-1' class='sentence'><span class='texttt'>mp_<span class='shy'></span>units<span class='operator'>.</span>core</span></div></div></td></tr><tr id='tab:qties.summary-row-3'><td class='hidden'><div class='marginalizedparent'><a class='itemDeclLink' href='#tab:qties.summary-row-3'>🔗</a></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-3-column-1-sentence-1' class='sentence'><a href='#qty.traits' title='5.6&emsp;Traits'>[qty.<span class='shy'></span>traits]</a></div></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-3-column-2-sentence-1' class='sentence'>Traits</div></div></td><td class='empty left'></td></tr><tr id='tab:qties.summary-row-4'><td class='hidden'><div class='marginalizedparent'><a class='itemDeclLink' href='#tab:qties.summary-row-4'>🔗</a></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-4-column-1-sentence-1' class='sentence'><a href='#qty.concepts' title='5.7&emsp;Concepts'>[qty.<span class='shy'></span>concepts]</a></div></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-4-column-2-sentence-1' class='sentence'>Concepts</div></div></td><td class='empty left'></td></tr><tr id='tab:qties.summary-row-5'><td class='hidden'><div class='marginalizedparent'><a class='itemDeclLink' href='#tab:qties.summary-row-5'>🔗</a></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-5-column-1-sentence-1' class='sentence'><a href='#qty.types' title='5.8&emsp;Types'>[qty.<span class='shy'></span>types]</a></div></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-5-column-2-sentence-1' class='sentence'>Types</div></div></td><td class='empty left'></td></tr><tr id='tab:qties.summary-row-6'><td class='hidden'><div class='marginalizedparent'><a class='itemDeclLink' href='#tab:qties.summary-row-6'>🔗</a></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-6-column-1-sentence-1' class='sentence'><a href='#qty.compat' title='5.9&emsp;Compatibility'>[qty.<span class='shy'></span>compat]</a></div></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-6-column-2-sentence-1' class='sentence'>Compatibility</div></div></td><td class='empty left'></td></tr><tr id='tab:qties.summary-row-7'><td class='hidden'><div class='marginalizedparent'><a class='itemDeclLink' href='#tab:qties.summary-row-7'>🔗</a></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-7-column-1-sentence-1' class='sentence'><a href='#qty.one' title='5.10&emsp;Dimension one'>[qty.<span class='shy'></span>one]</a></div></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-7-column-2-sentence-1' class='sentence'>Dimension one</div></div></td><td class='empty left'></td></tr><tr id='tab:qties.summary-row-8' class='rowsep'><td class='hidden'><div class='marginalizedparent'><a class='itemDeclLink' href='#tab:qties.summary-row-8'>🔗</a></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-8-column-1-sentence-1' class='sentence'><a href='#qty.systems' title='5.11&emsp;Systems'>[qty.<span class='shy'></span>systems]</a></div></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-8-column-2-sentence-1' class='sentence'>Systems</div></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-8-column-3-sentence-1' class='sentence'><span class='texttt'>mp_<span class='shy'></span>units<span class='operator'>.</span>systems</span></div></div></td></tr><tr id='tab:qties.summary-row-9'><td class='hidden'><div class='marginalizedparent'><a class='itemDeclLink' href='#tab:qties.summary-row-9'>🔗</a></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-9-column-1-sentence-1' class='sentence'><a href='#qty.chrono' title='5.12&emsp;std&#x200b;::&#x200b;chrono compatibility'>[qty.<span class='shy'></span>chrono]</a></div></div></td><td class='left'><div class='texpara'><div id='tab:qties.summary-row-9-column-2-sentence-1' class='sentence'><span class='texttt'>std<span class='operator'>&#x200b;::&#x200b;</span>chrono</span> compatibility</div></div></td><td class='empty left'></td></tr></table></div></div></div></div><div id='mp.units.syn' class='section'><h2 ><a class='secnum' style='min-width:65pt'>5.2</a> Module <span class='texttt'>mp_<span class='shy'></span>units</span> synopsis <a class='abbr_ref' href='mp.units.syn.html'>[mp.units.syn]</a></h2><div class='texpara'><span id='module:mp_units'><div class='marginalizedparent'><a class='itemDeclLink' href='#module:mp_units'>🔗</a></div><span class='codeblock'><span class='keyword'>export</span> <span class='keyword'>module</span> mp_units;
<span class='keyword'>export</span> <span class='keyword'>import</span> mp_units<span class='operator'>.</span>core;
<span class='keyword'>export</span> <span class='keyword'>import</span> mp_units<span class='operator'>.</span>systems;
</span></span></div></div><div id='mp.units.core.syn' class='section'><h2 ><a class='secnum' style='min-width:65pt'>5.3</a> Module <span class='texttt'>mp_<span class='shy'></span>units.core</span> synopsis <a class='abbr_ref' href='mp.units.core.syn.html'>[mp.units.core.syn]</a></h2><div class='texpara'><span id='module:mp_units.core'><div class='marginalizedparent'><a class='itemDeclLink' href='#module:mp_units.core'>🔗</a></div><span class='codeblock'><span class='keyword'>export</span> <span class='keyword'>module</span> mp_units<span class='operator'>.</span>core;
<span class='keyword'>import</span> std;
<span class='keyword'>export</span> <span class='keyword'>namespace</span> mp_units <span class='curlybracket'>{</span>
<span class='keyword'>export</span> <span class='keyword'>enum</span> <span class='keyword'>class</span> quantity_character <span class='curlybracket'>{</span> scalar, vector, tensor <span class='curlybracket'>}</span>;
<span class='comment'>// <a href='#qty.traits' title='5.6&emsp;Traits'>[qty.<span class='shy'></span>traits]</a>, traits</span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <span class='keyword'>bool</span> treat_as_floating_point <span class='operator'>=</span> std<span class='operator'>::</span>is_floating_point_v<span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_scalar <span class='operator'>=</span>
std<span class='operator'>::</span>is_floating_point_v<span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span> <span class='operator'>|</span><span class='operator'>|</span> <span class='parenthesis'>(</span>std<span class='operator'>::</span>is_integral_v<span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='operator'>!</span>is_same_v<span class='anglebracket'>&lt;</span>Rep, <span class='keyword'>bool</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_vector <span class='operator'>=</span> <span class='literal'>false</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <span class='keyword'>bool</span> is_tensor <span class='operator'>=</span> <span class='literal'>false</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>struct</span> quantity_values;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>struct</span> quantity_like_traits;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>struct</span> quantity_point_like_traits;
<span class='comment'>// <a href='#qty.concepts' title='5.7&emsp;Concepts'>[qty.<span class='shy'></span>concepts]</a>, concepts</span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <a class='hidden_link' href='#concept:some_reference' title='5.3&emsp;Module mp_&shy;units.core synopsis&emsp;[mp.units.core.syn]'><span id='concept:some_reference'><span id='lib:some_reference'><span class='tcode_in_codeblock'>some_<span class='shy'></span>reference</span></span></span></a> <span class='operator'>=</span> template_of<span class='parenthesis'>(</span><span class='operator'>^</span>std<span class='operator'>::</span>remove_cvref_t<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>^</span>reference;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> representation <span class='operator'>=</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T, quantity_character Ch<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> representation_of <span class='operator'>=</span> <i ><span class='texttt'>see below</span></i>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> some_quantity_spec <span class='operator'>=</span> <i ><span class='texttt'>see below</span></i>;
<span class='comment'>// <a href='#qty.types' title='5.8&emsp;Types'>[qty.<span class='shy'></span>types]</a>, types</span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>auto</span><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>struct</span> quantity_spec; <span class='comment'>// <i >not defined</i></span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>auto</span> Q<span class='anglebracket'>&gt;</span>
<span class='keyword'>struct</span> kind_of_; <span class='comment'>// <i >not defined</i></span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><i ><span class='texttt'>unspecified</span></i><span class='operator'>.</span><span class='operator'>.</span><span class='operator'>.</span> Expr<span class='anglebracket'>&gt;</span>
<span class='keyword'>struct</span> derived_quantity_spec;
<span class='comment'>// <a href='#qty.type' title='5.8.2&emsp;Class template quantity'>[qty.<span class='shy'></span>type]</a>, class template <span class='tcode_in_codeblock'>quantity</span></span>
<span class='keyword'>export</span> <span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='#concept:some_reference' title='5.3&emsp;Module mp_&shy;units.core synopsis&emsp;[mp.units.core.syn]'><span id='conceptref:some_reference'><span class='tcode_in_codeblock'>some_<span class='shy'></span>reference</span></span></a> <span class='keyword'>auto</span> R,
<a href='#concept:representation_of' title='5.7&emsp;Concepts&emsp;[qty.concepts]'><span id='conceptref:representation_of'><span class='tcode_in_codeblock'>representation_<span class='shy'></span>of</span></span></a><span class='anglebracket'>&lt;</span>get_quantity_spec<span class='parenthesis'>(</span>R<span class='parenthesis'>)</span><span class='operator'>.</span>character<span class='anglebracket'>&gt;</span> Rep <span class='operator'>=</span> <span class='keyword'>double</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>class</span> quantity;
<span class='comment'>// <a href='#qty.point.type' title='5.8.3&emsp;Class template quantity_&shy;point'>[qty.<span class='shy'></span>point.<span class='shy'></span>type]</a>, class template <span class='tcode_in_codeblock'>quantity_<span class='shy'></span>point</span></span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><i ><span class='texttt'>unspecified</span></i><span class='anglebracket'>&gt;</span>
<span class='keyword'>class</span> quantity_point;
<span class='curlybracket'>}</span>
</span></span></div></div><div id='mp.units.systems.syn' class='section'><h2 ><a class='secnum' style='min-width:65pt'>5.4</a> Module <span class='texttt'>mp_<span class='shy'></span>units.systems</span> synopsis <a class='abbr_ref' href='mp.units.systems.syn.html'>[mp.units.systems.syn]</a></h2><div class='texpara'><span id='module:mp_units.systems'><div class='marginalizedparent'><a class='itemDeclLink' href='#module:mp_units.systems'>🔗</a></div><span class='codeblock'><span class='keyword'>export</span> <span class='keyword'>module</span> mp_units<span class='operator'>.</span>systems;
<span class='keyword'>export</span> <span class='keyword'>import</span> mp_units<span class='operator'>.</span>core;
<span class='keyword'>import</span> std;
<span class='keyword'>export</span> <span class='keyword'>namespace</span> mp_units <span class='curlybracket'>{</span>
<span class='curlybracket'>}</span>
</span></span></div></div><div id='qty.helpers' class='section'><h2 ><a class='secnum' style='min-width:65pt'>5.5</a> Helpers <a class='abbr_ref' href='qty.helpers.html'>[qty.helpers]</a></h2><div class='texpara'><div class='itemdecl' id='qty.helpers-itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#qty.helpers-itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>consteval</span> <span class='keyword'>bool</span> <span class='texttt'><i >converts-to-base-subobject-of</i></span><span class='parenthesis'>(</span>std<span class='operator'>::</span>meta type, std<span class='operator'>::</span>meta template_name<span class='parenthesis'>)</span>;
</code></div></div><div class='para'><div class='marginalizedparent'><a class='marginalized' href='qty.helpers.html#1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/quantities.tex#L122'>#</a></div><div class='texpara'><div id='qty.helpers-1.sentence-1' class='sentence'><i >Preconditions</i>: <span class='texttt'>is_<span class='shy'></span>type<span class='parenthesis'>(</span>type<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> is_<span class='shy'></span>template<span class='parenthesis'>(</span>template_<span class='shy'></span>name<span class='parenthesis'>)</span></span> is <span class='texttt'><span class='literal'>true</span></span><a class='hidden_link' href='#qty.helpers-1.sentence-1'>.</a></div></div></div></div><div class='para'><div class='marginalizedparent'><a class='marginalized' href='qty.helpers.html#2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/quantities.tex#L126'>#</a></div><div class='texpara'><div id='qty.helpers-2.sentence-1' class='sentence'><i >Returns</i>: <span class='texttt'><span class='literal'>true</span></span> if
<span class='texttt'><span class='squarebracket'>[</span><span class='operator'>:</span>type<span class='operator'>:</span><span class='squarebracket'>]</span></span> has an unambiguous and accessible base
that is a specialization of <span class='texttt'><span class='squarebracket'>[</span><span class='operator'>:</span>template_<span class='shy'></span>name<span class='operator'>:</span><span class='squarebracket'>]</span></span>, and
<span class='texttt'><span class='literal'>false</span></span> otherwise<a class='hidden_link' href='#qty.helpers-2.sentence-1'>.</a></div></div></div></div></div><div id='qty.traits' class='section'><h2 ><a class='secnum' style='min-width:65pt'>5.6</a> Traits <a class='abbr_ref' href='qty.traits.html'>[qty.traits]</a></h2><div class='texpara'><div class='itemdecl' id='qty.traits-itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#qty.traits-itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <span class='keyword'>bool</span> <span id='lib:is_scalar'><a class='hidden_link' href='#lib:is_scalar' title='5.6&emsp;Traits&emsp;[qty.traits]'>is_scalar</a></span> <span class='operator'>=</span>
std<span class='operator'>::</span>is_floating_point_v<span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span> <span class='operator'>|</span><span class='operator'>|</span> <span class='parenthesis'>(</span>std<span class='operator'>::</span>is_integral_v<span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='operator'>!</span>is_same_v<span class='anglebracket'>&lt;</span>Rep, <span class='keyword'>bool</span><span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <span class='keyword'>bool</span> <span id='lib:is_vector'><a class='hidden_link' href='#lib:is_vector' title='5.6&emsp;Traits&emsp;[qty.traits]'>is_vector</a></span> <span class='operator'>=</span> <span class='literal'>false</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <span class='keyword'>bool</span> <span id='lib:is_tensor'><a class='hidden_link' href='#lib:is_tensor' title='5.6&emsp;Traits&emsp;[qty.traits]'>is_tensor</a></span> <span class='operator'>=</span> <span class='literal'>false</span>;
</code></div></div><div class='para'><div class='marginalizedparent'><a class='marginalized' href='qty.traits.html#1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/quantities.tex#L149'>#</a></div><div class='texpara'><div id='qty.traits-1.sentence-1' class='sentence'><i >Remarks</i>: Pursuant to <a href="https://wg21.link/namespace.std">N4971, [namespace.std]</a> (<a href='#spec.ext' title='4.1&emsp;External'>[spec.<span class='shy'></span>ext]</a>),
users may specialize <span class='texttt'>is_<span class='shy'></span>scalar</span>, <span class='texttt'>is_<span class='shy'></span>vector</span>, and <span class='texttt'>is_<span class='shy'></span>tensor</span> to <span class='texttt'><span class='literal'>true</span></span>
for cv-unqualified program-defined types
which respectively represent
a scalar (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=102-02-18">IEC 60050, 102-02-18</a>),
a vector (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=102-03-04">IEC 60050, 102-03-04</a>), and
a tensor,
and <span class='texttt'><span class='literal'>false</span></span> for types which respectively do not<a class='hidden_link' href='#qty.traits-1.sentence-1'>.</a></div></div></div></div></div><div id='qty.concepts' class='section'><h2 ><a class='secnum' style='min-width:65pt'>5.7</a> Concepts <a class='abbr_ref' href='qty.concepts.html'>[qty.concepts]</a></h2><div class='texpara'><div class='itemdecl' id='concept:representation'><div class='marginalizedparent'><a class='itemDeclLink' href='#concept:representation'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>export</span> <span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <a class='hidden_link' href='#concept:representation' title='5.7&emsp;Concepts&emsp;[qty.concepts]'><span id='concept:representation'><span id='lib:representation'><span class='texttt'>representation</span></span></span></a> <span class='operator'>=</span>
<span class='parenthesis'>(</span>is_scalar<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span> <span class='operator'>|</span><span class='operator'>|</span> is_vector<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span> <span class='operator'>|</span><span class='operator'>|</span> is_tensor<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span><span class='operator'>&amp;</span><span class='operator'>&amp;</span>std<span class='operator'>::</span>regular<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='texttt'><i >scalable</i></span><span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span>;
</code></div></div><div class='texpara'><div class='itemdecl' id='concept:representation_of'><div class='marginalizedparent'><a class='itemDeclLink' href='#concept:representation_of'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>export</span> <span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T, quantity_character Ch<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <a class='hidden_link' href='#concept:representation_of' title='5.7&emsp;Concepts&emsp;[qty.concepts]'><span id='concept:representation_of'><span id='lib:representation_of'><span class='texttt'>representation_<span class='shy'></span>of</span></span></span></a> <span class='operator'>=</span>
<a href='#concept:representation' title='5.7&emsp;Concepts&emsp;[qty.concepts]'><span id='conceptref:representation'><span class='texttt'>representation</span></span></a><span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='parenthesis'>(</span><span class='parenthesis'>(</span>Ch <span class='operator'>=</span><span class='operator'>=</span> quantity_character<span class='operator'>::</span>scalar <span class='operator'>&amp;</span><span class='operator'>&amp;</span> is_scalar<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>|</span><span class='operator'>|</span>
<span class='parenthesis'>(</span>Ch <span class='operator'>=</span><span class='operator'>=</span> quantity_character<span class='operator'>::</span>vector <span class='operator'>&amp;</span><span class='operator'>&amp;</span> is_vector<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>|</span><span class='operator'>|</span>
<span class='parenthesis'>(</span>Ch <span class='operator'>=</span><span class='operator'>=</span> quantity_character<span class='operator'>::</span>tensor <span class='operator'>&amp;</span><span class='operator'>&amp;</span> is_tensor<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span>;
</code></div></div><div class='texpara'><div class='itemdecl' id='qty.concepts-itemdecl:3'><div class='marginalizedparent'><a class='itemDeclLink' href='#qty.concepts-itemdecl:3'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <span class='texttt'><i >named-quantity-spec</i></span><a class='index' id='concept:named-quantity-spec'></a> <span class='operator'>=</span>
<span class='parenthesis'>(</span><span class='texttt'><i >converts-to-base-subobject-of</i></span><span class='parenthesis'>(</span><span class='operator'>^</span>T, <span class='operator'>^</span>quantity_spec<span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> template_of<span class='parenthesis'>(</span><span class='operator'>^</span>T<span class='parenthesis'>)</span> <span class='operator'>!</span><span class='operator'>=</span> <span class='operator'>^</span>kind_of_<span class='parenthesis'>)</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>concept</span> <a class='hidden_link' href='#concept:some_quantity_spec' title='5.7&emsp;Concepts&emsp;[qty.concepts]'><span id='concept:some_quantity_spec'><span id='lib:some_quantity_spec'><span class='texttt'>some_<span class='shy'></span>quantity_<span class='shy'></span>spec</span></span></span></a> <span class='operator'>=</span>
<a class='index' id='conceptref:named-quantity-spec'></a><span class='texttt'><i >named-quantity-spec</i></span><span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span> <span class='operator'>|</span><span class='operator'>|</span>
detail<span class='operator'>::</span>IntermediateDerivedQuantitySpec<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span> <span class='operator'>|</span><span class='operator'>|</span>
template_of<span class='parenthesis'>(</span><span class='operator'>^</span>T<span class='parenthesis'>)</span> <span class='operator'>=</span><span class='operator'>=</span> <span class='operator'>^</span>kind_of;
</code></div></div></div><div id='qty.types' class='section'><h2 ><a class='secnum' style='min-width:65pt'>5.8</a> Types <a class='abbr_ref' href='qty.types.html'>[qty.types]</a></h2><div id='qty.types.general' class='section'><h3 ><a class='secnum' style='min-width:80pt'>5.8.1</a> General <a class='abbr_ref' href='qty.types.general.html'>[qty.types.general]</a></h3><div class='para'><div class='marginalizedparent'><a class='marginalized' href='qty.types.general.html#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/quantities.tex#L196'>#</a></div><div class='texpara'><div id='qty.types.general-1.sentence-1' class='sentence'>A <a class='hidden_link' href='#def:type,quantity' title='5.8.1&emsp;General&emsp;[qty.types.general]'><span id='def:type,quantity'><i >quantity type</i></span></a>
is a type <span class='texttt'><i >Q</i></span>
that is a specialization of <span class='texttt'>quantity</span> or <span class='texttt'>quantity_<span class='shy'></span>point</span><a class='hidden_link' href='#qty.types.general-1.sentence-1'>.</a></div> <div id='qty.types.general-1.sentence-2' class='sentence'><span class='texttt'><i >Q</i></span> represents a quantity (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=112-01-01">IEC 60050, 112-01-01</a>)
with <span class='texttt'><i >Q</i><span class='operator'>&#x200b;::&#x200b;</span>rep</span> as its number
and <span class='texttt'><i >Q</i><span class='operator'>&#x200b;::&#x200b;</span>reference</span> as its reference<a class='hidden_link' href='#qty.types.general-1.sentence-2'>.</a></div> <div id='qty.types.general-1.sentence-3' class='sentence'><span class='texttt'><i >Q</i></span> is a structural type (<a href="https://wg21.link/temp.paramterm.structural.type">N4971, [temp.param]</a>)
if <span class='texttt'><i >Q</i><span class='operator'>&#x200b;::&#x200b;</span>rep</span> is a structural type<a class='hidden_link' href='#qty.types.general-1.sentence-3'>.</a></div></div></div><div class='para'><div class='marginalizedparent'><a class='marginalized' href='qty.types.general.html#2'>2</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-units315e47c2573226a4fea735c0514806595d94ed6d/source/quantities.tex#L206'>#</a></div><div class='texpara'><div id='qty.types.general-2.sentence-1' class='sentence'>Each class template defined in subclause <a href='#qty.types' title='5.8&emsp;Types'>[qty.<span class='shy'></span>types]</a>
has data members and special members specified below, and
has no base classes or members other than those specified<a class='hidden_link' href='#qty.types.general-2.sentence-1'>.</a></div></div></div></div><div id='qty.type' class='section'><h3 ><a class='secnum' style='min-width:80pt'>5.8.2</a> Class template <span class='texttt'>quantity</span> <a class='abbr_ref' href='qty.type.html'>[qty.type]</a></h3><div class='texpara'><span class='codeblock'><span class='keyword'>namespace</span> mp_units <span class='curlybracket'>{</span>
<span class='keyword'>export</span> <span class='keyword'>template</span><span class='anglebracket'>&lt;</span><a href='#concept:some_reference' title='5.3&emsp;Module mp_&shy;units.core synopsis&emsp;[mp.units.core.syn]'><span id='conceptref:some_reference_'><span class='tcode_in_codeblock'>some_<span class='shy'></span>reference</span></span></a> <span class='keyword'>auto</span> R,
<a href='#concept:representation_of' title='5.7&emsp;Concepts&emsp;[qty.concepts]'><span id='conceptref:representation_of_'><span class='tcode_in_codeblock'>representation_<span class='shy'></span>of</span></span></a><span class='anglebracket'>&lt;</span>get_quantity_spec<span class='parenthesis'>(</span>R<span class='parenthesis'>)</span><span class='operator'>.</span>character<span class='anglebracket'>&gt;</span> Rep <span class='operator'>=</span> <span class='keyword'>double</span><span class='anglebracket'>&gt;</span>
<span class='keyword'>class</span> quantity <span class='curlybracket'>{</span> <i ><span class='texttt'>unspecified</span></i> <span class='curlybracket'>}</span>;
<span class='curlybracket'>}</span>
</span></div><div class='texpara'><div id='qty.type-sentence-1' class='sentence'>Let <span class='texttt'><i >Q</i></span> be a specialization of <span class='texttt'>quantity</span><a class='hidden_link' href='#qty.type-sentence-1'>.</a></div> <ul class='itemize'><li ><div class='texpara'><div id='qty.type-sentence-1' class='sentence'>If <span class='texttt'>Rep</span> is a scalar,
<span class='texttt'><i >Q</i></span> represents a scalar quantity (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=102-02-19">IEC 60050, 102-02-19</a>)<a class='hidden_link' href='#qty.type-sentence-1'>.</a></div></div></li><li ><div class='texpara'><div id='qty.type-sentence-1' class='sentence'>If <span class='texttt'>Rep</span> is a vector,
<span class='texttt'><i >Q</i></span> represents a vector (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=102-03-04">IEC 60050, 102-03-04</a>)<a class='hidden_link' href='#qty.type-sentence-1'>.</a></div></div></li></ul></div></div><div id='qty.point.type' class='section'><h3 ><a class='secnum' style='min-width:80pt'>5.8.3</a> Class template <span class='texttt'>quantity_<span class='shy'></span>point</span> <a class='abbr_ref' href='qty.point.type.html'>[qty.point.type]</a></h3><div class='texpara'><span class='codeblock'><span class='keyword'>namespace</span> mp_units <span class='curlybracket'>{</span>
<span class='keyword'>export</span> <span class='keyword'>template</span><span class='anglebracket'>&lt;</span><i ><span class='texttt'>unspecified</span></i><span class='anglebracket'>&gt;</span>
<span class='keyword'>class</span> quantity_point <span class='curlybracket'>{</span> <i ><span class='texttt'>unspecified</span></i> <span class='curlybracket'>}</span>;
<span class='curlybracket'>}</span>
</span></div><div class='texpara'><div id='qty.point.type-sentence-1' class='sentence'>A <a class='hidden_link' href='#def:type,quantity_point' title='5.8.3&emsp;Class template quantity_&shy;point&emsp;[qty.point.type]'><span id='def:type,quantity_point'><i >quantity point type</i></span></a> is a specialization of <span class='texttt'>quantity_<span class='shy'></span>point</span><a class='hidden_link' href='#qty.point.type-sentence-1'>.</a></div> <div id='qty.point.type-sentence-2' class='sentence'>Let <span class='texttt'><i >Q</i></span> be a quantity point type<a class='hidden_link' href='#qty.point.type-sentence-2'>.</a></div> <div id='qty.point.type-sentence-3' class='sentence'><span class='texttt'><i >Q</i><span class='operator'>&#x200b;::&#x200b;</span>point_<span class='shy'></span>origin</span> represents
the origin point of a position vector (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=102-03-15">IEC 60050, 102-03-15</a>)<a class='hidden_link' href='#qty.point.type-sentence-3'>.</a></div> <ul class='itemize'><li ><div class='texpara'><div id='qty.point.type-sentence-1' class='sentence'>If <span class='texttt'>Rep</span> is a scalar,
<span class='texttt'><i >Q</i></span> represents the scalar quantity (<a href="https://www.electropedia.org/iev/iev.nsf/display?openform&ievref=102-02-19">IEC 60050, 102-02-19</a>)
of a position vector<a class='hidden_link' href='#qty.point.type-sentence-1'>.</a></div></div></li><li ><div class='texpara'><div id='qty.point.type-sentence-1' class='sentence'>If <span class='texttt'>Rep</span> is a vector,
<span class='texttt'><i >Q</i></span> represents a position vector<a class='hidden_link' href='#qty.point.type-sentence-1'>.</a></div></div></li></ul></div></div></div><div id='qty.compat' class='section'><h2 ><a class='secnum' style='min-width:65pt'>5.9</a> Compatibility <a class='abbr_ref' href='qty.compat.html'>[qty.compat]</a></h2></div><div id='qty.one' class='section'><h2 ><a class='secnum' style='min-width:65pt'>5.10</a> Dimension one <a class='abbr_ref' href='qty.one.html'>[qty.one]</a></h2></div><div id='qty.systems' class='section'><h2 ><a class='secnum' style='min-width:65pt'>5.11</a> Systems <a class='abbr_ref' href='qty.systems.html'>[qty.systems]</a></h2></div><div id='qty.chrono' class='section'><h2 ><a class='secnum' style='min-width:65pt'>5.12</a> <span class='texttt'>std&#x200b;::&#x200b;chrono</span> compatibility <a class='abbr_ref' href='qty.chrono.html'>[qty.chrono]</a></h2></div></div></div></body></html>