2024-12-08 08:57:12 +00:00
<!DOCTYPE html> < html lang = 'en' >< head >< title > [qty.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.6</ a > Quantity < a class = 'abbr_ref' href = 'qty.html#syn' > [qty]</ a ></ h2 >< h3 >< a class = 'secnum' style = 'min-width:80pt' > 5.6.3</ a > Class template < span class = 'texttt' > quantity</ span > < a class = 'abbr_ref' > [qty.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:Quantity' title = '5.6.3 Class template quantity [qty.syn]' >< span id = 'concept:Quantity' >< span id = 'lib:Quantity' >< span class = 'tcode_in_codeblock' > Quantity</ 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< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > (</ span >< span class = 'parenthesis' > )</ span >< span class = 'parenthesis' > )</ span > ; < span class = 'comment' > // < i > exposition only</ i ></ span >
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > Q, < span class = 'keyword' > auto</ span > QS< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > concept</ span > < a class = 'hidden_link' href = '#concept:QuantityOf' title = '5.6.3 Class template quantity [qty.syn]' >< span id = 'concept:QuantityOf' >< span id = 'lib:QuantityOf' >< span class = 'tcode_in_codeblock' > QuantityOf</ span ></ span ></ span ></ a > < span class = 'operator' > =</ span > < span class = 'comment' > // < i > exposition only</ i ></ span >
< a href = '#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 = 'anglebracket' > < </ span > Q< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > < a href = 'qty.spec.concepts.html#concept:QuantitySpecOf' title = '5.4.3.2 Concepts [qty.spec.concepts]' >< span id = 'conceptref:QuantitySpecOf' >< span class = '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 > Q< span class = 'operator' > ::</ span > quantity_spec< span class = 'parenthesis' > )</ span >< span class = 'parenthesis' > )</ span > , QS< span class = 'anglebracket' > > </ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< a href = 'qty.unit.concepts.html#concept:Unit' title = '5.4.4.4 Concepts [qty.unit.concepts]' >< span id = 'conceptref:Unit' >< span class = 'tcode_in_codeblock' > Unit</ span ></ span ></ a > UFrom, < 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 > UTo< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > consteval</ span > < span class = 'keyword' > bool</ span > < i > integral-conversion-factor</ i >< span class = 'parenthesis' > (</ span > UFrom from, UTo to< span class = 'parenthesis' > )</ span > < span class = 'comment' > // < i > exposition only</ i ></ span >
< span class = 'curlybracket' > {</ span >
< span class = 'keyword' > return</ span > < i > is-integral</ i >< span class = 'parenthesis' > (</ span >< i > get-canonical-unit</ i >< span class = 'parenthesis' > (</ span > from< span class = 'parenthesis' > )</ span >< span class = 'operator' > .</ span > mag < span class = 'operator' > /</ span > < i > get-canonical-unit</ i >< span class = 'parenthesis' > (</ span > to< span class = 'parenthesis' > )</ span >< span class = 'operator' > .</ span > mag< span class = 'parenthesis' > )</ span > ;
< 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 > < i > IsFloatingPoint</ i >< a class = 'index' id = 'concept:IsFloatingPoint' ></ a > < span class = 'operator' > =</ span > treat_as_floating_point< span class = 'anglebracket' > < </ span > T< span class = 'anglebracket' > > </ span > ; < span class = 'comment' > // < i > exposition only</ i ></ span >
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > FromRep, < span class = 'keyword' > typename</ span > ToRep, < span class = 'keyword' > auto</ span > FromUnit < span class = 'operator' > =</ span > one, < span class = 'keyword' > auto</ span > ToUnit < span class = 'operator' > =</ span > one< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > concept</ span > < i > ValuePreservingTo</ i >< a class = 'index' id = 'concept:ValuePreservingTo' ></ a > < span class = 'operator' > =</ span > < span class = 'comment' > // < i > exposition only</ i ></ span >
< a href = 'qty.rep.concepts.html#concept:Representation' title = '5.5.4 Concepts [qty.rep.concepts]' >< span id = 'conceptref:Representation' >< span class = 'tcode_in_codeblock' > Representation</ span ></ span ></ a >< span class = 'anglebracket' > < </ span > std< span class = 'operator' > ::</ span > remove_cvref_t< span class = 'anglebracket' > < </ span > FromRep< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > < a href = 'qty.rep.concepts.html#concept:Representation' title = '5.5.4 Concepts [qty.rep.concepts]' >< span id = 'conceptref:Representation_' >< span class = 'tcode_in_codeblock' > Representation</ span ></ span ></ a >< span class = 'anglebracket' > < </ span > ToRep< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ 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 = 'anglebracket' > < </ span >< span class = 'keyword' > decltype</ span >< span class = 'parenthesis' > (</ span > FromUnit< span class = 'parenthesis' > )</ span >< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ 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 = 'anglebracket' > < </ span >< span class = 'keyword' > decltype</ span >< span class = 'parenthesis' > (</ span > ToUnit< span class = 'parenthesis' > )</ span >< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > std< span class = 'operator' > ::</ span > assignable_from< span class = 'anglebracket' > < </ span > ToRep< span class = 'operator' > & </ span > , FromRep< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< span class = 'parenthesis' > (</ span >< i > IsFloatingPoint</ i >< span class = 'anglebracket' > < </ span > ToRep< span class = 'anglebracket' > > </ span > < span class = 'operator' > |</ span >< span class = 'operator' > |</ span > < span class = 'parenthesis' > (</ span >< span class = 'operator' > !</ span >< a class = 'index' id = 'conceptref:IsFloatingPoint' ></ a >< i > IsFloatingPoint</ i >< span class = 'anglebracket' > < </ span > std< span class = 'operator' > ::</ span > remove_cvref_t< span class = 'anglebracket' > < </ span > FromRep< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< span class = 'parenthesis' > (</ span >< i > integral-conversion-factor</ i >< span class = 'parenthesis' > (</ span > FromUnit, ToUnit< span class = 'parenthesis' > )</ 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 > QFrom, < span class = 'keyword' > typename</ span > QTo< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > concept</ span > < i > QuantityConvertibleTo</ i >< a class = 'index' id = 'concept:QuantityConvertibleTo' ></ a > < span class = 'operator' > =</ span > < span class = 'comment' > // < i > exposition only</ i ></ span >
< a href = '#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 = 'anglebracket' > < </ span > QFrom< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > < a href = '#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 = 'anglebracket' > < </ span > QTo< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:QuantitySpecConvertibleTo' ></ a >< i > QuantitySpecConvertibleTo</ i >< span class = 'anglebracket' > < </ span > QFrom< span class = 'operator' > ::</ span > quantity_spec, QTo< span class = 'operator' > ::</ span > quantity_spec< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:UnitConvertibleTo' ></ a >< i > UnitConvertibleTo</ i >< span class = 'anglebracket' > < </ span > QFrom< span class = 'operator' > ::</ span > unit, QTo< span class = 'operator' > ::</ span > unit< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< i > ValuePreservingTo</ i >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > QFrom< span class = 'operator' > ::</ span > rep, < span class = 'keyword' > typename</ span > QTo< span class = 'operator' > ::</ span > rep, QFrom< span class = 'operator' > ::</ span > unit, QTo< span class = 'operator' > ::</ span > unit< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span > QFrom q< span class = 'parenthesis' > )</ span > < span class = 'curlybracket' > {</ span > < i > sudo-cast</ i >< span class = 'anglebracket' > < </ span > QTo< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > (</ span > q< span class = 'parenthesis' > )</ span > ; < span class = 'curlybracket' > }</ span > ; < span class = 'comment' > // see < a href = 'qty.non.mem.conv.html' title = '5.6.15 Non-member conversions' > [qty.< span class = 'shy' ></ span > non.< span class = 'shy' ></ span > mem.< span class = 'shy' ></ span > conv]</ a ></ span >
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > auto</ span > QS, < span class = 'keyword' > typename</ span > Func, < span class = 'keyword' > typename</ span > T, < span class = 'keyword' > typename</ span > U< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > concept</ span > < i > InvokeResultOf</ i >< a class = 'index' id = 'concept:InvokeResultOf' ></ a > < span class = 'operator' > =</ span > < span class = 'comment' > // < i > exposition only</ i ></ 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 = 'anglebracket' > < </ span >< span class = 'keyword' > decltype</ span >< span class = 'parenthesis' > (</ span > QS< span class = 'parenthesis' > )</ span >< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > std< span class = 'operator' > ::</ span > regular_invocable< span class = 'anglebracket' > < </ span > Func, T, U< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a href = 'qty.rep.concepts.html#concept:RepresentationOf' title = '5.5.4 Concepts [qty.rep.concepts]' >< span id = 'conceptref:RepresentationOf' >< span class = 'tcode_in_codeblock' > RepresentationOf</ span ></ span ></ a >< span class = 'anglebracket' > < </ span > std< span class = 'operator' > ::</ span > invoke_result_t< span class = 'anglebracket' > < </ span > Func, T, U< span class = 'anglebracket' > > </ span > , QS< span class = 'anglebracket' > > </ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > Func, < span class = 'keyword' > typename</ span > Q1, < span class = 'keyword' > typename</ span > Q2,
< span class = 'keyword' > auto</ span > QS < span class = 'operator' > =</ span > std< span class = 'operator' > ::</ span > invoke_result_t< span class = 'anglebracket' > < </ span > Func, < span class = 'keyword' > decltype</ span >< span class = 'parenthesis' > (</ span >< span class = 'keyword' > auto</ span >< span class = 'parenthesis' > (</ span > Q1< span class = 'operator' > ::</ span > quantity_spec< span class = 'parenthesis' > )</ span >< span class = 'parenthesis' > )</ span > ,
< span class = 'keyword' > decltype</ span >< span class = 'parenthesis' > (</ span >< span class = 'keyword' > auto</ span >< span class = 'parenthesis' > (</ span > Q2< span class = 'operator' > ::</ span > quantity_spec< span class = 'parenthesis' > )</ span >< span class = 'parenthesis' > )</ span >< span class = 'anglebracket' > > </ span >< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > concept</ span > < i > InvocableQuantities</ i >< a class = 'index' id = 'concept:InvocableQuantities' ></ a > < span class = 'operator' > =</ span > < span class = 'comment' > // < i > exposition only</ i ></ 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 = 'anglebracket' > < </ span >< span class = 'keyword' > decltype</ span >< span class = 'parenthesis' > (</ span > QS< span class = 'parenthesis' > )</ span >< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > < a href = '#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 = 'anglebracket' > < </ span > Q1< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > < a href = '#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 = 'anglebracket' > < </ span > Q2< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:InvokeResultOf' ></ a >< i > InvokeResultOf</ i >< span class = 'anglebracket' > < </ span > QS, Func, < span class = 'keyword' > typename</ span > Q1< span class = 'operator' > ::</ span > rep, < span class = 'keyword' > typename</ span > Q2< span class = 'operator' > ::</ span > rep< span class = 'anglebracket' > > </ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > auto</ span > R1, < span class = 'keyword' > auto</ span > R2< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > concept</ span > < i > HaveCommonReference</ i >< a class = 'index' id = 'concept:HaveCommonReference' ></ a > < span class = 'operator' > =</ span > < span class = 'keyword' > requires</ span > < span class = 'curlybracket' > {</ span > get_common_reference< span class = 'parenthesis' > (</ span > R1, R2< span class = 'parenthesis' > )</ span > ; < span class = 'curlybracket' > }</ span > ; < span class = 'comment' > // < i > exposition only</ i ></ span >
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > Func, Quantity Q1, Quantity Q2< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > using</ span > < i > common-quantity-for</ i > < span class = 'operator' > =</ span > < span class = 'comment' > // < i > exposition only</ i ></ span >
quantity< span class = 'anglebracket' > < </ span > get_common_reference< span class = 'parenthesis' > (</ span > Q1< span class = 'operator' > ::</ span > reference, Q2< span class = 'operator' > ::</ span > reference< span class = 'parenthesis' > )</ span > ,
std< span class = 'operator' > ::</ span > invoke_result_t< span class = 'anglebracket' > < </ span > Func, < span class = 'keyword' > typename</ span > Q1< span class = 'operator' > ::</ span > rep, < span class = 'keyword' > typename</ span > Q2< span class = 'operator' > ::</ span > rep< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > Func, < span class = 'keyword' > typename</ span > Q1, < span class = 'keyword' > typename</ span > Q2< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > concept</ span > < i > CommonlyInvocableQuantities</ i >< a class = 'index' id = 'concept:CommonlyInvocableQuantities' ></ a > < span class = 'operator' > =</ span > < span class = 'comment' > // < i > exposition only</ i ></ span >
< a href = '#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 = 'anglebracket' > < </ span > Q1< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > < a href = '#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 = 'anglebracket' > < </ span > Q2< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > < a class = 'index' id = 'conceptref:HaveCommonReference' ></ a >< i > HaveCommonReference</ i >< span class = 'anglebracket' > < </ span > Q1< span class = 'operator' > ::</ span > reference, Q2< span class = 'operator' > ::</ span > reference< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
std< span class = 'operator' > ::</ span > convertible_to< span class = 'anglebracket' > < </ span > Q1, < i > common-quantity-for</ i >< span class = 'anglebracket' > < </ span > Func, Q1, Q2< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
std< span class = 'operator' > ::</ span > convertible_to< span class = 'anglebracket' > < </ span > Q2, < i > common-quantity-for</ i >< span class = 'anglebracket' > < </ span > Func, Q1, Q2< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:InvocableQuantities' ></ a >< i > InvocableQuantities</ i >< span class = 'anglebracket' > < </ span > Func, Q1, Q2,
get_common_quantity_spec< span class = 'parenthesis' > (</ span > Q1< span class = 'operator' > ::</ span > quantity_spec, Q2< span class = 'operator' > ::</ span > quantity_spec< span class = 'parenthesis' > )</ span >< span class = 'anglebracket' > > </ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > auto</ span > R1, < span class = 'keyword' > auto</ span > R2, < span class = 'keyword' > typename</ span > Rep1, < span class = 'keyword' > typename</ span > Rep2< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > concept</ span > < i > SameValueAs</ i >< a class = 'index' id = 'concept:SameValueAs' ></ a > < span class = 'operator' > =</ span > < span class = 'comment' > // < i > exposition only</ i ></ span >
< span class = 'parenthesis' > (</ span > equivalent< span class = 'parenthesis' > (</ span > get_unit< span class = 'parenthesis' > (</ span > R1< span class = 'parenthesis' > )</ span > , get_unit< span class = 'parenthesis' > (</ span > R2< span class = 'parenthesis' > )</ span >< span class = 'parenthesis' > )</ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > std< span class = 'operator' > ::</ span > convertible_to< span class = 'anglebracket' > < </ span > Rep1, Rep2< span class = 'anglebracket' > > </ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > T< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > using</ span > < i > quantity-like-type</ i > < span class = 'operator' > =</ span > < span class = 'comment' > // < i > exposition only</ i ></ span >
quantity< span class = 'anglebracket' > < </ span > quantity_like_traits< span class = 'anglebracket' > < </ span > T< span class = 'anglebracket' > > </ span >< span class = 'operator' > ::</ span > reference, < span class = 'keyword' > typename</ span > quantity_like_traits< span class = 'anglebracket' > < </ span > T< span class = 'anglebracket' > > </ span >< span class = 'operator' > ::</ span > rep< span class = 'anglebracket' > > </ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > T, < span class = 'keyword' > typename</ span > U, < span class = 'keyword' > typename</ span > TT < span class = 'operator' > =</ span > std< span class = 'operator' > ::</ span > remove_reference_t< span class = 'anglebracket' > < </ span > T< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > concept</ span > < i > Mutable</ i >< a class = 'index' id = 'concept:Mutable' ></ a > < span class = 'operator' > =</ span > < span class = 'parenthesis' > (</ span >< span class = 'operator' > !</ span > std< span class = 'operator' > ::</ span > is_const_v< span class = 'anglebracket' > < </ span > TT< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > std< span class = 'operator' > ::</ span > derived_from< span class = 'anglebracket' > < </ span > TT, U< span class = 'anglebracket' > > </ span > ; < span class = 'comment' > // < i > exposition only</ i ></ 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.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' >< a class = 'hidden_link' href = '#lib:quantity' title = '5.6.3 Class template quantity [qty.syn]' > quantity</ a ></ span > < span class = 'curlybracket' > {</ span >
< span class = 'keyword' > public</ span >< span class = 'operator' > :</ span >
Rep < i > numerical-value</ i > ; < span class = 'comment' > // < i > exposition only</ i ></ 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' > using</ span > rep < span class = 'operator' > =</ span > Rep;
< span class = 'comment' > // < a href = 'qty.static.html' title = '5.6.4 Static member functions' > [qty.< span class = 'shy' ></ span > static]</ a > , static member functions</ span >
< span class = 'keyword' > static</ span > < span class = 'keyword' > constexpr</ span > quantity zero< 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 one< 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 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 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.cons.html' title = '5.6.5 Constructors and assignment' > [qty.< span class = 'shy' ></ span > cons]</ a > , constructors and assignment</ span >
quantity< span class = 'parenthesis' > (</ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > =</ span > < span class = 'keyword' > default</ span > ;
quantity< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > quantity< span class = 'operator' > & </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > =</ span > < span class = 'keyword' > default</ span > ;
quantity< span class = 'parenthesis' > (</ span > quantity< 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< 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 > FwdValue, < 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 > R2< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span > < a class = 'index' id = 'conceptref:SameValueAs' ></ a >< i > SameValueAs</ i >< span class = 'anglebracket' > < </ span > R2< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span > , R, std< span class = 'operator' > ::</ span > remove_cvref_t< span class = 'anglebracket' > < </ span > FwdValue< span class = 'anglebracket' > > </ span > , Rep< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > constexpr</ span > quantity< span class = 'parenthesis' > (</ span > FwdValue< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > v, R2< span class = 'parenthesis' > )</ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > FwdValue, < 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 > R2, < span class = 'keyword' > typename</ span > Value < span class = 'operator' > =</ span > std< span class = 'operator' > ::</ span > remove_cvref_t< span class = 'anglebracket' > < </ span > FwdValue< 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:SameValueAs_' ></ a >< i > SameValueAs</ i >< span class = 'anglebracket' > < </ span > R2< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span > , R, Value, Rep< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:QuantityConvertibleTo' ></ a >< i > QuantityConvertibleTo</ i >< span class = 'anglebracket' > < </ span > quantity< span class = 'anglebracket' > < </ span > R2< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span > , Value< span class = 'anglebracket' > > </ span > , quantity< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > constexpr</ span > quantity< span class = 'parenthesis' > (</ span > FwdValue< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > v, R2< span class = 'parenthesis' > )</ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< a class = 'index' id = 'conceptref:ValuePreservingTo' ></ a >< i > ValuePreservingTo</ i >< span class = 'anglebracket' > < </ span > Rep< span class = 'anglebracket' > > </ span > FwdValue< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span > unit < span class = 'operator' > =</ span >< span class = 'operator' > =</ span > < span class = 'operator' > ::</ span > mp_units< span class = 'operator' > ::</ span > one< span class = 'parenthesis' > )</ span >
< span class = 'keyword' > constexpr</ span > quantity< span class = 'parenthesis' > (</ span > FwdValue< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > v< span class = 'parenthesis' > )</ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< a class = 'index' id = 'conceptref:QuantityConvertibleTo_' ></ a >< i > QuantityConvertibleTo</ i >< span class = 'anglebracket' > < </ span > quantity< span class = 'anglebracket' > > </ span > Q< span class = 'anglebracket' > > </ span >
< 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< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > Q< span class = 'operator' > & </ span > q< span class = 'parenthesis' > )</ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< a href = 'qty.like.html#concept:QuantityLike' title = '5.6.2 Interoperability [qty.like]' >< span id = 'conceptref:QuantityLike' >< span class = 'tcode_in_codeblock' > QuantityLike</ span ></ span ></ a > Q< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span > < a class = 'index' id = 'conceptref:QuantityConvertibleTo__' ></ a >< i > QuantityConvertibleTo</ i >< span class = 'anglebracket' > < </ span >< i > quantity-like-type</ i >< span class = 'anglebracket' > < </ span > Q< span class = 'anglebracket' > > </ span > , quantity< span class = 'anglebracket' > > </ span >
< 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< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > Q< span class = 'operator' > & </ span > q< span class = 'parenthesis' > )</ span > ;
quantity< span class = 'operator' > & </ span > < span class = 'keyword' > operator</ span >< span class = 'operator' > =</ span >< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > quantity< span class = 'operator' > & </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > =</ span > < span class = 'keyword' > default</ span > ;
quantity< span class = 'operator' > & </ span > < span class = 'keyword' > operator</ span >< span class = 'operator' > =</ span >< span class = 'parenthesis' > (</ span > quantity< span class = 'operator' > & </ span >< span class = 'operator' > & </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > =</ span > < span class = 'keyword' > default</ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< a class = 'index' id = 'conceptref:ValuePreservingTo_' ></ a >< i > ValuePreservingTo</ i >< span class = 'anglebracket' > < </ span > Rep< span class = 'anglebracket' > > </ span > FwdValue< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span > unit < span class = 'operator' > =</ span >< span class = 'operator' > =</ span > < span class = 'operator' > ::</ span > mp_units< span class = 'operator' > ::</ span > one< span class = 'parenthesis' > )</ span >
< span class = 'keyword' > constexpr</ span > quantity< span class = 'operator' > & </ span > < span class = 'keyword' > operator</ span >< span class = 'operator' > =</ span >< span class = 'parenthesis' > (</ span > FwdValue< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > v< span class = 'parenthesis' > )</ span > ;
< span class = 'comment' > // < a href = 'qty.conv.html' title = '5.6.6 Conversions' > [qty.< span class = 'shy' ></ span > conv]</ a > , conversions</ 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 > < a class = 'index' id = 'conceptref:QuantityConvertibleTo___' ></ a >< i > QuantityConvertibleTo</ i >< span class = 'anglebracket' > < </ span > quantity, quantity< span class = 'anglebracket' > < </ span >< i > make-reference</ i >< span class = 'parenthesis' > (</ span > quantity_spec, ToU< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span >< span class = 'parenthesis' > )</ span > , Rep< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > constexpr</ span > < a href = '#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 > < 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 > < a class = 'index' id = 'conceptref:QuantityConvertibleTo____' ></ a >< i > QuantityConvertibleTo</ i >< span class = 'anglebracket' > < </ span > quantity, quantity< span class = 'anglebracket' > < </ span > reference, ToRep< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > constexpr</ span > < a href = '#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 > < 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 > < a class = 'index' id = 'conceptref:QuantityConvertibleTo_____' ></ a >< i > QuantityConvertibleTo</ i >< span class = 'anglebracket' > < </ span > quantity,
quantity< span class = 'anglebracket' > < </ span >< i > make-reference</ i >< span class = 'parenthesis' > (</ span > quantity_spec, ToU< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span >< span class = 'parenthesis' > )</ span > , ToRep< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > constexpr</ span > < a href = '#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 > < 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 > < span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > quantity q< span class = 'parenthesis' > )</ span > < span class = 'curlybracket' > {</ span > value_cast< span class = 'anglebracket' > < </ span > ToU< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span >< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > (</ span > q< span class = 'parenthesis' > )</ span > ; < span class = 'curlybracket' > }</ span >
< span class = 'keyword' > constexpr</ span > < a href = '#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 > < 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 > < span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > quantity q< span class = 'parenthesis' > )</ span > < span class = 'curlybracket' > {</ span > value_cast< span class = 'anglebracket' > < </ span > ToRep< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > (</ span > q< span class = 'parenthesis' > )</ span > ; < span class = 'curlybracket' > }</ span >
< span class = 'keyword' > constexpr</ span > < a href = '#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 > < 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 > < span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > quantity q< span class = 'parenthesis' > )</ span > < span class = 'curlybracket' > {</ span > value_cast< span class = 'anglebracket' > < </ span > ToU< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span > , ToRep< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > (</ span > q< span class = 'parenthesis' > )</ span > ; < span class = 'curlybracket' > }</ span >
< span class = 'keyword' > constexpr</ span > < a href = '#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 > < 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.obs.html' title = '5.6.7 Numerical value observers' > [qty.< span class = 'shy' ></ span > obs]</ a > , numerical value observers</ span >
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< a href = 'qty.unit.concepts.html#concept:Unit' title = '5.4.4.4 Concepts [qty.unit.concepts]' >< span id = 'conceptref:Unit_____' >< span class = 'tcode_in_codeblock' > Unit</ span ></ span ></ a > U< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span > equivalent< span class = 'parenthesis' > (</ span > U< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span > , unit< span class = 'parenthesis' > )</ span >< span class = 'parenthesis' > )</ span >
< span class = 'keyword' > constexpr</ span > rep< span class = 'operator' > & </ span > numerical_value_ref_in< span class = 'parenthesis' > (</ span > U< 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.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 > U< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span > equivalent< span class = 'parenthesis' > (</ span > U< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span > , unit< span class = 'parenthesis' > )</ span >< span class = 'parenthesis' > )</ span >
< span class = 'keyword' > constexpr</ span > < span class = 'keyword' > const</ span > rep< span class = 'operator' > & </ span > numerical_value_ref_in< span class = 'parenthesis' > (</ span > U< 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.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 > U< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span > equivalent< span class = 'parenthesis' > (</ span > U< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span > , unit< span class = 'parenthesis' > )</ span >< span class = 'parenthesis' > )</ span >
< span class = 'keyword' > void</ span > numerical_value_ref_in< span class = 'parenthesis' > (</ span > U< 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 class = 'index' id = 'conceptref:UnitCompatibleWith____' ></ a >< i > UnitCompatibleWith</ i >< span class = 'anglebracket' > < </ span > unit, quantity_spec< span class = 'anglebracket' > > </ span > U< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span > < a class = 'index' id = 'conceptref:QuantityConvertibleTo______' ></ a >< i > QuantityConvertibleTo</ i >< span class = 'anglebracket' > < </ span > quantity, quantity< span class = 'anglebracket' > < </ span >< i > make-reference</ i >< span class = 'parenthesis' > (</ span > quantity_spec, U< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span >< span class = 'parenthesis' > )</ span > , Rep< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > constexpr</ span > rep numerical_value_in< span class = 'parenthesis' > (</ span > U< span class = 'parenthesis' > )</ span > < span class = 'keyword' > const</ span > < span class = 'keyword' > noexcept</ 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 > U< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span > < span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > quantity q< span class = 'parenthesis' > )</ span > < span class = 'curlybracket' > {</ span > value_cast< span class = 'anglebracket' > < </ span > U< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span >< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > (</ span > q< span class = 'parenthesis' > )</ span > ; < span class = 'curlybracket' > }</ span >
< span class = 'keyword' > constexpr</ span > rep force_numerical_value_in< span class = 'parenthesis' > (</ span > U< span class = 'parenthesis' > )</ span > < span class = 'keyword' > const</ span > < span class = 'keyword' > noexcept</ span > ;
< span class = 'comment' > // < a href = 'qty.conv.ops.html' title = '5.6.8 Conversion operations' > [qty.< 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 > V_, std< span class = 'operator' > ::</ span > constructible_from< span class = 'anglebracket' > < </ span > Rep< span class = 'anglebracket' > > </ span > Value < span class = 'operator' > =</ span > std< span class = 'operator' > ::</ span > remove_cvref_t< span class = 'anglebracket' > < </ span > V_< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span > unit < span class = 'operator' > =</ span >< span class = 'operator' > =</ span > < span class = 'operator' > ::</ span > mp_units< span class = 'operator' > ::</ span > one< span class = 'parenthesis' > )</ span >
< span class = 'keyword' > explicit</ span > < span class = 'keyword' > operator</ span > V_< span class = 'parenthesis' > (</ span >< 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 >< span class = 'keyword' > typename</ span > Q_, < a href = 'qty.like.html#concept:QuantityLike' title = '5.6.2 Interoperability [qty.like]' >< span id = 'conceptref:QuantityLike_' >< span class = 'tcode_in_codeblock' > QuantityLike</ span ></ span ></ a > Q < span class = 'operator' > =</ 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' > requires</ span > < a class = 'index' id = 'conceptref:QuantityConvertibleTo_______' ></ a >< i > QuantityConvertibleTo</ i >< span class = 'anglebracket' > < </ span > quantity, < i > quantity-like-type</ i >< span class = 'anglebracket' > < </ span > Q< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span >
< 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 > Q_< span class = 'parenthesis' > (</ span >< span class = 'parenthesis' > )</ span > < span class = 'keyword' > const</ 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.unary.ops.html' title = '5.6.9 Unary operations' > [qty.< span class = 'shy' ></ span > unary.< span class = 'shy' ></ span > ops]</ a > , unary operations</ span >
< span class = 'keyword' > constexpr</ span > < a href = '#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 > < span class = 'keyword' > auto</ span > < span class = 'keyword' > operator</ span >< span class = 'operator' > +</ span >< span class = 'parenthesis' > (</ span >< span class = 'parenthesis' > )</ span > < span class = 'keyword' > const</ span >
< span class = 'keyword' > requires</ span > < i >< span class = 'texttt' > see below</ span ></ i > ;
< span class = 'keyword' > constexpr</ span > < a href = '#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 > < span class = 'keyword' > auto</ span > < span class = 'keyword' > operator</ span >< span class = 'operator' > -</ span >< span class = 'parenthesis' > (</ span >< span class = 'parenthesis' > )</ span > < span class = 'keyword' > const</ 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< span class = 'anglebracket' > > </ span > Q< 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 > Q< span class = 'operator' > & </ 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 >< a class = 'index' id = 'conceptref:Mutable_' ></ a >< i > Mutable</ i >< span class = 'anglebracket' > < </ span > quantity< span class = 'anglebracket' > > </ span > Q< 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 > Q< span class = 'operator' > & </ 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' > constexpr</ span > < a href = '#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 > < span class = 'keyword' > auto</ span > < 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 > < a href = '#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 > < span class = 'keyword' > auto</ span > < 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.assign.ops.html' title = '5.6.10 Compound assignment operations' > [qty.< 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< span class = 'anglebracket' > > </ span > Q, < 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 > Q< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< span class = 'operator' > & </ span > rhs< 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< span class = 'anglebracket' > > </ span > Q, < 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 > Q< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< span class = 'operator' > & </ span > rhs< 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< span class = 'anglebracket' > > </ span > Q, < 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 > Q< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< span class = 'operator' > & </ span > rhs< 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< span class = 'anglebracket' > > </ span > Q, < a class = 'index' id = 'conceptref:ValuePreservingTo__' ></ a >< i > ValuePreservingTo</ i >< span class = 'anglebracket' > < </ span > Rep< span class = 'anglebracket' > > </ span > Value< 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 > Q< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span > rhs< 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< span class = 'anglebracket' > > </ span > Q, < a class = 'index' id = 'conceptref:ValuePreservingTo___' ></ a >< i > ValuePreservingTo</ i >< span class = 'anglebracket' > < </ span > Rep< span class = 'anglebracket' > > </ span > Value< 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 > Q< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span > rhs< 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< span class = 'anglebracket' > > </ span > Q, < a href = '#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 > dimensionless< span class = 'anglebracket' > > </ span > Q2< 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 > Q< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Q2< span class = 'operator' > & </ span > rhs< 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< span class = 'anglebracket' > > </ span > Q, < a href = '#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 > dimensionless< span class = 'anglebracket' > > </ span > Q2< 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 > Q< span class = 'operator' > & </ span >< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Q2< span class = 'operator' > & </ span > rhs< span class = 'parenthesis' > )</ span > ;
< span class = 'comment' > // < a href = 'qty.arith.ops.html' title = '5.6.11 Arithmetic operations' > [qty.< 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< span class = 'anglebracket' > > </ span > Q, < span class = 'keyword' > auto</ span > R2, < span class = 'keyword' > typename</ span > Rep2< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span > < a class = 'index' id = 'conceptref:CommonlyInvocableQuantities' ></ a >< i > CommonlyInvocableQuantities</ i >< span class = 'anglebracket' > < </ span > std< span class = 'operator' > ::</ span > plus< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , quantity, quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > Q< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< 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< span class = 'anglebracket' > > </ span > Q, < span class = 'keyword' > auto</ span > R2, < span class = 'keyword' > typename</ span > Rep2< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span > < a class = 'index' id = 'conceptref:CommonlyInvocableQuantities_' ></ a >< i > CommonlyInvocableQuantities</ i >< span class = 'anglebracket' > < </ span > std< span class = 'operator' > ::</ span > minus< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , quantity, quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > Q< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< 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< span class = 'anglebracket' > > </ span > Q, < span class = 'keyword' > auto</ span > R2, < span class = 'keyword' > typename</ span > Rep2< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span >< span class = 'operator' > !</ span > treat_as_floating_point< span class = 'anglebracket' > < </ span > Rep< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > < span class = 'parenthesis' > (</ span >< span class = 'operator' > !</ span > treat_as_floating_point< span class = 'anglebracket' > < </ span > Rep2< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:CommonlyInvocableQuantities__' ></ a >< i > CommonlyInvocableQuantities</ i >< span class = 'anglebracket' > < </ span > std< span class = 'operator' > ::</ span > modulus< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , quantity, quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > Q< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< 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< span class = 'anglebracket' > > </ span > Q, < a href = 'qty.rep.concepts.html#concept:Representation' title = '5.5.4 Concepts [qty.rep.concepts]' >< span id = 'conceptref:Representation__' >< span class = 'tcode_in_codeblock' > Representation</ span ></ span ></ a > Value< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span > Q< span class = 'operator' > ::</ span > unit < span class = 'operator' > =</ span >< span class = 'operator' > =</ span > < span class = 'operator' > ::</ span > mp_units< span class = 'operator' > ::</ span > one< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:InvokeResultOf_' ></ a >< i > InvokeResultOf</ i >< span class = 'anglebracket' > < </ span > quantity_spec, std< span class = 'operator' > ::</ span > plus< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , Rep, < span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > Q< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Value< 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< span class = 'anglebracket' > > </ span > Q, < a href = 'qty.rep.concepts.html#concept:Representation' title = '5.5.4 Concepts [qty.rep.concepts]' >< span id = 'conceptref:Representation___' >< span class = 'tcode_in_codeblock' > Representation</ span ></ span ></ a > Value< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span > Q< span class = 'operator' > ::</ span > unit < span class = 'operator' > =</ span >< span class = 'operator' > =</ span > < span class = 'operator' > ::</ span > mp_units< span class = 'operator' > ::</ span > one< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:InvokeResultOf__' ></ a >< i > InvokeResultOf</ i >< span class = 'anglebracket' > < </ span > quantity_spec, std< span class = 'operator' > ::</ span > minus< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , Rep, < span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > Q< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Value< 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< span class = 'anglebracket' > > </ span > Q, < a href = 'qty.rep.concepts.html#concept:Representation' title = '5.5.4 Concepts [qty.rep.concepts]' >< span id = 'conceptref:Representation____' >< span class = 'tcode_in_codeblock' > Representation</ span ></ span ></ a > Value< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span > Q< span class = 'operator' > ::</ span > unit < span class = 'operator' > =</ span >< span class = 'operator' > =</ span > < span class = 'operator' > ::</ span > mp_units< span class = 'operator' > ::</ span > one< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:InvokeResultOf___' ></ a >< i > InvokeResultOf</ i >< span class = 'anglebracket' > < </ span > quantity_spec, std< span class = 'operator' > ::</ span > modulus< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , Rep, < span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > Q< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Value< 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< span class = 'anglebracket' > > </ span > Q, < a href = 'qty.rep.concepts.html#concept:Representation' title = '5.5.4 Concepts [qty.rep.concepts]' >< span id = 'conceptref:Representation_____' >< span class = 'tcode_in_codeblock' > Representation</ span ></ span ></ a > Value< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span > Q< span class = 'operator' > ::</ span > unit < span class = 'operator' > =</ span >< span class = 'operator' > =</ span > < span class = 'operator' > ::</ span > mp_units< span class = 'operator' > ::</ span > one< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:InvokeResultOf____' ></ a >< i > InvokeResultOf</ i >< span class = 'anglebracket' > < </ span > quantity_spec, std< span class = 'operator' > ::</ span > plus< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , Rep, < span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > Value< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Q< 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< span class = 'anglebracket' > > </ span > Q, < a href = 'qty.rep.concepts.html#concept:Representation' title = '5.5.4 Concepts [qty.rep.concepts]' >< span id = 'conceptref:Representation______' >< span class = 'tcode_in_codeblock' > Representation</ span ></ span ></ a > Value< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span > Q< span class = 'operator' > ::</ span > unit < span class = 'operator' > =</ span >< span class = 'operator' > =</ span > < span class = 'operator' > ::</ span > mp_units< span class = 'operator' > ::</ span > one< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:InvokeResultOf_____' ></ a >< i > InvokeResultOf</ i >< span class = 'anglebracket' > < </ span > quantity_spec, std< span class = 'operator' > ::</ span > minus< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , Rep, < span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > Value< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Q< 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< span class = 'anglebracket' > > </ span > Q, < a href = 'qty.rep.concepts.html#concept:Representation' title = '5.5.4 Concepts [qty.rep.concepts]' >< span id = 'conceptref:Representation_______' >< span class = 'tcode_in_codeblock' > Representation</ span ></ span ></ a > Value< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span > Q< span class = 'operator' > ::</ span > unit < span class = 'operator' > =</ span >< span class = 'operator' > =</ span > < span class = 'operator' > ::</ span > mp_units< span class = 'operator' > ::</ span > one< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:InvokeResultOf______' ></ a >< i > InvokeResultOf</ i >< span class = 'anglebracket' > < </ span > quantity_spec, std< span class = 'operator' > ::</ span > modulus< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , Rep, < span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > Value< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Q< 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< span class = 'anglebracket' > > </ span > Q, < span class = 'keyword' > auto</ span > R2, < span class = 'keyword' > typename</ span > Rep2< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span > < a class = 'index' id = 'conceptref:InvocableQuantities_' ></ a >< i > InvocableQuantities</ i >< span class = 'anglebracket' > < </ span > std< span class = 'operator' > ::</ span > multiplies< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , quantity, quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > Q< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< 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< span class = 'anglebracket' > > </ span > Q, < span class = 'keyword' > auto</ span > R2, < span class = 'keyword' > typename</ span > Rep2< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span > < a class = 'index' id = 'conceptref:InvocableQuantities__' ></ a >< i > InvocableQuantities</ i >< span class = 'anglebracket' > < </ span > std< span class = 'operator' > ::</ span > divides< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , quantity, quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > Q< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< 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< span class = 'anglebracket' > > </ span > Q, < span class = 'keyword' > typename</ span > Value< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span >< span class = 'operator' > !</ span >< a href = '#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 = 'anglebracket' > < </ span > Value< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > < span class = 'parenthesis' > (</ span >< span class = 'operator' > !</ 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 = 'anglebracket' > < </ span > Value< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:InvokeResultOf_______' ></ a >< i > InvokeResultOf</ i >< span class = 'anglebracket' > < </ span > quantity_spec, std< span class = 'operator' > ::</ span > multiplies< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , Rep, < span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > < span class = 'keyword' > auto</ span > < span class = 'keyword' > operator</ span >< span class = 'operator' > *</ span >< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > Q< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Value< 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< span class = 'anglebracket' > > </ span > Q, < span class = 'keyword' > typename</ span > Value< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span >< span class = 'operator' > !</ span >< a href = '#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 = 'anglebracket' > < </ span > Value< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > < span class = 'parenthesis' > (</ span >< span class = 'operator' > !</ 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 = 'anglebracket' > < </ span > Value< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:InvokeResultOf________' ></ a >< i > InvokeResultOf</ i >< span class = 'anglebracket' > < </ span > quantity_spec, std< span class = 'operator' > ::</ span > divides< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , Rep, < span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span >< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > < span class = 'keyword' > auto</ span > < span class = 'keyword' > operator</ span >< span class = 'operator' > /</ span >< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > Q< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span > rhs< span class = 'parenthesis' > )</ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > Value, std< span class = 'operator' > ::</ span > derived_from< span class = 'anglebracket' > < </ span > quantity< span class = 'anglebracket' > > </ span > Q< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span >< span class = 'operator' > !</ span >< a href = '#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 = 'anglebracket' > < </ span > Value< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > < span class = 'parenthesis' > (</ span >< span class = 'operator' > !</ 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 = 'anglebracket' > < </ span > Value< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:InvokeResultOf_________' ></ a >< i > InvokeResultOf</ i >< span class = 'anglebracket' > < </ span > quantity_spec, std< span class = 'operator' > ::</ span > multiplies< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , < span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span > , Rep< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > < span class = 'keyword' > auto</ span > < span class = 'keyword' > operator</ span >< span class = 'operator' > *</ span >< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Q< span class = 'operator' > & </ span > rhs< span class = 'parenthesis' > )</ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< span class = 'keyword' > typename</ span > Value, std< span class = 'operator' > ::</ span > derived_from< span class = 'anglebracket' > < </ span > quantity< span class = 'anglebracket' > > </ span > Q< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > requires</ span >< span class = 'parenthesis' > (</ span >< span class = 'operator' > !</ span >< a href = '#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 = 'anglebracket' > < </ span > Value< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span > < span class = 'parenthesis' > (</ span >< span class = 'operator' > !</ 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 = 'anglebracket' > < </ span > Value< span class = 'anglebracket' > > </ span >< span class = 'parenthesis' > )</ span > < span class = 'operator' > & </ span >< span class = 'operator' > & </ span >
< a class = 'index' id = 'conceptref:InvokeResultOf__________' ></ a >< i > InvokeResultOf</ i >< span class = 'anglebracket' > < </ span > quantity_spec, std< span class = 'operator' > ::</ span > divides< span class = 'anglebracket' > < </ span >< span class = 'anglebracket' > > </ span > , < span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span > , Rep< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < a href = '#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 > Value< span class = 'operator' > & </ span > , < span class = 'keyword' > const</ span > Q< span class = 'operator' > & </ span >< span class = 'parenthesis' > )</ span > ;
< span class = 'comment' > // < a href = 'qty.cmp.html' title = '5.6.12 Comparison' > [qty.< 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< span class = 'anglebracket' > > </ span > Q, < 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' > bool</ span > < span class = 'keyword' > operator</ span >< span class = 'operator' > =</ span >< span class = 'operator' > =</ span >< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > Q< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< 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< span class = 'anglebracket' > > </ span > Q, < 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' > 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 > Q< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > quantity< span class = 'anglebracket' > < </ span > R2, Rep2< span class = 'anglebracket' > > </ span >< 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< span class = 'anglebracket' > > </ span > Q, < a href = 'qty.rep.concepts.html#concept:Representation' title = '5.5.4 Concepts [qty.rep.concepts]' >< span id = 'conceptref:Representation________' >< span class = 'tcode_in_codeblock' > Representation</ span ></ span ></ a > Value< 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 > Q< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Value< 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< span class = 'anglebracket' > > </ span > Q, < a href = 'qty.rep.concepts.html#concept:Representation' title = '5.5.4 Concepts [qty.rep.concepts]' >< span id = 'conceptref:Representation_________' >< span class = 'tcode_in_codeblock' > Representation</ span ></ span ></ a > Value< 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 > Q< span class = 'operator' > & </ span > lhs, < span class = 'keyword' > const</ span > Value< span class = 'operator' > & </ span > rhs< span class = 'parenthesis' > )</ span > ;
< span class = 'comment' > // < a href = 'qty.val.cmp.html' title = '5.6.13 Value comparison' > [qty.< span class = 'shy' ></ span > val.< span class = 'shy' ></ span > cmp]</ a > , value comparison</ span >
< span class = 'keyword' > friend</ span > < span class = 'keyword' > constexpr</ span > < span class = 'keyword' > bool</ span > is_eq_zero< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > quantity< 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' > friend</ span > < span class = 'keyword' > constexpr</ span > < span class = 'keyword' > bool</ span > is_neq_zero< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > quantity< 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' > friend</ span > < span class = 'keyword' > constexpr</ span > < span class = 'keyword' > bool</ span > is_lt_zero< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > quantity< 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' > friend</ span > < span class = 'keyword' > constexpr</ span > < span class = 'keyword' > bool</ span > is_gt_zero< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > quantity< 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' > friend</ span > < span class = 'keyword' > constexpr</ span > < span class = 'keyword' > bool</ span > is_lteq_zero< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > quantity< 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' > friend</ span > < span class = 'keyword' > constexpr</ span > < span class = 'keyword' > bool</ span > is_gteq_zero< span class = 'parenthesis' > (</ span >< span class = 'keyword' > const</ span > quantity< span class = 'operator' > & </ span > q< span class = 'parenthesis' > )</ span > < span class = 'keyword' > requires</ span > < i >< span class = 'texttt' > see below</ span ></ i > ;
< span class = 'curlybracket' > }</ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< a href = 'qty.rep.concepts.html#concept:Representation' title = '5.5.4 Concepts [qty.rep.concepts]' >< span id = 'conceptref:Representation__________' >< span class = 'tcode_in_codeblock' > Representation</ span ></ span ></ a > Value, < a href = 'qty.ref.concepts.html#concept:Reference' title = '5.4.5 Concepts [qty.ref.concepts]' >< span id = 'conceptref:Reference________' >< span class = 'tcode_in_codeblock' > Reference</ span ></ span ></ a > R< span class = 'anglebracket' > > </ span >
quantity< span class = 'parenthesis' > (</ span > Value, R< span class = 'parenthesis' > )</ span > < span class = 'operator' > -</ span >< span class = 'anglebracket' > > </ span > quantity< span class = 'anglebracket' > < </ span > R< span class = 'curlybracket' > {</ span >< span class = 'curlybracket' > }</ span > , Value< span class = 'anglebracket' > > </ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< a href = 'qty.rep.concepts.html#concept:Representation' title = '5.5.4 Concepts [qty.rep.concepts]' >< span id = 'conceptref:Representation___________' >< span class = 'tcode_in_codeblock' > Representation</ span ></ span ></ a > Value< span class = 'anglebracket' > > </ span >
quantity< span class = 'parenthesis' > (</ span > Value< span class = 'parenthesis' > )</ span > < span class = 'operator' > -</ span >< span class = 'anglebracket' > > </ span > quantity< span class = 'anglebracket' > < </ span > one, Value< span class = 'anglebracket' > > </ span > ;
< span class = 'keyword' > template</ span >< span class = 'anglebracket' > < </ span >< a href = 'qty.like.html#concept:QuantityLike' title = '5.6.2 Interoperability [qty.like]' >< span id = 'conceptref:QuantityLike__' >< span class = 'tcode_in_codeblock' > QuantityLike</ span ></ span ></ a > Q< span class = 'anglebracket' > > </ span >
< span class = 'keyword' > explicit</ span >< span class = 'parenthesis' > (</ span > quantity_like_traits< span class = 'anglebracket' > < </ span > Q< span class = 'anglebracket' > > </ span >< span class = 'operator' > ::</ span > explicit_import< span class = 'parenthesis' > )</ span > quantity< span class = 'parenthesis' > (</ span > Q< span class = 'parenthesis' > )</ span >
< span class = 'operator' > -</ span >< span class = 'anglebracket' > > </ span > quantity< span class = 'anglebracket' > < </ span > quantity_like_traits< span class = 'anglebracket' > < </ span > Q< span class = 'anglebracket' > > </ span >< span class = 'operator' > ::</ span > reference, < span class = 'keyword' > typename</ span > quantity_like_traits< span class = 'anglebracket' > < </ span > Q< span class = 'anglebracket' > > </ span >< span class = 'operator' > ::</ span > rep< span class = 'anglebracket' > > </ span > ;
< span class = 'curlybracket' > }</ span >
2025-02-11 20:35:14 +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-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L4466' > #</ a ></ div >< div class = 'texpara' >< div id = '1.sentence-1' class = 'sentence' >< span class = 'texttt' > quantity< span class = 'anglebracket' > < </ span > R, Rep< span class = 'anglebracket' > > </ span ></ span > is a structural type (< a href = "https://wg21.link/temp.paramterm.structural.type" > N4971, [temp.param]</ a > )
2024-12-08 08:57:12 +00:00
if < span class = 'texttt' > Rep</ span > is a structural type< a class = 'hidden_link' href = '#1.sentence-1' > .</ a ></ div ></ div ></ div ></ div ></ body ></ html >