2025-02-11 20:35:14 +00:00
<!DOCTYPE html> < html lang = 'en' >< head >< title > [qty.ref.ops]</ title >< meta charset = 'UTF-8' />< link rel = 'stylesheet' type = 'text/css' href = '14882.css' />< link rel = 'stylesheet' type = 'text/css' href = 'https://fonts.googleapis.com/css2?family=Noto+Serif' />< link rel = 'stylesheet' type = 'text/css' href = 'https://fonts.googleapis.com/css2?family=Noto+Sans' />< link rel = 'stylesheet' type = 'text/css' href = 'https://fonts.googleapis.com/css2?family=Noto+Sans+Mono' />< link rel = 'icon' href = 'icon.png' />< link rel = 'stylesheet' type = 'text/css' href = 'expanded.css' title = 'Normal' />< link rel = 'alternate stylesheet' type = 'text/css' href = 'colored.css' title = 'Notes and examples colored' />< link rel = 'alternate stylesheet' type = 'text/css' href = 'normative-only.css' title = 'Notes and examples hidden' /></ head >< body >< div class = 'wrapper' >< h1 >< a class = 'secnum' style = 'min-width:50pt' > 5</ a > Quantities and units library < a class = 'abbr_ref' href = 'index.html#quantities' > [quantities]</ a ></ h1 >< h2 >< a class = 'secnum' style = 'min-width:65pt' > 5.4</ a > Reference < a class = 'abbr_ref' href = 'qty.ref.html#ops' > [qty.ref]</ a ></ h2 >< h3 >< a class = 'secnum' style = 'min-width:80pt' > 5.4.7</ a > Operations < a class = 'abbr_ref' > [qty.ref.ops]</ a ></ h3 >< div class = 'para' id = '1' >< div class = 'marginalizedparent' >< a class = 'marginalized' href = '#1' > 1</ a ></ div >< div class = 'sourceLinkParent' >< a class = 'sourceLink' href = 'https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L3450' > #</ a ></ div >< div class = 'texpara' >< div id = '1.sentence-1' class = 'sentence' > Each member function with a < span class = 'textsf' >< i > trailing-return-type</ i ></ span >
2024-12-08 08:57:12 +00:00
of < span class = 'texttt' >< span class = 'operator' > -</ span >< span class = 'anglebracket' > > </ span > < span class = 'texttt' >< i > reference-t</ i ></ span >< span class = 'anglebracket' > < </ span > T< span class = 'operator' > .</ span >< span class = 'operator' > .</ span >< span class = 'operator' > .</ span >< span class = 'anglebracket' > > </ span ></ span >
returns < span class = 'texttt' >< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span ></ span >< a class = 'hidden_link' href = '#1.sentence-1' > .</ a ></ div ></ div ></ div >< div class = 'texpara' >< div id = 'lib:Reference,operator*' >< div id = 'lib:operator*,Reference' >< div id = 'lib:Representation,operator*' >< div id = 'lib:operator*,Representation' >< div class = 'itemdecl' >< div class = 'marginalizedparent' >< a class = 'itemDeclLink' href = '#lib:operator*,Representation' > 🔗</ a ></ div >< code class = 'itemdeclcode' >< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > FwdRep, < 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,
< 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' > requires</ span >< span class = 'parenthesis' > (</ span >< span class = 'operator' > !</ span >< a class = 'index' id = 'conceptref:OffsetUnit' ></ a >< span class = 'texttt' >< i > OffsetUnit</ i ></ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > decltype</ span >< span class = 'parenthesis' > (</ span > get_unit< span class = 'parenthesis' > (</ span > R< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span >< span class = 'parenthesis' > )</ span >< span class = 'parenthesis' > )</ span >< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > )</ span >
< span class = 'keyword' > constexpr</ span > quantity< span class = 'anglebracket' > < </ span > R< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span > , Rep< span class = 'anglebracket' > > </ span > < span class = 'keyword' > operator</ span >< span class = 'operator' > *</ span >< span class = 'parenthesis' > (</ span > FwdRep< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > lhs, R r< span class = 'parenthesis' > )</ span > ;
2025-02-11 20:35:14 +00:00
</ code ></ div ></ div ></ div ></ div ></ div ></ div >< div class = 'para' id = '2' >< div class = 'marginalizedparent' >< a class = 'marginalized' href = '#2' > 2</ a ></ div >< div class = 'itemdescr' >< div class = 'sourceLinkParent' >< a class = 'sourceLink' href = 'https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L3465' > #</ a ></ div >< div class = 'texpara' >< div id = '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 > 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 ></ div ></ div ></ div ></ div >< div class = 'texpara' >< div id = 'lib:Reference,operator*_' >< div id = 'lib:operator*,Reference_' >< div id = 'lib:Representation,operator*_' >< div id = 'lib:operator*,Representation_' >< div class = 'itemdecl' >< div class = 'marginalizedparent' >< a class = 'itemDeclLink' href = '#lib:operator*,Representation_' > 🔗</ a ></ div >< code class = 'itemdeclcode' >< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > FwdRep, < 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,
< 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' > requires</ span >< span class = 'parenthesis' > (</ span >< span class = 'operator' > !</ span >< a class = 'index' id = 'conceptref:OffsetUnit_' ></ a >< span class = 'texttt' >< i > OffsetUnit</ i ></ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > decltype</ span >< span class = 'parenthesis' > (</ span > get_unit< span class = 'parenthesis' > (</ span > R< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span >< span class = 'parenthesis' > )</ span >< span class = 'parenthesis' > )</ span >< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > )</ 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 > FwdRep< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > lhs, R< span class = 'parenthesis' > )</ span > ;
2025-02-11 20:35:14 +00:00
</ code ></ div ></ div ></ div ></ div ></ div ></ div >< div class = 'para' id = '3' >< div class = 'marginalizedparent' >< a class = 'marginalized' href = '#3' > 3</ a ></ div >< div class = 'itemdescr' >< div class = 'sourceLinkParent' >< a class = 'sourceLink' href = 'https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L3481' > #</ a ></ div >< div class = 'texpara' >< div id = '3.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 = '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 > , inverse< span class = 'parenthesis' > (</ span > R< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span >< span class = 'parenthesis' > )</ span >< span class = 'curlybracket' > }</ span > ;</ span ></ div ></ div ></ div ></ div >< div class = 'texpara' >< div id = 'lib:Reference,operator/' >< div id = 'lib:operator/,Reference' >< div id = 'lib:quantity,operator/' >< div id = 'lib:operator/,quantity' >< div id = 'lib:Reference,operator*__' >< div id = 'lib:operator*,Reference__' >< div id = 'lib:quantity,operator*' >< div id = 'lib:operator*,quantity' >< div class = 'itemdecl' >< div class = 'marginalizedparent' >< a class = 'itemDeclLink' href = '#lib:operator*,quantity' > 🔗</ a ></ div >< code class = 'itemdeclcode' >< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > FwdQ, < 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, < 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 = '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' > 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 > FwdQ< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > q, R< span class = 'parenthesis' > )</ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > FwdQ, < 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, < 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 = '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' > 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 > FwdQ< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > q, R< span class = 'parenthesis' > )</ span > ;
2025-02-11 20:35:14 +00:00
</ code ></ div ></ div ></ div ></ div ></ div ></ div ></ div ></ div ></ div ></ div >< div class = 'para' id = '4' >< div class = 'marginalizedparent' >< a class = 'marginalized' href = '#4' > 4</ a ></ div >< div class = 'itemdescr' >< div class = 'sourceLinkParent' >< a class = 'sourceLink' href = 'https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L3499' > #</ a ></ div >< div class = 'texpara' >< div id = '4.sentence-1' class = 'sentence' > Let < span class = 'texttt' > @</ span > be the < span class = 'textsf' >< i > operator</ i ></ span >< a class = 'hidden_link' href = '#4.sentence-1' > .</ a ></ div ></ div ></ div ></ div >< div class = 'para' id = '5' >< div class = 'marginalizedparent' >< a class = 'marginalized' href = '#5' > 5</ a ></ div >< div class = 'itemdescr' >< div class = 'sourceLinkParent' >< a class = 'sourceLink' href = 'https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L3502' > #</ a ></ div >< div class = 'texpara' >< div id = '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< 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 >< span class = 'operator' > .</ span >< i > numerical-value</ i > , Q< span class = 'operator' > ::</ span > reference @ R< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span >< span class = 'curlybracket' > }</ span > ;
</ span ></ div ></ div ></ div ></ div >< div class = 'texpara' >< div class = 'itemdecl' id = 'itemdecl:4' >< div class = 'marginalizedparent' >< a class = 'itemDeclLink' href = '#itemdecl:4' > 🔗</ 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 = 'keyword' > typename</ span > Rep< 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 > std< span class = 'operator' > ::</ span > remove_cvref_t< span class = 'anglebracket' > < </ span > Rep< 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' > constexpr</ span > < span class = 'keyword' > auto</ span > < span class = 'keyword' > operator</ span >< span class = 'operator' > *</ span >< span class = 'parenthesis' > (</ span > R, Rep< span class = 'operator' > & </ span >< span class = 'operator' > & </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > =</ span > < span class = 'keyword' > delete</ 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 = 'texttt' > Reference</ span ></ span ></ a > R, < span class = 'keyword' > typename</ span > Rep< 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 > std< span class = 'operator' > ::</ span > remove_cvref_t< span class = 'anglebracket' > < </ span > Rep< 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' > constexpr</ span > < span class = 'keyword' > auto</ span > < span class = 'keyword' > operator</ span >< span class = 'operator' > /</ span >< span class = 'parenthesis' > (</ span > R, Rep< span class = 'operator' > & </ span >< span class = 'operator' > & </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > =</ span > < span class = 'keyword' > delete</ 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 = 'texttt' > Reference</ span ></ span ></ a > R, < span class = 'keyword' > typename</ span > Q< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ 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 = 'anglebracket' > < </ span > std< span class = 'operator' > ::</ span > remove_cvref_t< span class = 'anglebracket' > < </ span > Q< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > constexpr</ span > < span class = 'keyword' > auto</ span > < span class = 'keyword' > operator</ span >< span class = 'operator' > *</ span >< span class = 'parenthesis' > (</ span > R, Q< span class = 'operator' > & </ span >< span class = 'operator' > & </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > =</ span > < span class = 'keyword' > delete</ 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 = 'texttt' > Reference</ span ></ span ></ a > R, < span class = 'keyword' > typename</ span > Q< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ 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 = 'anglebracket' > < </ span > std< span class = 'operator' > ::</ span > remove_cvref_t< span class = 'anglebracket' > < </ span > Q< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > constexpr</ span > < span class = 'keyword' > auto</ span > < span class = 'keyword' > operator</ span >< span class = 'operator' > /</ span >< span class = 'parenthesis' > (</ span > R, Q< span class = 'operator' > & </ span >< span class = 'operator' > & </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > =</ span > < span class = 'keyword' > delete</ span > ;
2025-02-11 20:35:14 +00:00
</ code ></ div ></ div >< div class = 'para' id = '6' >< div class = 'marginalizedparent' >< a class = 'marginalized' href = '#6' > 6</ a ></ div >< div class = 'itemdescr' >< div class = 'sourceLinkParent' >< a class = 'sourceLink' href = 'https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L3529' > #</ a ></ div >< div class = 'texpara' >< div id = '6.sentence-1' class = 'sentence' >< i > Recommended practice</ i > : Suggest swapping the operands< a class = 'hidden_link' href = '#6.sentence-1' > .</ a ></ div ></ div ></ div ></ div ></ div ></ body ></ html >