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