2024-12-08 08:57:12 +00:00
<!DOCTYPE html> < html lang = 'en' >< head >< title > [qty.pt.syn]</ 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#syn' > [qty.pt]</ a ></ h2 >< h3 >< a class = 'secnum' style = 'min-width:80pt' > 5.7.4</ a > Class template < span class = 'texttt' > quantity_< span class = 'shy' ></ span > point</ span > < a class = 'abbr_ref' > [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 = 'qty.pt.orig.concepts.html#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 = 'qty.pt.orig.concepts.html#concept:PointOrigin' title = '5.7.2.2 Concepts [qty.pt.orig.concepts]' >< span id = 'conceptref:PointOrigin' >< span class = 'tcode_in_codeblock' > PointOrigin</ span ></ span ></ a > < span class = 'keyword' > auto</ span > 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 = 'qty.pt.orig.concepts.html#concept:PointOrigin' title = '5.7.2.2 Concepts [qty.pt.orig.concepts]' >< span id = 'conceptref:PointOrigin_' >< span class = 'tcode_in_codeblock' > PointOrigin</ span ></ span ></ a > < span class = 'keyword' > auto</ span > 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 = 'qty.pt.static.html' 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 = 'qty.pt.cons.html' 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 = 'qty.pt.orig.concepts.html#concept:PointOrigin' title = '5.7.2.2 Concepts [qty.pt.orig.concepts]' >< span id = 'conceptref:PointOrigin__' >< span class = 'tcode_in_codeblock' > PointOrigin</ span ></ span ></ a > 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 = 'qty.pt.like.html#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 = 'qty.pt.conv.html' 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 = 'qty.pt.obs.html' 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 = 'qty.pt.orig.concepts.html#concept:PointOrigin' title = '5.7.2.2 Concepts [qty.pt.orig.concepts]' >< span id = 'conceptref:PointOrigin___' >< span class = 'tcode_in_codeblock' > PointOrigin</ span ></ span ></ a > 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 = 'qty.pt.orig.concepts.html#concept:PointOrigin' title = '5.7.2.2 Concepts [qty.pt.orig.concepts]' >< span id = 'conceptref:PointOrigin____' >< span class = 'tcode_in_codeblock' > PointOrigin</ span ></ span ></ a > 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 = 'qty.pt.orig.concepts.html#concept:PointOrigin' title = '5.7.2.2 Concepts [qty.pt.orig.concepts]' >< span id = 'conceptref:PointOrigin_____' >< span class = 'tcode_in_codeblock' > PointOrigin</ span ></ span ></ a > 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 = 'qty.pt.orig.concepts.html#concept:PointOrigin' title = '5.7.2.2 Concepts [qty.pt.orig.concepts]' >< span id = 'conceptref:PointOrigin______' >< span class = 'tcode_in_codeblock' > PointOrigin</ span ></ span ></ a > 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 = 'qty.pt.conv.ops.html' 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 = 'qty.pt.like.html#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 = 'qty.pt.like.html#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 = 'qty.pt.unary.ops.html' 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 = 'qty.pt.assign.ops.html' 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 = 'qty.pt.arith.ops.html' 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 = 'qty.pt.orig.concepts.html#concept:PointOrigin' title = '5.7.2.2 Concepts [qty.pt.orig.concepts]' >< span id = 'conceptref:PointOrigin_______' >< span class = 'tcode_in_codeblock' > PointOrigin</ span ></ span ></ a > 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 = 'qty.pt.orig.concepts.html#concept:PointOrigin' title = '5.7.2.2 Concepts [qty.pt.orig.concepts]' >< span id = 'conceptref:PointOrigin________' >< span class = 'tcode_in_codeblock' > PointOrigin</ span ></ span ></ a > 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 = 'qty.pt.cmp.html' 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 = 'qty.pt.orig.concepts.html#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 = 'qty.pt.like.html#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 = '1' >< div class = 'marginalizedparent' >< a class = 'marginalized' href = '#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 = '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 = '#1.sentence-1' > .</ a ></ div ></ div ></ div >< div class = 'para' id = '2' >< div class = 'marginalizedparent' >< a class = 'marginalized' href = '#2' > 2</ a ></ div >< div class = 'sourceLinkParent' >< a class = 'sourceLink' href = 'https://github.com/mpusz/mp-units329ffdaacb1bd7bed08565ac80d9eef7ccb1e5b5/source/quantities.tex#L5932' > #</ a ></ div >< div class = 'texpara' >< div id = '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 = '#2.sentence-1' > .</ a ></ div ></ div ></ div ></ div ></ body ></ html >