Files
mp-units/HEAD/api_reference/gen/qty.fp.traits.html
T

19 lines
6.6 KiB
HTML

<!DOCTYPE html><html lang='en'><head><title>[qty.fp.traits]</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.5</a> Representation <a class='abbr_ref' href='qty.rep.html#qty.fp.traits'>[qty.rep]</a></h2><h3 ><a class='secnum' style='min-width:80pt'>5.5.2</a> Traits <a class='abbr_ref' href='qty.rep.traits.html#qty.fp.traits'>[qty.rep.traits]</a></h3><h4 ><a class='secnum' style='min-width:95pt'>5.5.2.1</a> Floating-point <a class='abbr_ref'>[qty.fp.traits]</a></h4><div class='texpara'><div class='itemdecl' id='itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>struct</span> <span class='texttt'><i >actual-value-type</i></span> <span class='operator'>:</span> <span class='texttt'><i >cond-value-type</i></span><span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span> <span class='curlybracket'>{</span><span class='curlybracket'>}</span>; <span class='comment'>// see <a href="https://wg21.link/readable.traits">N4971, [readable.traits]</a></span>
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>requires</span><span class='parenthesis'>(</span><span class='operator'>!</span>std<span class='operator'>::</span>is_pointer_v<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span> <span class='operator'>!</span>std<span class='operator'>::</span>is_array_v<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='parenthesis'>)</span> <span class='operator'>&amp;</span><span class='operator'>&amp;</span>
<span class='keyword'>requires</span> <span class='curlybracket'>{</span> <span class='keyword'>typename</span> std<span class='operator'>::</span>indirectly_readable_traits<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='operator'>::</span>value_type; <span class='curlybracket'>}</span>
<span class='keyword'>struct</span> <span class='texttt'><i >actual-value-type</i></span><span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span> <span class='operator'>:</span> std<span class='operator'>::</span>indirectly_readable_traits<span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span> <span class='curlybracket'>{</span><span class='curlybracket'>}</span>;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> T<span class='anglebracket'>&gt;</span>
<span class='keyword'>using</span> <span class='texttt'><i >actual-value-type-t</i></span> <span class='operator'>=</span> <span class='texttt'><i >actual-value-type</i></span><span class='anglebracket'>&lt;</span>T<span class='anglebracket'>&gt;</span><span class='operator'>::</span>value_type;
<span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>typename</span> Rep<span class='anglebracket'>&gt;</span>
<span class='keyword'>constexpr</span> <span class='keyword'>bool</span> <span id='lib:treat_as_floating_point'><a class='hidden_link' href='#lib:treat_as_floating_point' title='5.5.2.1&emsp;Floating-point&emsp;[qty.fp.traits]'>treat_as_floating_point</a></span> <span class='operator'>=</span>
std<span class='operator'>::</span>chrono<span class='operator'>::</span>treat_as_floating_point_v<span class='anglebracket'>&lt;</span><span class='texttt'><i >actual-value-type-t</i></span><span class='anglebracket'>&lt;</span>Rep<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>;
</code></div></div><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L3708'>#</a></div><div class='texpara'><div id='1.sentence-1' class='sentence'><span class='texttt'>quantity</span> and <span class='texttt'>quantity_<span class='shy'></span>point</span> use <span class='texttt'>treat_<span class='shy'></span>as_<span class='shy'></span>floating_<span class='shy'></span>point</span>
to help determine whether implicit conversions are allowed among them<a class='hidden_link' href='#1.sentence-1'>.</a></div></div></div></div><div class='para' id='2'><div class='marginalizedparent'><a class='marginalized' href='#2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/mpusz/mp-unitse9c5f7236ebfe1b287a5a4a49aaf57fbefa87233/source/quantities.tex#L3712'>#</a></div><div class='texpara'><div id='2.sentence-1' class='sentence'><i >Remarks</i>: Pursuant to <a href="https://wg21.link/namespace.std">N4971, [namespace.std]</a> (<a href='spec.ext.html' title='4.1&emsp;External'>[spec.<span class='shy'></span>ext]</a>),
users may specialize <span class='texttt'>treat_<span class='shy'></span>as_<span class='shy'></span>floating_<span class='shy'></span>point</span>
for cv-unqualified program-defined types<a class='hidden_link' href='#2.sentence-1'>.</a></div> <div id='2.sentence-2' class='sentence'>Such specializations shall be usable in constant expressions (<a href="https://wg21.link/expr.const">N4971, [expr.const]</a>)
and have type <span class='texttt'><span class='keyword'>const</span> <span class='keyword'>bool</span></span><a class='hidden_link' href='#2.sentence-2'>.</a></div></div></div></div></div></body></html>