2024-12-08 08:57:12 +00:00
<!DOCTYPE html> < html lang = 'en' >< head >< title > [qty.pt.cons]</ 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' href = 'qty.pt.html#cons' > [qty.pt]</ a ></ h2 >< h3 >< a class = 'secnum' style = 'min-width:80pt' > 5.7.6</ a > Constructors < a class = 'abbr_ref' > [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 = '1' >< div class = 'marginalizedparent' >< a class = 'marginalized' href = '#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 = '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 = '#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 = 'qty.pt.orig.concepts.html#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 = '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-units329ffdaacb1bd7bed08565ac80d9eef7ccb1e5b5/source/quantities.tex#L5997' > #</ 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 = '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 = 'qty.pt.syn.html#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 = '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-units329ffdaacb1bd7bed08565ac80d9eef7ccb1e5b5/source/quantities.tex#L6015' > #</ a ></ div >< div class = 'texpara' >< div id = '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 = '#3.sentence-1' > .</ a ></ div > < div id = '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 = '#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 = 'qty.pt.like.html#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 = '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-units329ffdaacb1bd7bed08565ac80d9eef7ccb1e5b5/source/quantities.tex#L6030' > #</ a ></ div >< div class = 'texpara' >< div id = '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 = '#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-units329ffdaacb1bd7bed08565ac80d9eef7ccb1e5b5/source/quantities.tex#L6033' > #</ a ></ div >< div class = 'texpara' >< div id = '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 = '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-units329ffdaacb1bd7bed08565ac80d9eef7ccb1e5b5/source/quantities.tex#L6040' > #</ a ></ div >< div class = 'texpara' >< div id = '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 = '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 ></ body ></ html >