mirror of
https://github.com/mpusz/mp-units.git
synced 2025-06-25 01:01:33 +02:00
Deployed f4b167a2
to HEAD with MkDocs 1.6.1 and mike 2.1.3
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -2467,51 +2467,49 @@ performed without sacrificing accuracy. Please see the below example for a quick
|
||||
</span></code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="language-cpp highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/format.h></span>
|
||||
</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/ostream.h></span>
|
||||
</span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/international.h></span>
|
||||
</span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-3-5"><a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-3-6"><a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><format></span>
|
||||
</span><span id="__span-3-7"><a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><iomanip></span>
|
||||
</span><span id="__span-3-8"><a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><iostream></span>
|
||||
</span><span id="__span-3-9"><a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><print></span>
|
||||
<div class="language-cpp highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/international.h></span>
|
||||
</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><format></span>
|
||||
</span><span id="__span-3-5"><a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><iomanip></span>
|
||||
</span><span id="__span-3-6"><a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><iostream></span>
|
||||
</span><span id="__span-3-7"><a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><print></span>
|
||||
</span><span id="__span-3-8"><a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a>
|
||||
</span><span id="__span-3-9"><a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-3-10"><a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a>
|
||||
</span><span id="__span-3-11"><a id="__codelineno-3-11" name="__codelineno-3-11" href="#__codelineno-3-11"></a><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-3-12"><a id="__codelineno-3-12" name="__codelineno-3-12" href="#__codelineno-3-12"></a>
|
||||
</span><span id="__span-3-13"><a id="__codelineno-3-13" name="__codelineno-3-13" href="#__codelineno-3-13"></a><span class="k">constexpr</span><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">d</span><span class="p">,</span>
|
||||
</span><span id="__span-3-14"><a id="__codelineno-3-14" name="__codelineno-3-14" href="#__codelineno-3-14"></a><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">t</span><span class="p">)</span>
|
||||
</span><span id="__span-3-15"><a id="__codelineno-3-15" name="__codelineno-3-15" href="#__codelineno-3-15"></a><span class="p">{</span>
|
||||
</span><span id="__span-3-16"><a id="__codelineno-3-16" name="__codelineno-3-16" href="#__codelineno-3-16"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">t</span><span class="p">;</span>
|
||||
</span><span id="__span-3-17"><a id="__codelineno-3-17" name="__codelineno-3-17" href="#__codelineno-3-17"></a><span class="p">}</span>
|
||||
</span><span id="__span-3-18"><a id="__codelineno-3-18" name="__codelineno-3-18" href="#__codelineno-3-18"></a>
|
||||
</span><span id="__span-3-19"><a id="__codelineno-3-19" name="__codelineno-3-19" href="#__codelineno-3-19"></a><span class="kt">int</span><span class="w"> </span><span class="n">main</span><span class="p">()</span>
|
||||
</span><span id="__span-3-20"><a id="__codelineno-3-20" name="__codelineno-3-20" href="#__codelineno-3-20"></a><span class="p">{</span>
|
||||
</span><span id="__span-3-21"><a id="__codelineno-3-21" name="__codelineno-3-21" href="#__codelineno-3-21"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-3-22"><a id="__codelineno-3-22" name="__codelineno-3-22" href="#__codelineno-3-22"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">international</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-3-23"><a id="__codelineno-3-23" name="__codelineno-3-23" href="#__codelineno-3-23"></a>
|
||||
</span><span id="__span-3-24"><a id="__codelineno-3-24" name="__codelineno-3-24" href="#__codelineno-3-24"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">110</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">km</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">h</span><span class="p">;</span>
|
||||
</span><span id="__span-3-25"><a id="__codelineno-3-25" name="__codelineno-3-25" href="#__codelineno-3-25"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">mph</span><span class="p">;</span>
|
||||
</span><span id="__span-3-26"><a id="__codelineno-3-26" name="__codelineno-3-26" href="#__codelineno-3-26"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="mf">220.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">isq</span><span class="o">::</span><span class="n">distance</span><span class="p">[</span><span class="n">km</span><span class="p">],</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">);</span>
|
||||
</span><span id="__span-3-27"><a id="__codelineno-3-27" name="__codelineno-3-27" href="#__codelineno-3-27"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">isq</span><span class="o">::</span><span class="n">distance</span><span class="p">(</span><span class="mf">140.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">mi</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">);</span>
|
||||
</span><span id="__span-3-28"><a id="__codelineno-3-28" name="__codelineno-3-28" href="#__codelineno-3-28"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v5</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">v3</span><span class="p">.</span><span class="n">in</span><span class="p">(</span><span class="n">m</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">s</span><span class="p">);</span>
|
||||
</span><span id="__span-3-29"><a id="__codelineno-3-29" name="__codelineno-3-29" href="#__codelineno-3-29"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v6</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="n">m</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">s</span><span class="o">></span><span class="p">(</span><span class="n">v4</span><span class="p">);</span>
|
||||
</span><span id="__span-3-30"><a id="__codelineno-3-30" name="__codelineno-3-30" href="#__codelineno-3-30"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v7</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">v6</span><span class="p">);</span>
|
||||
</span><span id="__span-3-31"><a id="__codelineno-3-31" name="__codelineno-3-31" href="#__codelineno-3-31"></a>
|
||||
</span><span id="__span-3-32"><a id="__codelineno-3-32" name="__codelineno-3-32" href="#__codelineno-3-32"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="sc">'\n'</span><span class="p">;</span><span class="w"> </span><span class="c1">// 110 km/h</span>
|
||||
</span><span id="__span-3-33"><a id="__codelineno-3-33" name="__codelineno-3-33" href="#__codelineno-3-33"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">setw</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">setfill</span><span class="p">(</span><span class="sc">'*'</span><span class="p">)</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">v2</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="sc">'\n'</span><span class="p">;</span><span class="w"> </span><span class="c1">// ***70 mi/h</span>
|
||||
</span><span id="__span-3-34"><a id="__codelineno-3-34" name="__codelineno-3-34" href="#__codelineno-3-34"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"{:*^10}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">v3</span><span class="p">);</span><span class="w"> </span><span class="c1">// *110 km/h*</span>
|
||||
</span><span id="__span-3-35"><a id="__codelineno-3-35" name="__codelineno-3-35" href="#__codelineno-3-35"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"{:%N in %U of %D}"</span><span class="p">,</span><span class="w"> </span><span class="n">v4</span><span class="p">);</span><span class="w"> </span><span class="c1">// 70 in mi/h of LT⁻¹</span>
|
||||
</span><span id="__span-3-36"><a id="__codelineno-3-36" name="__codelineno-3-36" href="#__codelineno-3-36"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"{::N[.2f]}"</span><span class="p">,</span><span class="w"> </span><span class="n">v5</span><span class="p">);</span><span class="w"> </span><span class="c1">// 30.56 m/s</span>
|
||||
</span><span id="__span-3-37"><a id="__codelineno-3-37" name="__codelineno-3-37" href="#__codelineno-3-37"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"{::N[.2f]U[dn]}"</span><span class="p">,</span><span class="w"> </span><span class="n">v6</span><span class="p">);</span><span class="w"> </span><span class="c1">// 31.29 m⋅s⁻¹</span>
|
||||
</span><span id="__span-3-38"><a id="__codelineno-3-38" name="__codelineno-3-38" href="#__codelineno-3-38"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"{:%N}"</span><span class="p">,</span><span class="w"> </span><span class="n">v7</span><span class="p">);</span><span class="w"> </span><span class="c1">// 31</span>
|
||||
</span><span id="__span-3-39"><a id="__codelineno-3-39" name="__codelineno-3-39" href="#__codelineno-3-39"></a><span class="p">}</span>
|
||||
</span><span id="__span-3-11"><a id="__codelineno-3-11" name="__codelineno-3-11" href="#__codelineno-3-11"></a><span class="k">constexpr</span><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">d</span><span class="p">,</span>
|
||||
</span><span id="__span-3-12"><a id="__codelineno-3-12" name="__codelineno-3-12" href="#__codelineno-3-12"></a><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">t</span><span class="p">)</span>
|
||||
</span><span id="__span-3-13"><a id="__codelineno-3-13" name="__codelineno-3-13" href="#__codelineno-3-13"></a><span class="p">{</span>
|
||||
</span><span id="__span-3-14"><a id="__codelineno-3-14" name="__codelineno-3-14" href="#__codelineno-3-14"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">t</span><span class="p">;</span>
|
||||
</span><span id="__span-3-15"><a id="__codelineno-3-15" name="__codelineno-3-15" href="#__codelineno-3-15"></a><span class="p">}</span>
|
||||
</span><span id="__span-3-16"><a id="__codelineno-3-16" name="__codelineno-3-16" href="#__codelineno-3-16"></a>
|
||||
</span><span id="__span-3-17"><a id="__codelineno-3-17" name="__codelineno-3-17" href="#__codelineno-3-17"></a><span class="kt">int</span><span class="w"> </span><span class="n">main</span><span class="p">()</span>
|
||||
</span><span id="__span-3-18"><a id="__codelineno-3-18" name="__codelineno-3-18" href="#__codelineno-3-18"></a><span class="p">{</span>
|
||||
</span><span id="__span-3-19"><a id="__codelineno-3-19" name="__codelineno-3-19" href="#__codelineno-3-19"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-3-20"><a id="__codelineno-3-20" name="__codelineno-3-20" href="#__codelineno-3-20"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">international</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-3-21"><a id="__codelineno-3-21" name="__codelineno-3-21" href="#__codelineno-3-21"></a>
|
||||
</span><span id="__span-3-22"><a id="__codelineno-3-22" name="__codelineno-3-22" href="#__codelineno-3-22"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">110</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">km</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">h</span><span class="p">;</span>
|
||||
</span><span id="__span-3-23"><a id="__codelineno-3-23" name="__codelineno-3-23" href="#__codelineno-3-23"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">mph</span><span class="p">;</span>
|
||||
</span><span id="__span-3-24"><a id="__codelineno-3-24" name="__codelineno-3-24" href="#__codelineno-3-24"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="mf">220.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">isq</span><span class="o">::</span><span class="n">distance</span><span class="p">[</span><span class="n">km</span><span class="p">],</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">);</span>
|
||||
</span><span id="__span-3-25"><a id="__codelineno-3-25" name="__codelineno-3-25" href="#__codelineno-3-25"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">isq</span><span class="o">::</span><span class="n">distance</span><span class="p">(</span><span class="mf">140.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">mi</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">);</span>
|
||||
</span><span id="__span-3-26"><a id="__codelineno-3-26" name="__codelineno-3-26" href="#__codelineno-3-26"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v5</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">v3</span><span class="p">.</span><span class="n">in</span><span class="p">(</span><span class="n">m</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">s</span><span class="p">);</span>
|
||||
</span><span id="__span-3-27"><a id="__codelineno-3-27" name="__codelineno-3-27" href="#__codelineno-3-27"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v6</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="n">m</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">s</span><span class="o">></span><span class="p">(</span><span class="n">v4</span><span class="p">);</span>
|
||||
</span><span id="__span-3-28"><a id="__codelineno-3-28" name="__codelineno-3-28" href="#__codelineno-3-28"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v7</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">v6</span><span class="p">);</span>
|
||||
</span><span id="__span-3-29"><a id="__codelineno-3-29" name="__codelineno-3-29" href="#__codelineno-3-29"></a>
|
||||
</span><span id="__span-3-30"><a id="__codelineno-3-30" name="__codelineno-3-30" href="#__codelineno-3-30"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="sc">'\n'</span><span class="p">;</span><span class="w"> </span><span class="c1">// 110 km/h</span>
|
||||
</span><span id="__span-3-31"><a id="__codelineno-3-31" name="__codelineno-3-31" href="#__codelineno-3-31"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">setw</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">setfill</span><span class="p">(</span><span class="sc">'*'</span><span class="p">)</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">v2</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="sc">'\n'</span><span class="p">;</span><span class="w"> </span><span class="c1">// ***70 mi/h</span>
|
||||
</span><span id="__span-3-32"><a id="__codelineno-3-32" name="__codelineno-3-32" href="#__codelineno-3-32"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"{:*^10}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">v3</span><span class="p">);</span><span class="w"> </span><span class="c1">// *110 km/h*</span>
|
||||
</span><span id="__span-3-33"><a id="__codelineno-3-33" name="__codelineno-3-33" href="#__codelineno-3-33"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"{:%N in %U of %D}"</span><span class="p">,</span><span class="w"> </span><span class="n">v4</span><span class="p">);</span><span class="w"> </span><span class="c1">// 70 in mi/h of LT⁻¹</span>
|
||||
</span><span id="__span-3-34"><a id="__codelineno-3-34" name="__codelineno-3-34" href="#__codelineno-3-34"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"{::N[.2f]}"</span><span class="p">,</span><span class="w"> </span><span class="n">v5</span><span class="p">);</span><span class="w"> </span><span class="c1">// 30.56 m/s</span>
|
||||
</span><span id="__span-3-35"><a id="__codelineno-3-35" name="__codelineno-3-35" href="#__codelineno-3-35"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"{::N[.2f]U[dn]}"</span><span class="p">,</span><span class="w"> </span><span class="n">v6</span><span class="p">);</span><span class="w"> </span><span class="c1">// 31.29 m⋅s⁻¹</span>
|
||||
</span><span id="__span-3-36"><a id="__codelineno-3-36" name="__codelineno-3-36" href="#__codelineno-3-36"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"{:%N}"</span><span class="p">,</span><span class="w"> </span><span class="n">v7</span><span class="p">);</span><span class="w"> </span><span class="c1">// 31</span>
|
||||
</span><span id="__span-3-37"><a id="__codelineno-3-37" name="__codelineno-3-37" href="#__codelineno-3-37"></a><span class="p">}</span>
|
||||
</span></code></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="admonition example">
|
||||
<p class="admonition-title"><a href="https://godbolt.org/z/nhqhT8Mzb">Try it on Compiler Explorer</a></p>
|
||||
<p class="admonition-title"><a href="https://godbolt.org/z/fxcjs19ah">Try it on Compiler Explorer</a></p>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
|
@ -2660,22 +2660,21 @@ This introduces an additional type-safety.</p>
|
||||
</span></code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="language-cpp highlight"><pre><span></span><code><span id="__span-16-1"><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/format.h></span>
|
||||
</span><span id="__span-16-2"><a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-16-3"><a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/usc.h></span>
|
||||
</span><span id="__span-16-4"><a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><print></span>
|
||||
</span><span id="__span-16-5"><a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a>
|
||||
</span><span id="__span-16-6"><a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
|
||||
</span><span id="__span-16-7"><a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a><span class="p">{</span>
|
||||
</span><span id="__span-16-8"><a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-16-9"><a id="__codelineno-16-9" name="__codelineno-16-9" href="#__codelineno-16-9"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-16-10"><a id="__codelineno-16-10" name="__codelineno-16-10" href="#__codelineno-16-10"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">usc</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-16-11"><a id="__codelineno-16-11" name="__codelineno-16-11" href="#__codelineno-16-11"></a>
|
||||
</span><span id="__span-16-12"><a id="__codelineno-16-12" name="__codelineno-16-12" href="#__codelineno-16-12"></a><span class="w"> </span><span class="n">quantity_point</span><span class="w"> </span><span class="n">temp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">point</span><span class="o"><</span><span class="n">deg_C</span><span class="o">></span><span class="p">(</span><span class="mf">20.</span><span class="p">);</span>
|
||||
</span><span id="__span-16-13"><a id="__codelineno-16-13" name="__codelineno-16-13" href="#__codelineno-16-13"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"Temperature: {} ({})"</span><span class="p">,</span>
|
||||
</span><span id="__span-16-14"><a id="__codelineno-16-14" name="__codelineno-16-14" href="#__codelineno-16-14"></a><span class="w"> </span><span class="n">temp</span><span class="p">.</span><span class="n">quantity_from_zero</span><span class="p">(),</span>
|
||||
</span><span id="__span-16-15"><a id="__codelineno-16-15" name="__codelineno-16-15" href="#__codelineno-16-15"></a><span class="w"> </span><span class="n">temp</span><span class="p">.</span><span class="n">in</span><span class="p">(</span><span class="n">deg_F</span><span class="p">).</span><span class="n">quantity_from_zero</span><span class="p">());</span>
|
||||
</span><span id="__span-16-16"><a id="__codelineno-16-16" name="__codelineno-16-16" href="#__codelineno-16-16"></a><span class="p">}</span>
|
||||
<div class="language-cpp highlight"><pre><span></span><code><span id="__span-16-1"><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-16-2"><a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/usc.h></span>
|
||||
</span><span id="__span-16-3"><a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><print></span>
|
||||
</span><span id="__span-16-4"><a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a>
|
||||
</span><span id="__span-16-5"><a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
|
||||
</span><span id="__span-16-6"><a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a><span class="p">{</span>
|
||||
</span><span id="__span-16-7"><a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-16-8"><a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-16-9"><a id="__codelineno-16-9" name="__codelineno-16-9" href="#__codelineno-16-9"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">usc</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-16-10"><a id="__codelineno-16-10" name="__codelineno-16-10" href="#__codelineno-16-10"></a>
|
||||
</span><span id="__span-16-11"><a id="__codelineno-16-11" name="__codelineno-16-11" href="#__codelineno-16-11"></a><span class="w"> </span><span class="n">quantity_point</span><span class="w"> </span><span class="n">temp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">point</span><span class="o"><</span><span class="n">deg_C</span><span class="o">></span><span class="p">(</span><span class="mf">20.</span><span class="p">);</span>
|
||||
</span><span id="__span-16-12"><a id="__codelineno-16-12" name="__codelineno-16-12" href="#__codelineno-16-12"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"Temperature: {} ({})"</span><span class="p">,</span>
|
||||
</span><span id="__span-16-13"><a id="__codelineno-16-13" name="__codelineno-16-13" href="#__codelineno-16-13"></a><span class="w"> </span><span class="n">temp</span><span class="p">.</span><span class="n">quantity_from_zero</span><span class="p">(),</span>
|
||||
</span><span id="__span-16-14"><a id="__codelineno-16-14" name="__codelineno-16-14" href="#__codelineno-16-14"></a><span class="w"> </span><span class="n">temp</span><span class="p">.</span><span class="n">in</span><span class="p">(</span><span class="n">deg_F</span><span class="p">).</span><span class="n">quantity_from_zero</span><span class="p">());</span>
|
||||
</span><span id="__span-16-15"><a id="__codelineno-16-15" name="__codelineno-16-15" href="#__codelineno-16-15"></a><span class="p">}</span>
|
||||
</span></code></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -2397,21 +2397,20 @@ for more details.</p>
|
||||
</span></code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="language-cpp highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/format.h></span>
|
||||
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/usc.h></span>
|
||||
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><print></span>
|
||||
</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a>
|
||||
</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a>
|
||||
</span><span id="__span-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">smoot</span><span class="w"> </span><span class="k">final</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">named_unit</span><span class="o"><</span><span class="s">"smoot"</span><span class="p">,</span><span class="w"> </span><span class="n">mag</span><span class="o"><</span><span class="mi">67</span><span class="o">></span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">usc</span><span class="o">::</span><span class="n">inch</span><span class="o">></span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="n">smoot</span><span class="p">;</span>
|
||||
</span><span id="__span-1-9"><a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a>
|
||||
</span><span id="__span-1-10"><a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
|
||||
</span><span id="__span-1-11"><a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a><span class="p">{</span>
|
||||
</span><span id="__span-1-12"><a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">dist</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">364.4</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">smoot</span><span class="p">;</span>
|
||||
</span><span id="__span-1-13"><a id="__codelineno-1-13" name="__codelineno-1-13" href="#__codelineno-1-13"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"Harvard Bridge length = {::N[.1f]} ({::N[.1f]}, {::N[.2f]}) ± 1 εar"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-14"><a id="__codelineno-1-14" name="__codelineno-1-14" href="#__codelineno-1-14"></a><span class="w"> </span><span class="n">dist</span><span class="p">,</span><span class="w"> </span><span class="n">dist</span><span class="p">.</span><span class="n">in</span><span class="p">(</span><span class="n">usc</span><span class="o">::</span><span class="n">foot</span><span class="p">),</span><span class="w"> </span><span class="n">dist</span><span class="p">.</span><span class="n">in</span><span class="p">(</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="p">));</span>
|
||||
</span><span id="__span-1-15"><a id="__codelineno-1-15" name="__codelineno-1-15" href="#__codelineno-1-15"></a><span class="p">}</span>
|
||||
<div class="language-cpp highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/usc.h></span>
|
||||
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><print></span>
|
||||
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a>
|
||||
</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a>
|
||||
</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">smoot</span><span class="w"> </span><span class="k">final</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">named_unit</span><span class="o"><</span><span class="s">"smoot"</span><span class="p">,</span><span class="w"> </span><span class="n">mag</span><span class="o"><</span><span class="mi">67</span><span class="o">></span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">usc</span><span class="o">::</span><span class="n">inch</span><span class="o">></span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="n">smoot</span><span class="p">;</span>
|
||||
</span><span id="__span-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a>
|
||||
</span><span id="__span-1-9"><a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
|
||||
</span><span id="__span-1-10"><a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a><span class="p">{</span>
|
||||
</span><span id="__span-1-11"><a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">dist</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">364.4</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">smoot</span><span class="p">;</span>
|
||||
</span><span id="__span-1-12"><a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"Harvard Bridge length = {::N[.1f]} ({::N[.1f]}, {::N[.2f]}) ± 1 εar"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-13"><a id="__codelineno-1-13" name="__codelineno-1-13" href="#__codelineno-1-13"></a><span class="w"> </span><span class="n">dist</span><span class="p">,</span><span class="w"> </span><span class="n">dist</span><span class="p">.</span><span class="n">in</span><span class="p">(</span><span class="n">usc</span><span class="o">::</span><span class="n">foot</span><span class="p">),</span><span class="w"> </span><span class="n">dist</span><span class="p">.</span><span class="n">in</span><span class="p">(</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="p">));</span>
|
||||
</span><span id="__span-1-14"><a id="__codelineno-1-14" name="__codelineno-1-14" href="#__codelineno-1-14"></a><span class="p">}</span>
|
||||
</span></code></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
@ -2420,7 +2419,7 @@ for more details.</p>
|
||||
<div class="language-text highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>Harvard Bridge length = 364.4 smoot (2034.6 ft, 620.14 m) ± 1 εar
|
||||
</span></code></pre></div>
|
||||
<div class="admonition example">
|
||||
<p class="admonition-title"><a href="https://godbolt.org/z/f8f4KnKh8">Try it on Compiler Explorer</a></p>
|
||||
<p class="admonition-title"><a href="https://godbolt.org/z/xexMjMsxn">Try it on Compiler Explorer</a></p>
|
||||
</div>
|
||||
<details class="question">
|
||||
<summary>What is <code>smoot</code>?</summary>
|
||||
|
File diff suppressed because one or more lines are too long
142
HEAD/sitemap.xml
142
HEAD/sitemap.xml
@ -2,286 +2,286 @@
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/api_reference/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/release_notes/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/appendix/glossary/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/appendix/references/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2023/09/24/whats-new-in-mp-units-20/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2023/12/09/mp-units-210-released/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2024/06/14/mp-units-220-released/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2024/09/27/mp-units-230-released/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2024/11/05/mp-units-240-released/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2025/01/15/bringing-quantity-safety-to-the-next-level/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2025/06/16/introducing-absolute-quantities/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2024/10/07/international-system-of-quantities-isq-part-1---introduction/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2024/10/14/international-system-of-quantities-isq-part-2---problems-when-isq-is-not-used/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2024/10/21/international-system-of-quantities-isq-part-3---modeling-isq/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2024/10/28/international-system-of-quantities-isq-part-4---implementing-isq/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2024/11/04/international-system-of-quantities-isq-part-5---benefits/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2024/11/11/international-system-of-quantities-isq-part-6---challenges/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2023/11/12/report-from-the-kona-2023-iso-c-committee-meeting/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2024/07/02/report-from-the-st-louis-2024-iso-c-committee-meeting/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2024/04/15/report-from-the-tokyo-2024-iso-c-committee-meeting/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/2024/11/25/report-from-the-wroc%C5%82aw-2024-iso-c-committee-meeting/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/getting_started/contributing/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/getting_started/cpp_compiler_support/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/getting_started/faq/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/getting_started/installation_and_usage/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/getting_started/introduction/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/getting_started/look_and_feel/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/getting_started/project_structure/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/getting_started/quick_start/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/terms_and_definitions/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/examples/avg_speed/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/examples/hello_units/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/examples/hw_voltage/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/examples/si_constants/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/examples/tags_index/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/character_of_a_quantity/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/concepts/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/design_overview/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/dimensionless_quantities/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/faster_than_lightspeed_constants/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/generic_interfaces/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/interface_introduction/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/obtaining_metadata/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/quantity_arithmetics/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/simple_and_typed_quantities/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/systems_of_quantities/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/systems_of_units/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/text_output/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/the_affine_space/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/framework_basics/value_conversions/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/systems/introduction/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/systems/isq/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/systems/natural_units/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/systems/si/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/systems/strong_angular_system/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/use_cases/extending_the_library/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/use_cases/interoperability_with_other_libraries/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/use_cases/pure_dimensional_analysis/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/use_cases/using_custom_representation_types/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/use_cases/wide_compatibility/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/users_guide/use_cases/working_with_legacy_interfaces/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/archive/2025/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/archive/2024/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/archive/2023/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/category/metrology/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/category/wg21-updates/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/category/releases/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/page/2/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://mpusz.github.io/mp-units/HEAD/blog/archive/2024/page/2/</loc>
|
||||
<lastmod>2025-06-19</lastmod>
|
||||
<lastmod>2025-06-20</lastmod>
|
||||
</url>
|
||||
</urlset>
|
Binary file not shown.
@ -2410,8 +2410,7 @@ the identifiers from the <code>mp_units</code> namespace:</p>
|
||||
<span class="normal"><a href="#__codelineno-0-15">15</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-16">16</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-17">17</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-18">18</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-19">19</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="cp">#ifdef MP_UNITS_IMPORT_STD</span>
|
||||
<span class="normal"><a href="#__codelineno-0-18">18</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="cp">#ifdef MP_UNITS_IMPORT_STD</span>
|
||||
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a><span class="k">import</span><span class="w"> </span><span class="n">std</span><span class="p">;</span>
|
||||
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a><span class="cp">#else</span>
|
||||
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><exception></span>
|
||||
@ -2420,21 +2419,21 @@ the identifiers from the <code>mp_units</code> namespace:</p>
|
||||
</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7"></a><span class="cp">#ifdef MP_UNITS_MODULES</span>
|
||||
</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8"></a><span class="k">import</span><span class="w"> </span><span class="n">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="cp">#else</span>
|
||||
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/ostream.h></span>
|
||||
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/cgs.h></span>
|
||||
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/international.h></span>
|
||||
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="cp">#endif</span>
|
||||
</span><span id="__span-0-16"><a id="__codelineno-0-16" name="__codelineno-0-16"></a>
|
||||
</span><span id="__span-0-17"><a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="k">namespace</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-0-18"><a id="__codelineno-0-18" name="__codelineno-0-18"></a>
|
||||
</span><span id="__span-0-19"><a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/cgs.h></span>
|
||||
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/international.h></span>
|
||||
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="cp">#endif</span>
|
||||
</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15"></a>
|
||||
</span><span id="__span-0-16"><a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="k">namespace</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-0-17"><a id="__codelineno-0-17" name="__codelineno-0-17"></a>
|
||||
</span><span id="__span-0-18"><a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>Next, we define two functions calculating average speed based on quantities of fixed units
|
||||
and integral and floating-point representation types, respectively, and a third function
|
||||
that we introduced in the <a href="../hello_units/">previous example</a>:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">avg_speed.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-20">20</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">avg_speed.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-19">19</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-20">20</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-21">21</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-22">22</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-23">23</a></span>
|
||||
@ -2447,41 +2446,41 @@ that we introduced in the <a href="../hello_units/">previous example</a>:</p>
|
||||
<span class="normal"><a href="#__codelineno-1-30">30</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-31">31</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-32">32</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-33">33</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-34">34</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-20"><a id="__codelineno-1-20" name="__codelineno-1-20"></a><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">fixed_int_si_avg_speed</span><span class="p">(</span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">d</span><span class="p">,</span>
|
||||
</span><span id="__span-1-21"><a id="__codelineno-1-21" name="__codelineno-1-21"></a><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">t</span><span class="p">)</span>
|
||||
</span><span id="__span-1-22"><a id="__codelineno-1-22" name="__codelineno-1-22"></a><span class="p">{</span>
|
||||
</span><span id="__span-1-23"><a id="__codelineno-1-23" name="__codelineno-1-23"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">t</span><span class="p">;</span>
|
||||
</span><span id="__span-1-24"><a id="__codelineno-1-24" name="__codelineno-1-24"></a><span class="p">}</span>
|
||||
</span><span id="__span-1-25"><a id="__codelineno-1-25" name="__codelineno-1-25"></a>
|
||||
</span><span id="__span-1-26"><a id="__codelineno-1-26" name="__codelineno-1-26"></a><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="o">></span><span class="w"> </span><span class="n">fixed_double_si_avg_speed</span><span class="p">(</span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="o">></span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="o">></span><span class="w"> </span><span class="n">t</span><span class="p">)</span>
|
||||
</span><span id="__span-1-27"><a id="__codelineno-1-27" name="__codelineno-1-27"></a><span class="p">{</span>
|
||||
</span><span id="__span-1-28"><a id="__codelineno-1-28" name="__codelineno-1-28"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">t</span><span class="p">;</span>
|
||||
</span><span id="__span-1-29"><a id="__codelineno-1-29" name="__codelineno-1-29"></a><span class="p">}</span>
|
||||
</span><span id="__span-1-30"><a id="__codelineno-1-30" name="__codelineno-1-30"></a>
|
||||
</span><span id="__span-1-31"><a id="__codelineno-1-31" name="__codelineno-1-31"></a><span class="k">constexpr</span><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">t</span><span class="p">)</span>
|
||||
</span><span id="__span-1-32"><a id="__codelineno-1-32" name="__codelineno-1-32"></a><span class="p">{</span>
|
||||
</span><span id="__span-1-33"><a id="__codelineno-1-33" name="__codelineno-1-33"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">t</span><span class="p">;</span>
|
||||
</span><span id="__span-1-34"><a id="__codelineno-1-34" name="__codelineno-1-34"></a><span class="p">}</span>
|
||||
<span class="normal"><a href="#__codelineno-1-33">33</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-19"><a id="__codelineno-1-19" name="__codelineno-1-19"></a><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">fixed_int_si_avg_speed</span><span class="p">(</span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">d</span><span class="p">,</span>
|
||||
</span><span id="__span-1-20"><a id="__codelineno-1-20" name="__codelineno-1-20"></a><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">t</span><span class="p">)</span>
|
||||
</span><span id="__span-1-21"><a id="__codelineno-1-21" name="__codelineno-1-21"></a><span class="p">{</span>
|
||||
</span><span id="__span-1-22"><a id="__codelineno-1-22" name="__codelineno-1-22"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">t</span><span class="p">;</span>
|
||||
</span><span id="__span-1-23"><a id="__codelineno-1-23" name="__codelineno-1-23"></a><span class="p">}</span>
|
||||
</span><span id="__span-1-24"><a id="__codelineno-1-24" name="__codelineno-1-24"></a>
|
||||
</span><span id="__span-1-25"><a id="__codelineno-1-25" name="__codelineno-1-25"></a><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="o">></span><span class="w"> </span><span class="n">fixed_double_si_avg_speed</span><span class="p">(</span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="o">></span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="o">></span><span class="w"> </span><span class="n">t</span><span class="p">)</span>
|
||||
</span><span id="__span-1-26"><a id="__codelineno-1-26" name="__codelineno-1-26"></a><span class="p">{</span>
|
||||
</span><span id="__span-1-27"><a id="__codelineno-1-27" name="__codelineno-1-27"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">t</span><span class="p">;</span>
|
||||
</span><span id="__span-1-28"><a id="__codelineno-1-28" name="__codelineno-1-28"></a><span class="p">}</span>
|
||||
</span><span id="__span-1-29"><a id="__codelineno-1-29" name="__codelineno-1-29"></a>
|
||||
</span><span id="__span-1-30"><a id="__codelineno-1-30" name="__codelineno-1-30"></a><span class="k">constexpr</span><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">t</span><span class="p">)</span>
|
||||
</span><span id="__span-1-31"><a id="__codelineno-1-31" name="__codelineno-1-31"></a><span class="p">{</span>
|
||||
</span><span id="__span-1-32"><a id="__codelineno-1-32" name="__codelineno-1-32"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">t</span><span class="p">;</span>
|
||||
</span><span id="__span-1-33"><a id="__codelineno-1-33" name="__codelineno-1-33"></a><span class="p">}</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>We also added a simple utility to print our results:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">avg_speed.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-35">35</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">avg_speed.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-34">34</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-35">35</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-36">36</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-37">37</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-38">38</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-39">39</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-40">40</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-41">41</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-35"><a id="__codelineno-2-35" name="__codelineno-2-35"></a><span class="k">template</span><span class="o"><</span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">></span><span class="w"> </span><span class="n">D</span><span class="p">,</span><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">></span><span class="w"> </span><span class="n">T</span><span class="p">,</span><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">></span><span class="w"> </span><span class="n">V</span><span class="o">></span>
|
||||
</span><span id="__span-2-36"><a id="__codelineno-2-36" name="__codelineno-2-36"></a><span class="kt">void</span><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">D</span><span class="w"> </span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">T</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">V</span><span class="w"> </span><span class="n">speed</span><span class="p">)</span>
|
||||
</span><span id="__span-2-37"><a id="__codelineno-2-37" name="__codelineno-2-37"></a><span class="p">{</span>
|
||||
</span><span id="__span-2-38"><a id="__codelineno-2-38" name="__codelineno-2-38"></a><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">result_in_kmph</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">speed</span><span class="p">.</span><span class="n">force_in</span><span class="p">(</span><span class="n">si</span><span class="o">::</span><span class="n">kilo</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="o">></span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">non_si</span><span class="o">::</span><span class="n">hour</span><span class="p">);</span>
|
||||
</span><span id="__span-2-39"><a id="__codelineno-2-39" name="__codelineno-2-39"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"Average speed of a car that makes "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" in "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" is "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">result_in_kmph</span>
|
||||
</span><span id="__span-2-40"><a id="__codelineno-2-40" name="__codelineno-2-40"></a><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">".</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-2-41"><a id="__codelineno-2-41" name="__codelineno-2-41"></a><span class="p">}</span>
|
||||
<span class="normal"><a href="#__codelineno-2-40">40</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-34"><a id="__codelineno-2-34" name="__codelineno-2-34"></a><span class="k">template</span><span class="o"><</span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">></span><span class="w"> </span><span class="n">D</span><span class="p">,</span><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">></span><span class="w"> </span><span class="n">T</span><span class="p">,</span><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">></span><span class="w"> </span><span class="n">V</span><span class="o">></span>
|
||||
</span><span id="__span-2-35"><a id="__codelineno-2-35" name="__codelineno-2-35"></a><span class="kt">void</span><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">D</span><span class="w"> </span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">T</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">V</span><span class="w"> </span><span class="n">speed</span><span class="p">)</span>
|
||||
</span><span id="__span-2-36"><a id="__codelineno-2-36" name="__codelineno-2-36"></a><span class="p">{</span>
|
||||
</span><span id="__span-2-37"><a id="__codelineno-2-37" name="__codelineno-2-37"></a><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">result_in_kmph</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">speed</span><span class="p">.</span><span class="n">force_in</span><span class="p">(</span><span class="n">si</span><span class="o">::</span><span class="n">kilo</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="o">></span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">non_si</span><span class="o">::</span><span class="n">hour</span><span class="p">);</span>
|
||||
</span><span id="__span-2-38"><a id="__codelineno-2-38" name="__codelineno-2-38"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"Average speed of a car that makes "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" in "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" is "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">result_in_kmph</span>
|
||||
</span><span id="__span-2-39"><a id="__codelineno-2-39" name="__codelineno-2-39"></a><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">".</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-2-40"><a id="__codelineno-2-40" name="__codelineno-2-40"></a><span class="p">}</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>Now, let's analyze how those three utility functions behave with different sets of arguments.
|
||||
First, we are going to use quantities of SI units and integral representation:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">avg_speed.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-42">42</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">avg_speed.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-41">41</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-42">42</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-43">43</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-44">44</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-45">45</a></span>
|
||||
@ -2494,22 +2493,21 @@ First, we are going to use quantities of SI units and integral representation:</
|
||||
<span class="normal"><a href="#__codelineno-3-52">52</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-53">53</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-54">54</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-55">55</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-56">56</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-42"><a id="__codelineno-3-42" name="__codelineno-3-42"></a><span class="kt">void</span><span class="w"> </span><span class="nf">example</span><span class="p">()</span>
|
||||
</span><span id="__span-3-43"><a id="__codelineno-3-43" name="__codelineno-3-43"></a><span class="p">{</span>
|
||||
</span><span id="__span-3-44"><a id="__codelineno-3-44" name="__codelineno-3-44"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-3-45"><a id="__codelineno-3-45" name="__codelineno-3-45"></a>
|
||||
</span><span id="__span-3-46"><a id="__codelineno-3-46" name="__codelineno-3-46"></a><span class="w"> </span><span class="c1">// SI (int)</span>
|
||||
</span><span id="__span-3-47"><a id="__codelineno-3-47" name="__codelineno-3-47"></a><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-3-48"><a id="__codelineno-3-48" name="__codelineno-3-48"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">220</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">km</span><span class="p">;</span>
|
||||
</span><span id="__span-3-49"><a id="__codelineno-3-49" name="__codelineno-3-49"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">;</span>
|
||||
</span><span id="__span-3-50"><a id="__codelineno-3-50" name="__codelineno-3-50"></a>
|
||||
</span><span id="__span-3-51"><a id="__codelineno-3-51" name="__codelineno-3-51"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"SI units with 'int' as representation</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-3-52"><a id="__codelineno-3-52" name="__codelineno-3-52"></a>
|
||||
</span><span id="__span-3-53"><a id="__codelineno-3-53" name="__codelineno-3-53"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_int_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-3-54"><a id="__codelineno-3-54" name="__codelineno-3-54"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_double_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-3-55"><a id="__codelineno-3-55" name="__codelineno-3-55"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-3-56"><a id="__codelineno-3-56" name="__codelineno-3-56"></a><span class="w"> </span><span class="p">}</span>
|
||||
<span class="normal"><a href="#__codelineno-3-55">55</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-41"><a id="__codelineno-3-41" name="__codelineno-3-41"></a><span class="kt">void</span><span class="w"> </span><span class="nf">example</span><span class="p">()</span>
|
||||
</span><span id="__span-3-42"><a id="__codelineno-3-42" name="__codelineno-3-42"></a><span class="p">{</span>
|
||||
</span><span id="__span-3-43"><a id="__codelineno-3-43" name="__codelineno-3-43"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-3-44"><a id="__codelineno-3-44" name="__codelineno-3-44"></a>
|
||||
</span><span id="__span-3-45"><a id="__codelineno-3-45" name="__codelineno-3-45"></a><span class="w"> </span><span class="c1">// SI (int)</span>
|
||||
</span><span id="__span-3-46"><a id="__codelineno-3-46" name="__codelineno-3-46"></a><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-3-47"><a id="__codelineno-3-47" name="__codelineno-3-47"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">220</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">km</span><span class="p">;</span>
|
||||
</span><span id="__span-3-48"><a id="__codelineno-3-48" name="__codelineno-3-48"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">;</span>
|
||||
</span><span id="__span-3-49"><a id="__codelineno-3-49" name="__codelineno-3-49"></a>
|
||||
</span><span id="__span-3-50"><a id="__codelineno-3-50" name="__codelineno-3-50"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"SI units with 'int' as representation</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-3-51"><a id="__codelineno-3-51" name="__codelineno-3-51"></a>
|
||||
</span><span id="__span-3-52"><a id="__codelineno-3-52" name="__codelineno-3-52"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_int_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-3-53"><a id="__codelineno-3-53" name="__codelineno-3-53"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_double_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-3-54"><a id="__codelineno-3-54" name="__codelineno-3-54"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-3-55"><a id="__codelineno-3-55" name="__codelineno-3-55"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>The above provides the following output:</p>
|
||||
<div class="language-text highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>SI units with 'int' as representation
|
||||
@ -2525,7 +2523,8 @@ Such truncation can be easily observed in the first case where we deal with inte
|
||||
representation types (the resulting speed is <code>108 km/h</code>).</p>
|
||||
<p>The second scenario is really similar to the previous one, but this time, function arguments
|
||||
have floating-point representation types:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">avg_speed.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-57">57</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">avg_speed.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-56">56</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-57">57</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-58">58</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-59">59</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-60">60</a></span>
|
||||
@ -2535,19 +2534,18 @@ have floating-point representation types:</p>
|
||||
<span class="normal"><a href="#__codelineno-5-64">64</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-65">65</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-66">66</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-67">67</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-68">68</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-5-57"><a id="__codelineno-5-57" name="__codelineno-5-57"></a><span class="w"> </span><span class="c1">// SI (double)</span>
|
||||
</span><span id="__span-5-58"><a id="__codelineno-5-58" name="__codelineno-5-58"></a><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-5-59"><a id="__codelineno-5-59" name="__codelineno-5-59"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">220.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">km</span><span class="p">;</span>
|
||||
</span><span id="__span-5-60"><a id="__codelineno-5-60" name="__codelineno-5-60"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">;</span>
|
||||
</span><span id="__span-5-61"><a id="__codelineno-5-61" name="__codelineno-5-61"></a>
|
||||
</span><span id="__span-5-62"><a id="__codelineno-5-62" name="__codelineno-5-62"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">SI units with 'double' as representation</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-5-63"><a id="__codelineno-5-63" name="__codelineno-5-63"></a>
|
||||
</span><span id="__span-5-64"><a id="__codelineno-5-64" name="__codelineno-5-64"></a><span class="w"> </span><span class="c1">// conversion from a floating-point to an integral type is a truncating one so an explicit cast is needed</span>
|
||||
</span><span id="__span-5-65"><a id="__codelineno-5-65" name="__codelineno-5-65"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_int_si_avg_speed</span><span class="p">(</span><span class="n">value_cast</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">distance</span><span class="p">),</span><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">duration</span><span class="p">)));</span>
|
||||
</span><span id="__span-5-66"><a id="__codelineno-5-66" name="__codelineno-5-66"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_double_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-5-67"><a id="__codelineno-5-67" name="__codelineno-5-67"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-5-68"><a id="__codelineno-5-68" name="__codelineno-5-68"></a><span class="w"> </span><span class="p">}</span>
|
||||
<span class="normal"><a href="#__codelineno-5-67">67</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-5-56"><a id="__codelineno-5-56" name="__codelineno-5-56"></a><span class="w"> </span><span class="c1">// SI (double)</span>
|
||||
</span><span id="__span-5-57"><a id="__codelineno-5-57" name="__codelineno-5-57"></a><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-5-58"><a id="__codelineno-5-58" name="__codelineno-5-58"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">220.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">km</span><span class="p">;</span>
|
||||
</span><span id="__span-5-59"><a id="__codelineno-5-59" name="__codelineno-5-59"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">;</span>
|
||||
</span><span id="__span-5-60"><a id="__codelineno-5-60" name="__codelineno-5-60"></a>
|
||||
</span><span id="__span-5-61"><a id="__codelineno-5-61" name="__codelineno-5-61"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">SI units with 'double' as representation</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-5-62"><a id="__codelineno-5-62" name="__codelineno-5-62"></a>
|
||||
</span><span id="__span-5-63"><a id="__codelineno-5-63" name="__codelineno-5-63"></a><span class="w"> </span><span class="c1">// conversion from a floating-point to an integral type is a truncating one so an explicit cast is needed</span>
|
||||
</span><span id="__span-5-64"><a id="__codelineno-5-64" name="__codelineno-5-64"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_int_si_avg_speed</span><span class="p">(</span><span class="n">value_cast</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">distance</span><span class="p">),</span><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">duration</span><span class="p">)));</span>
|
||||
</span><span id="__span-5-65"><a id="__codelineno-5-65" name="__codelineno-5-65"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_double_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-5-66"><a id="__codelineno-5-66" name="__codelineno-5-66"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-5-67"><a id="__codelineno-5-67" name="__codelineno-5-67"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>Conversion from floating-point to integral representation types is
|
||||
<a href="../../framework_basics/value_conversions/#value-truncating-conversions">considered value-truncating</a>
|
||||
@ -2561,69 +2559,69 @@ in the first cast:</p>
|
||||
</span></code></pre></div>
|
||||
<p>Next, let's do the same for integral and floating-point representations, but this time
|
||||
using international mile:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">avg_speed.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-7-69"> 69</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-70"> 70</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-71"> 71</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-72"> 72</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-73"> 73</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-74"> 74</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-75"> 75</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-76"> 76</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-77"> 77</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-78"> 78</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-79"> 79</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-80"> 80</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-81"> 81</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-82"> 82</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-83"> 83</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-84"> 84</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-85"> 85</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-86"> 86</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-87"> 87</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-88"> 88</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-89"> 89</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-90"> 90</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-91"> 91</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-92"> 92</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-93"> 93</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-94"> 94</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-95"> 95</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-96"> 96</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-97"> 97</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-98"> 98</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-99"> 99</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-100">100</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-7-69"><a id="__codelineno-7-69" name="__codelineno-7-69"></a><span class="w"> </span><span class="c1">// International mile (int)</span>
|
||||
</span><span id="__span-7-70"><a id="__codelineno-7-70" name="__codelineno-7-70"></a><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-7-71"><a id="__codelineno-7-71" name="__codelineno-7-71"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">international</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-7-72"><a id="__codelineno-7-72" name="__codelineno-7-72"></a>
|
||||
</span><span id="__span-7-73"><a id="__codelineno-7-73" name="__codelineno-7-73"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">140</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">mi</span><span class="p">;</span>
|
||||
</span><span id="__span-7-74"><a id="__codelineno-7-74" name="__codelineno-7-74"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">;</span>
|
||||
</span><span id="__span-7-75"><a id="__codelineno-7-75" name="__codelineno-7-75"></a>
|
||||
</span><span id="__span-7-76"><a id="__codelineno-7-76" name="__codelineno-7-76"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">International mile with 'int' as representation</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-7-77"><a id="__codelineno-7-77" name="__codelineno-7-77"></a>
|
||||
</span><span id="__span-7-78"><a id="__codelineno-7-78" name="__codelineno-7-78"></a><span class="w"> </span><span class="c1">// it is not possible to make a lossless conversion of miles to meters on an integral type</span>
|
||||
</span><span id="__span-7-79"><a id="__codelineno-7-79" name="__codelineno-7-79"></a><span class="w"> </span><span class="c1">// (explicit cast needed)</span>
|
||||
</span><span id="__span-7-80"><a id="__codelineno-7-80" name="__codelineno-7-80"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_int_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">.</span><span class="n">force_in</span><span class="p">(</span><span class="n">m</span><span class="p">),</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-7-81"><a id="__codelineno-7-81" name="__codelineno-7-81"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_double_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-7-82"><a id="__codelineno-7-82" name="__codelineno-7-82"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-7-83"><a id="__codelineno-7-83" name="__codelineno-7-83"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span><span id="__span-7-84"><a id="__codelineno-7-84" name="__codelineno-7-84"></a>
|
||||
</span><span id="__span-7-85"><a id="__codelineno-7-85" name="__codelineno-7-85"></a><span class="w"> </span><span class="c1">// International mile (double)</span>
|
||||
</span><span id="__span-7-86"><a id="__codelineno-7-86" name="__codelineno-7-86"></a><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-7-87"><a id="__codelineno-7-87" name="__codelineno-7-87"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">international</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-7-88"><a id="__codelineno-7-88" name="__codelineno-7-88"></a>
|
||||
</span><span id="__span-7-89"><a id="__codelineno-7-89" name="__codelineno-7-89"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">140.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">mi</span><span class="p">;</span>
|
||||
</span><span id="__span-7-90"><a id="__codelineno-7-90" name="__codelineno-7-90"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">;</span>
|
||||
</span><span id="__span-7-91"><a id="__codelineno-7-91" name="__codelineno-7-91"></a>
|
||||
</span><span id="__span-7-92"><a id="__codelineno-7-92" name="__codelineno-7-92"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">International mile with 'double' as representation</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-7-93"><a id="__codelineno-7-93" name="__codelineno-7-93"></a>
|
||||
</span><span id="__span-7-94"><a id="__codelineno-7-94" name="__codelineno-7-94"></a><span class="w"> </span><span class="c1">// conversion from a floating-point to an integral type is a truncating one so an explicit cast is needed</span>
|
||||
</span><span id="__span-7-95"><a id="__codelineno-7-95" name="__codelineno-7-95"></a><span class="w"> </span><span class="c1">// also it is not possible to make a lossless conversion of miles to meters on an integral type</span>
|
||||
</span><span id="__span-7-96"><a id="__codelineno-7-96" name="__codelineno-7-96"></a><span class="w"> </span><span class="c1">// (explicit cast needed)</span>
|
||||
</span><span id="__span-7-97"><a id="__codelineno-7-97" name="__codelineno-7-97"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_int_si_avg_speed</span><span class="p">(</span><span class="n">value_cast</span><span class="o"><</span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">distance</span><span class="p">),</span><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">duration</span><span class="p">)));</span>
|
||||
</span><span id="__span-7-98"><a id="__codelineno-7-98" name="__codelineno-7-98"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_double_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-7-99"><a id="__codelineno-7-99" name="__codelineno-7-99"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-7-100"><a id="__codelineno-7-100" name="__codelineno-7-100"></a><span class="w"> </span><span class="p">}</span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">avg_speed.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-7-68">68</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-69">69</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-70">70</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-71">71</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-72">72</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-73">73</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-74">74</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-75">75</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-76">76</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-77">77</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-78">78</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-79">79</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-80">80</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-81">81</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-82">82</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-83">83</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-84">84</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-85">85</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-86">86</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-87">87</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-88">88</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-89">89</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-90">90</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-91">91</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-92">92</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-93">93</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-94">94</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-95">95</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-96">96</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-97">97</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-98">98</a></span>
|
||||
<span class="normal"><a href="#__codelineno-7-99">99</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-7-68"><a id="__codelineno-7-68" name="__codelineno-7-68"></a><span class="w"> </span><span class="c1">// International mile (int)</span>
|
||||
</span><span id="__span-7-69"><a id="__codelineno-7-69" name="__codelineno-7-69"></a><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-7-70"><a id="__codelineno-7-70" name="__codelineno-7-70"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">international</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-7-71"><a id="__codelineno-7-71" name="__codelineno-7-71"></a>
|
||||
</span><span id="__span-7-72"><a id="__codelineno-7-72" name="__codelineno-7-72"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">140</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">mi</span><span class="p">;</span>
|
||||
</span><span id="__span-7-73"><a id="__codelineno-7-73" name="__codelineno-7-73"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">;</span>
|
||||
</span><span id="__span-7-74"><a id="__codelineno-7-74" name="__codelineno-7-74"></a>
|
||||
</span><span id="__span-7-75"><a id="__codelineno-7-75" name="__codelineno-7-75"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">International mile with 'int' as representation</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-7-76"><a id="__codelineno-7-76" name="__codelineno-7-76"></a>
|
||||
</span><span id="__span-7-77"><a id="__codelineno-7-77" name="__codelineno-7-77"></a><span class="w"> </span><span class="c1">// it is not possible to make a lossless conversion of miles to meters on an integral type</span>
|
||||
</span><span id="__span-7-78"><a id="__codelineno-7-78" name="__codelineno-7-78"></a><span class="w"> </span><span class="c1">// (explicit cast needed)</span>
|
||||
</span><span id="__span-7-79"><a id="__codelineno-7-79" name="__codelineno-7-79"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_int_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">.</span><span class="n">force_in</span><span class="p">(</span><span class="n">m</span><span class="p">),</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-7-80"><a id="__codelineno-7-80" name="__codelineno-7-80"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_double_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-7-81"><a id="__codelineno-7-81" name="__codelineno-7-81"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-7-82"><a id="__codelineno-7-82" name="__codelineno-7-82"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span><span id="__span-7-83"><a id="__codelineno-7-83" name="__codelineno-7-83"></a>
|
||||
</span><span id="__span-7-84"><a id="__codelineno-7-84" name="__codelineno-7-84"></a><span class="w"> </span><span class="c1">// International mile (double)</span>
|
||||
</span><span id="__span-7-85"><a id="__codelineno-7-85" name="__codelineno-7-85"></a><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-7-86"><a id="__codelineno-7-86" name="__codelineno-7-86"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">international</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-7-87"><a id="__codelineno-7-87" name="__codelineno-7-87"></a>
|
||||
</span><span id="__span-7-88"><a id="__codelineno-7-88" name="__codelineno-7-88"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">140.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">mi</span><span class="p">;</span>
|
||||
</span><span id="__span-7-89"><a id="__codelineno-7-89" name="__codelineno-7-89"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">;</span>
|
||||
</span><span id="__span-7-90"><a id="__codelineno-7-90" name="__codelineno-7-90"></a>
|
||||
</span><span id="__span-7-91"><a id="__codelineno-7-91" name="__codelineno-7-91"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">International mile with 'double' as representation</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-7-92"><a id="__codelineno-7-92" name="__codelineno-7-92"></a>
|
||||
</span><span id="__span-7-93"><a id="__codelineno-7-93" name="__codelineno-7-93"></a><span class="w"> </span><span class="c1">// conversion from a floating-point to an integral type is a truncating one so an explicit cast is needed</span>
|
||||
</span><span id="__span-7-94"><a id="__codelineno-7-94" name="__codelineno-7-94"></a><span class="w"> </span><span class="c1">// also it is not possible to make a lossless conversion of miles to meters on an integral type</span>
|
||||
</span><span id="__span-7-95"><a id="__codelineno-7-95" name="__codelineno-7-95"></a><span class="w"> </span><span class="c1">// (explicit cast needed)</span>
|
||||
</span><span id="__span-7-96"><a id="__codelineno-7-96" name="__codelineno-7-96"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_int_si_avg_speed</span><span class="p">(</span><span class="n">value_cast</span><span class="o"><</span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">distance</span><span class="p">),</span><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">duration</span><span class="p">)));</span>
|
||||
</span><span id="__span-7-97"><a id="__codelineno-7-97" name="__codelineno-7-97"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_double_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-7-98"><a id="__codelineno-7-98" name="__codelineno-7-98"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-7-99"><a id="__codelineno-7-99" name="__codelineno-7-99"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>One important difference here is the fact that as it is not possible to make a lossless conversion
|
||||
of miles to meters on a quantity using an integral representation type, so this time, we need a
|
||||
@ -2641,7 +2639,8 @@ of miles to meters on a quantity using an integral representation type, so this
|
||||
</span></code></pre></div>
|
||||
<p>Please note how the first and third results get truncated using integral representation types.</p>
|
||||
<p>In the end, we repeat the scenario for CGS units:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">avg_speed.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-101">101</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">avg_speed.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-100">100</a></span>
|
||||
<span class="normal"><a href="#__codelineno-9-101">101</a></span>
|
||||
<span class="normal"><a href="#__codelineno-9-102">102</a></span>
|
||||
<span class="normal"><a href="#__codelineno-9-103">103</a></span>
|
||||
<span class="normal"><a href="#__codelineno-9-104">104</a></span>
|
||||
@ -2671,39 +2670,38 @@ of miles to meters on a quantity using an integral representation type, so this
|
||||
<span class="normal"><a href="#__codelineno-9-128">128</a></span>
|
||||
<span class="normal"><a href="#__codelineno-9-129">129</a></span>
|
||||
<span class="normal"><a href="#__codelineno-9-130">130</a></span>
|
||||
<span class="normal"><a href="#__codelineno-9-131">131</a></span>
|
||||
<span class="normal"><a href="#__codelineno-9-132">132</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-9-101"><a id="__codelineno-9-101" name="__codelineno-9-101"></a><span class="w"> </span><span class="c1">// CGS (int)</span>
|
||||
</span><span id="__span-9-102"><a id="__codelineno-9-102" name="__codelineno-9-102"></a><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-9-103"><a id="__codelineno-9-103" name="__codelineno-9-103"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">22'000'000</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">cgs</span><span class="o">::</span><span class="n">centimetre</span><span class="p">;</span>
|
||||
</span><span id="__span-9-104"><a id="__codelineno-9-104" name="__codelineno-9-104"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">7200</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">cgs</span><span class="o">::</span><span class="n">second</span><span class="p">;</span>
|
||||
</span><span id="__span-9-105"><a id="__codelineno-9-105" name="__codelineno-9-105"></a>
|
||||
</span><span id="__span-9-106"><a id="__codelineno-9-106" name="__codelineno-9-106"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">CGS units with 'int' as representation</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-9-107"><a id="__codelineno-9-107" name="__codelineno-9-107"></a>
|
||||
</span><span id="__span-9-108"><a id="__codelineno-9-108" name="__codelineno-9-108"></a><span class="w"> </span><span class="c1">// it is not possible to make a lossless conversion of centimeters to meters on an integral type</span>
|
||||
</span><span id="__span-9-109"><a id="__codelineno-9-109" name="__codelineno-9-109"></a><span class="w"> </span><span class="c1">// (explicit cast needed)</span>
|
||||
</span><span id="__span-9-110"><a id="__codelineno-9-110" name="__codelineno-9-110"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_int_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">.</span><span class="n">force_in</span><span class="p">(</span><span class="n">m</span><span class="p">),</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-9-111"><a id="__codelineno-9-111" name="__codelineno-9-111"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_double_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-9-112"><a id="__codelineno-9-112" name="__codelineno-9-112"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-9-113"><a id="__codelineno-9-113" name="__codelineno-9-113"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span><span id="__span-9-114"><a id="__codelineno-9-114" name="__codelineno-9-114"></a>
|
||||
</span><span id="__span-9-115"><a id="__codelineno-9-115" name="__codelineno-9-115"></a><span class="w"> </span><span class="c1">// CGS (double)</span>
|
||||
</span><span id="__span-9-116"><a id="__codelineno-9-116" name="__codelineno-9-116"></a><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-9-117"><a id="__codelineno-9-117" name="__codelineno-9-117"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">22'000'000.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">cgs</span><span class="o">::</span><span class="n">centimetre</span><span class="p">;</span>
|
||||
</span><span id="__span-9-118"><a id="__codelineno-9-118" name="__codelineno-9-118"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">7200.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">cgs</span><span class="o">::</span><span class="n">second</span><span class="p">;</span>
|
||||
</span><span id="__span-9-119"><a id="__codelineno-9-119" name="__codelineno-9-119"></a>
|
||||
</span><span id="__span-9-120"><a id="__codelineno-9-120" name="__codelineno-9-120"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">CGS units with 'double' as representation</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-9-121"><a id="__codelineno-9-121" name="__codelineno-9-121"></a>
|
||||
</span><span id="__span-9-122"><a id="__codelineno-9-122" name="__codelineno-9-122"></a><span class="w"> </span><span class="c1">// conversion from a floating-point to an integral type is a truncating one so an explicit cast is needed</span>
|
||||
</span><span id="__span-9-123"><a id="__codelineno-9-123" name="__codelineno-9-123"></a><span class="w"> </span><span class="c1">// it is not possible to make a lossless conversion of centimeters to meters on an integral type</span>
|
||||
</span><span id="__span-9-124"><a id="__codelineno-9-124" name="__codelineno-9-124"></a><span class="w"> </span><span class="c1">// (explicit cast needed)</span>
|
||||
</span><span id="__span-9-125"><a id="__codelineno-9-125" name="__codelineno-9-125"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_int_si_avg_speed</span><span class="p">(</span><span class="n">value_cast</span><span class="o"><</span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">distance</span><span class="p">),</span><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">duration</span><span class="p">)));</span>
|
||||
</span><span id="__span-9-126"><a id="__codelineno-9-126" name="__codelineno-9-126"></a>
|
||||
</span><span id="__span-9-127"><a id="__codelineno-9-127" name="__codelineno-9-127"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_double_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-9-128"><a id="__codelineno-9-128" name="__codelineno-9-128"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-9-129"><a id="__codelineno-9-129" name="__codelineno-9-129"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span><span id="__span-9-130"><a id="__codelineno-9-130" name="__codelineno-9-130"></a><span class="p">}</span>
|
||||
</span><span id="__span-9-131"><a id="__codelineno-9-131" name="__codelineno-9-131"></a>
|
||||
</span><span id="__span-9-132"><a id="__codelineno-9-132" name="__codelineno-9-132"></a><span class="p">}</span><span class="w"> </span><span class="c1">// namespace</span>
|
||||
<span class="normal"><a href="#__codelineno-9-131">131</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-9-100"><a id="__codelineno-9-100" name="__codelineno-9-100"></a><span class="w"> </span><span class="c1">// CGS (int)</span>
|
||||
</span><span id="__span-9-101"><a id="__codelineno-9-101" name="__codelineno-9-101"></a><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-9-102"><a id="__codelineno-9-102" name="__codelineno-9-102"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">22'000'000</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">cgs</span><span class="o">::</span><span class="n">centimetre</span><span class="p">;</span>
|
||||
</span><span id="__span-9-103"><a id="__codelineno-9-103" name="__codelineno-9-103"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">7200</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">cgs</span><span class="o">::</span><span class="n">second</span><span class="p">;</span>
|
||||
</span><span id="__span-9-104"><a id="__codelineno-9-104" name="__codelineno-9-104"></a>
|
||||
</span><span id="__span-9-105"><a id="__codelineno-9-105" name="__codelineno-9-105"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">CGS units with 'int' as representation</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-9-106"><a id="__codelineno-9-106" name="__codelineno-9-106"></a>
|
||||
</span><span id="__span-9-107"><a id="__codelineno-9-107" name="__codelineno-9-107"></a><span class="w"> </span><span class="c1">// it is not possible to make a lossless conversion of centimeters to meters on an integral type</span>
|
||||
</span><span id="__span-9-108"><a id="__codelineno-9-108" name="__codelineno-9-108"></a><span class="w"> </span><span class="c1">// (explicit cast needed)</span>
|
||||
</span><span id="__span-9-109"><a id="__codelineno-9-109" name="__codelineno-9-109"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_int_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">.</span><span class="n">force_in</span><span class="p">(</span><span class="n">m</span><span class="p">),</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-9-110"><a id="__codelineno-9-110" name="__codelineno-9-110"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_double_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-9-111"><a id="__codelineno-9-111" name="__codelineno-9-111"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-9-112"><a id="__codelineno-9-112" name="__codelineno-9-112"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span><span id="__span-9-113"><a id="__codelineno-9-113" name="__codelineno-9-113"></a>
|
||||
</span><span id="__span-9-114"><a id="__codelineno-9-114" name="__codelineno-9-114"></a><span class="w"> </span><span class="c1">// CGS (double)</span>
|
||||
</span><span id="__span-9-115"><a id="__codelineno-9-115" name="__codelineno-9-115"></a><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-9-116"><a id="__codelineno-9-116" name="__codelineno-9-116"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">22'000'000.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">cgs</span><span class="o">::</span><span class="n">centimetre</span><span class="p">;</span>
|
||||
</span><span id="__span-9-117"><a id="__codelineno-9-117" name="__codelineno-9-117"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">7200.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">cgs</span><span class="o">::</span><span class="n">second</span><span class="p">;</span>
|
||||
</span><span id="__span-9-118"><a id="__codelineno-9-118" name="__codelineno-9-118"></a>
|
||||
</span><span id="__span-9-119"><a id="__codelineno-9-119" name="__codelineno-9-119"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">CGS units with 'double' as representation</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-9-120"><a id="__codelineno-9-120" name="__codelineno-9-120"></a>
|
||||
</span><span id="__span-9-121"><a id="__codelineno-9-121" name="__codelineno-9-121"></a><span class="w"> </span><span class="c1">// conversion from a floating-point to an integral type is a truncating one so an explicit cast is needed</span>
|
||||
</span><span id="__span-9-122"><a id="__codelineno-9-122" name="__codelineno-9-122"></a><span class="w"> </span><span class="c1">// it is not possible to make a lossless conversion of centimeters to meters on an integral type</span>
|
||||
</span><span id="__span-9-123"><a id="__codelineno-9-123" name="__codelineno-9-123"></a><span class="w"> </span><span class="c1">// (explicit cast needed)</span>
|
||||
</span><span id="__span-9-124"><a id="__codelineno-9-124" name="__codelineno-9-124"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_int_si_avg_speed</span><span class="p">(</span><span class="n">value_cast</span><span class="o"><</span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">distance</span><span class="p">),</span><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">duration</span><span class="p">)));</span>
|
||||
</span><span id="__span-9-125"><a id="__codelineno-9-125" name="__codelineno-9-125"></a>
|
||||
</span><span id="__span-9-126"><a id="__codelineno-9-126" name="__codelineno-9-126"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">fixed_double_si_avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-9-127"><a id="__codelineno-9-127" name="__codelineno-9-127"></a><span class="w"> </span><span class="n">print_result</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">));</span>
|
||||
</span><span id="__span-9-128"><a id="__codelineno-9-128" name="__codelineno-9-128"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span><span id="__span-9-129"><a id="__codelineno-9-129" name="__codelineno-9-129"></a><span class="p">}</span>
|
||||
</span><span id="__span-9-130"><a id="__codelineno-9-130" name="__codelineno-9-130"></a>
|
||||
</span><span id="__span-9-131"><a id="__codelineno-9-131" name="__codelineno-9-131"></a><span class="p">}</span><span class="w"> </span><span class="c1">// namespace</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>Again, we observe <code>value_cast</code> being used in the same places and consistent truncation errors
|
||||
in the text output:</p>
|
||||
@ -2718,7 +2716,8 @@ in the text output:</p>
|
||||
</span><span id="__span-10-9"><a id="__codelineno-10-9" name="__codelineno-10-9" href="#__codelineno-10-9"></a>Average speed of a car that makes 2.2e+07 cm in 7200 s is 110 km/h.
|
||||
</span></code></pre></div>
|
||||
<p>The example file ends with a simple <code>main()</code> function:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">avg_speed.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-11-133">133</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">avg_speed.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-11-132">132</a></span>
|
||||
<span class="normal"><a href="#__codelineno-11-133">133</a></span>
|
||||
<span class="normal"><a href="#__codelineno-11-134">134</a></span>
|
||||
<span class="normal"><a href="#__codelineno-11-135">135</a></span>
|
||||
<span class="normal"><a href="#__codelineno-11-136">136</a></span>
|
||||
@ -2726,17 +2725,16 @@ in the text output:</p>
|
||||
<span class="normal"><a href="#__codelineno-11-138">138</a></span>
|
||||
<span class="normal"><a href="#__codelineno-11-139">139</a></span>
|
||||
<span class="normal"><a href="#__codelineno-11-140">140</a></span>
|
||||
<span class="normal"><a href="#__codelineno-11-141">141</a></span>
|
||||
<span class="normal"><a href="#__codelineno-11-142">142</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-11-133"><a id="__codelineno-11-133" name="__codelineno-11-133"></a><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
|
||||
</span><span id="__span-11-134"><a id="__codelineno-11-134" name="__codelineno-11-134"></a><span class="p">{</span>
|
||||
</span><span id="__span-11-135"><a id="__codelineno-11-135" name="__codelineno-11-135"></a><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-11-136"><a id="__codelineno-11-136" name="__codelineno-11-136"></a><span class="w"> </span><span class="n">example</span><span class="p">();</span>
|
||||
</span><span id="__span-11-137"><a id="__codelineno-11-137" name="__codelineno-11-137"></a><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&</span><span class="w"> </span><span class="n">ex</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-11-138"><a id="__codelineno-11-138" name="__codelineno-11-138"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cerr</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"Unhandled std exception caught: "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">ex</span><span class="p">.</span><span class="n">what</span><span class="p">()</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="sc">'\n'</span><span class="p">;</span>
|
||||
</span><span id="__span-11-139"><a id="__codelineno-11-139" name="__codelineno-11-139"></a><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(...)</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-11-140"><a id="__codelineno-11-140" name="__codelineno-11-140"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cerr</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"Unhandled unknown exception caught</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-11-141"><a id="__codelineno-11-141" name="__codelineno-11-141"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span><span id="__span-11-142"><a id="__codelineno-11-142" name="__codelineno-11-142"></a><span class="p">}</span>
|
||||
<span class="normal"><a href="#__codelineno-11-141">141</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-11-132"><a id="__codelineno-11-132" name="__codelineno-11-132"></a><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
|
||||
</span><span id="__span-11-133"><a id="__codelineno-11-133" name="__codelineno-11-133"></a><span class="p">{</span>
|
||||
</span><span id="__span-11-134"><a id="__codelineno-11-134" name="__codelineno-11-134"></a><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-11-135"><a id="__codelineno-11-135" name="__codelineno-11-135"></a><span class="w"> </span><span class="n">example</span><span class="p">();</span>
|
||||
</span><span id="__span-11-136"><a id="__codelineno-11-136" name="__codelineno-11-136"></a><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&</span><span class="w"> </span><span class="n">ex</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-11-137"><a id="__codelineno-11-137" name="__codelineno-11-137"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cerr</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"Unhandled std exception caught: "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">ex</span><span class="p">.</span><span class="n">what</span><span class="p">()</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="sc">'\n'</span><span class="p">;</span>
|
||||
</span><span id="__span-11-138"><a id="__codelineno-11-138" name="__codelineno-11-138"></a><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(...)</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-11-139"><a id="__codelineno-11-139" name="__codelineno-11-139"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cerr</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"Unhandled unknown exception caught</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-11-140"><a id="__codelineno-11-140" name="__codelineno-11-140"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span><span id="__span-11-141"><a id="__codelineno-11-141" name="__codelineno-11-141"></a><span class="p">}</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
|
||||
|
||||
|
@ -2409,9 +2409,7 @@ You're not viewing the latest version.
|
||||
<span class="normal"><a href="#__codelineno-0-12">12</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-13">13</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-14">14</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-15">15</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-16">16</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-17">17</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/compat_macros.h></span>
|
||||
<span class="normal"><a href="#__codelineno-0-15">15</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/compat_macros.h></span>
|
||||
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/ext/format.h></span>
|
||||
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a><span class="cp">#ifdef MP_UNITS_IMPORT_STD</span>
|
||||
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a><span class="k">import</span><span class="w"> </span><span class="n">std</span><span class="p">;</span>
|
||||
@ -2422,25 +2420,23 @@ You're not viewing the latest version.
|
||||
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="cp">#ifdef MP_UNITS_MODULES</span>
|
||||
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="k">import</span><span class="w"> </span><span class="n">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="cp">#else</span>
|
||||
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/format.h></span>
|
||||
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/ostream.h></span>
|
||||
</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/international.h></span>
|
||||
</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-0-16"><a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-0-17"><a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="cp">#endif</span>
|
||||
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/international.h></span>
|
||||
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="cp">#endif</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>Also, to shorten the definitions, we "import" all the symbols from the <code>mp_units</code> namespace.</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hello_units.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-18">18</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-18"><a id="__codelineno-1-18" name="__codelineno-1-18"></a><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hello_units.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-16">16</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-16"><a id="__codelineno-1-16" name="__codelineno-1-16"></a><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>Next, we define a simple function that calculates the average speed based on the provided
|
||||
arguments of length and time:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hello_units.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-19">19</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-20">20</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-21">21</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-22">22</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-19"><a id="__codelineno-2-19" name="__codelineno-2-19"></a><span class="k">constexpr</span><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">t</span><span class="p">)</span>
|
||||
</span><span id="__span-2-20"><a id="__codelineno-2-20" name="__codelineno-2-20"></a><span class="p">{</span>
|
||||
</span><span id="__span-2-21"><a id="__codelineno-2-21" name="__codelineno-2-21"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">t</span><span class="p">;</span>
|
||||
</span><span id="__span-2-22"><a id="__codelineno-2-22" name="__codelineno-2-22"></a><span class="p">}</span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hello_units.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-17">17</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-18">18</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-19">19</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-20">20</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-17"><a id="__codelineno-2-17" name="__codelineno-2-17"></a><span class="k">constexpr</span><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="n">QuantityOf</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">></span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">t</span><span class="p">)</span>
|
||||
</span><span id="__span-2-18"><a id="__codelineno-2-18" name="__codelineno-2-18"></a><span class="p">{</span>
|
||||
</span><span id="__span-2-19"><a id="__codelineno-2-19" name="__codelineno-2-19"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">t</span><span class="p">;</span>
|
||||
</span><span id="__span-2-20"><a id="__codelineno-2-20" name="__codelineno-2-20"></a><span class="p">}</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>The above function template takes any quantities implicitly convertible to <code>isq::length</code>
|
||||
and <code>isq::time</code>, respectively. Those quantities can use any compatible unit and a
|
||||
@ -2452,30 +2448,30 @@ that its quantity type is implicitly convertible to <code>isq::speed</code>.</p>
|
||||
type is beneficial for users of such a function as it provides more information
|
||||
of what to expect from a function than just using <code>auto</code>.</p>
|
||||
</div>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hello_units.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-23">23</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-24">24</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-25">25</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-26">26</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-23"><a id="__codelineno-3-23" name="__codelineno-3-23"></a><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
|
||||
</span><span id="__span-3-24"><a id="__codelineno-3-24" name="__codelineno-3-24"></a><span class="p">{</span>
|
||||
</span><span id="__span-3-25"><a id="__codelineno-3-25" name="__codelineno-3-25"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-3-26"><a id="__codelineno-3-26" name="__codelineno-3-26"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">international</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hello_units.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-21">21</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-22">22</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-23">23</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-24">24</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-21"><a id="__codelineno-3-21" name="__codelineno-3-21"></a><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
|
||||
</span><span id="__span-3-22"><a id="__codelineno-3-22" name="__codelineno-3-22"></a><span class="p">{</span>
|
||||
</span><span id="__span-3-23"><a id="__codelineno-3-23" name="__codelineno-3-23"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-3-24"><a id="__codelineno-3-24" name="__codelineno-3-24"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">international</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>The above lines explicitly opt into using unit symbols from two systems of units.
|
||||
As this introduces a lot of short identifiers into the current scope, it is not done
|
||||
implicitly while including a header file.</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hello_units.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-27">27</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hello_units.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-25">25</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-26">26</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-27">27</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-28">28</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-29">29</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-30">30</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-31">31</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-32">32</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-33">33</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-4-27"><a id="__codelineno-4-27" name="__codelineno-4-27"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">110</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">km</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">h</span><span class="p">;</span>
|
||||
</span><span id="__span-4-28"><a id="__codelineno-4-28" name="__codelineno-4-28"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">mph</span><span class="p">;</span>
|
||||
</span><span id="__span-4-29"><a id="__codelineno-4-29" name="__codelineno-4-29"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="mf">220.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">km</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">);</span>
|
||||
</span><span id="__span-4-30"><a id="__codelineno-4-30" name="__codelineno-4-30"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">isq</span><span class="o">::</span><span class="n">distance</span><span class="p">(</span><span class="mf">140.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">mi</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">isq</span><span class="o">::</span><span class="n">duration</span><span class="p">[</span><span class="n">h</span><span class="p">]);</span>
|
||||
</span><span id="__span-4-31"><a id="__codelineno-4-31" name="__codelineno-4-31"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v5</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">v3</span><span class="p">.</span><span class="n">in</span><span class="p">(</span><span class="n">m</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">s</span><span class="p">);</span>
|
||||
</span><span id="__span-4-32"><a id="__codelineno-4-32" name="__codelineno-4-32"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v6</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="n">m</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">s</span><span class="o">></span><span class="p">(</span><span class="n">v4</span><span class="p">);</span>
|
||||
</span><span id="__span-4-33"><a id="__codelineno-4-33" name="__codelineno-4-33"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v7</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">v6</span><span class="p">);</span>
|
||||
<span class="normal"><a href="#__codelineno-4-31">31</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-4-25"><a id="__codelineno-4-25" name="__codelineno-4-25"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">110</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">km</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">h</span><span class="p">;</span>
|
||||
</span><span id="__span-4-26"><a id="__codelineno-4-26" name="__codelineno-4-26"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">70</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">mph</span><span class="p">;</span>
|
||||
</span><span id="__span-4-27"><a id="__codelineno-4-27" name="__codelineno-4-27"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="mf">220.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">km</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">);</span>
|
||||
</span><span id="__span-4-28"><a id="__codelineno-4-28" name="__codelineno-4-28"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">isq</span><span class="o">::</span><span class="n">distance</span><span class="p">(</span><span class="mf">140.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">mi</span><span class="p">),</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">isq</span><span class="o">::</span><span class="n">duration</span><span class="p">[</span><span class="n">h</span><span class="p">]);</span>
|
||||
</span><span id="__span-4-29"><a id="__codelineno-4-29" name="__codelineno-4-29"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v5</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">v3</span><span class="p">.</span><span class="n">in</span><span class="p">(</span><span class="n">m</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">s</span><span class="p">);</span>
|
||||
</span><span id="__span-4-30"><a id="__codelineno-4-30" name="__codelineno-4-30"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v6</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="n">m</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">s</span><span class="o">></span><span class="p">(</span><span class="n">v4</span><span class="p">);</span>
|
||||
</span><span id="__span-4-31"><a id="__codelineno-4-31" name="__codelineno-4-31"></a><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">v7</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">v6</span><span class="p">);</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<ul>
|
||||
<li>Lines <code>27</code> & <code>28</code> create a quantity of kind <code>isq::length / isq::time</code> with the numbers
|
||||
@ -2495,21 +2491,21 @@ implicitly while including a header file.</p>
|
||||
<li>Line <code>33</code> does a <a href="../../framework_basics/value_conversions/#value-truncating-conversions">value-truncating conversion</a>
|
||||
of changing the underlying representation type from <code>double</code> to <code>int</code>.</li>
|
||||
</ul>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hello_units.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-34">34</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hello_units.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-32">32</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-33">33</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-34">34</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-35">35</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-36">36</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-37">37</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-38">38</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-39">39</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-40">40</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-41">41</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-5-34"><a id="__codelineno-5-34" name="__codelineno-5-34"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="sc">'\n'</span><span class="p">;</span><span class="w"> </span><span class="c1">// 110 km/h</span>
|
||||
</span><span id="__span-5-35"><a id="__codelineno-5-35" name="__codelineno-5-35"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">setw</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">setfill</span><span class="p">(</span><span class="sc">'*'</span><span class="p">)</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">v2</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="sc">'\n'</span><span class="p">;</span><span class="w"> </span><span class="c1">// ***70 mi/h</span>
|
||||
</span><span id="__span-5-36"><a id="__codelineno-5-36" name="__codelineno-5-36"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"{:*^10}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">v3</span><span class="p">);</span><span class="w"> </span><span class="c1">// *110 km/h*</span>
|
||||
</span><span id="__span-5-37"><a id="__codelineno-5-37" name="__codelineno-5-37"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"{:%N in %U of %D}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">v4</span><span class="p">);</span><span class="w"> </span><span class="c1">// 70 in mi/h of LT⁻¹</span>
|
||||
</span><span id="__span-5-38"><a id="__codelineno-5-38" name="__codelineno-5-38"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"{::N[.2f]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">v5</span><span class="p">);</span><span class="w"> </span><span class="c1">// 30.56 m/s</span>
|
||||
</span><span id="__span-5-39"><a id="__codelineno-5-39" name="__codelineno-5-39"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"{::N[.2f]U[dn]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">v6</span><span class="p">);</span><span class="w"> </span><span class="c1">// 31.29 m⋅s⁻¹</span>
|
||||
</span><span id="__span-5-40"><a id="__codelineno-5-40" name="__codelineno-5-40"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"{:%N}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">v7</span><span class="p">);</span><span class="w"> </span><span class="c1">// 31</span>
|
||||
</span><span id="__span-5-41"><a id="__codelineno-5-41" name="__codelineno-5-41"></a><span class="p">}</span>
|
||||
<span class="normal"><a href="#__codelineno-5-39">39</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-5-32"><a id="__codelineno-5-32" name="__codelineno-5-32"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="sc">'\n'</span><span class="p">;</span><span class="w"> </span><span class="c1">// 110 km/h</span>
|
||||
</span><span id="__span-5-33"><a id="__codelineno-5-33" name="__codelineno-5-33"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">setw</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">setfill</span><span class="p">(</span><span class="sc">'*'</span><span class="p">)</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">v2</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="sc">'\n'</span><span class="p">;</span><span class="w"> </span><span class="c1">// ***70 mi/h</span>
|
||||
</span><span id="__span-5-34"><a id="__codelineno-5-34" name="__codelineno-5-34"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"{:*^10}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">v3</span><span class="p">);</span><span class="w"> </span><span class="c1">// *110 km/h*</span>
|
||||
</span><span id="__span-5-35"><a id="__codelineno-5-35" name="__codelineno-5-35"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"{:%N in %U of %D}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">v4</span><span class="p">);</span><span class="w"> </span><span class="c1">// 70 in mi/h of LT⁻¹</span>
|
||||
</span><span id="__span-5-36"><a id="__codelineno-5-36" name="__codelineno-5-36"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"{::N[.2f]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">v5</span><span class="p">);</span><span class="w"> </span><span class="c1">// 30.56 m/s</span>
|
||||
</span><span id="__span-5-37"><a id="__codelineno-5-37" name="__codelineno-5-37"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"{::N[.2f]U[dn]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">v6</span><span class="p">);</span><span class="w"> </span><span class="c1">// 31.29 m⋅s⁻¹</span>
|
||||
</span><span id="__span-5-38"><a id="__codelineno-5-38" name="__codelineno-5-38"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"{:%N}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">v7</span><span class="p">);</span><span class="w"> </span><span class="c1">// 31</span>
|
||||
</span><span id="__span-5-39"><a id="__codelineno-5-39" name="__codelineno-5-39"></a><span class="p">}</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>The above presents <a href="../../framework_basics/text_output/">various ways to print a quantity</a>.
|
||||
Both stream insertion operations and <code>std::format</code> facilities are supported.</p>
|
||||
|
@ -2416,8 +2416,7 @@ of an offset.</p>
|
||||
<span class="normal"><a href="#__codelineno-0-13">13</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-14">14</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-15">15</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-16">16</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-17">17</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/compat_macros.h></span>
|
||||
<span class="normal"><a href="#__codelineno-0-16">16</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/compat_macros.h></span>
|
||||
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/ext/format.h></span>
|
||||
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a><span class="cp">#ifdef MP_UNITS_IMPORT_STD</span>
|
||||
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a><span class="k">import</span><span class="w"> </span><span class="n">std</span><span class="p">;</span>
|
||||
@ -2428,87 +2427,87 @@ of an offset.</p>
|
||||
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="cp">#ifdef MP_UNITS_MODULES</span>
|
||||
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="k">import</span><span class="w"> </span><span class="n">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="cp">#else</span>
|
||||
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/format.h></span>
|
||||
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="cp">#endif</span>
|
||||
</span><span id="__span-0-16"><a id="__codelineno-0-16" name="__codelineno-0-16"></a>
|
||||
</span><span id="__span-0-17"><a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="cp">#endif</span>
|
||||
</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15"></a>
|
||||
</span><span id="__span-0-16"><a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>Next, we specify the real measurement voltage range to be in the range of [-10, 10]:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hw_voltage.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-18">18</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hw_voltage.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-17">17</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-18">18</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-19">19</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-20">20</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-21">21</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-18"><a id="__codelineno-1-18" name="__codelineno-1-18"></a><span class="c1">// real voltage range</span>
|
||||
</span><span id="__span-1-19"><a id="__codelineno-1-19" name="__codelineno-1-19"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">min_voltage</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-10</span><span class="p">;</span>
|
||||
</span><span id="__span-1-20"><a id="__codelineno-1-20" name="__codelineno-1-20"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">max_voltage</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span>
|
||||
</span><span id="__span-1-21"><a id="__codelineno-1-21" name="__codelineno-1-21"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">voltage_range</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">max_voltage</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">min_voltage</span><span class="p">;</span>
|
||||
<span class="normal"><a href="#__codelineno-1-20">20</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-17"><a id="__codelineno-1-17" name="__codelineno-1-17"></a><span class="c1">// real voltage range</span>
|
||||
</span><span id="__span-1-18"><a id="__codelineno-1-18" name="__codelineno-1-18"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">min_voltage</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-10</span><span class="p">;</span>
|
||||
</span><span id="__span-1-19"><a id="__codelineno-1-19" name="__codelineno-1-19"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">max_voltage</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span>
|
||||
</span><span id="__span-1-20"><a id="__codelineno-1-20" name="__codelineno-1-20"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">voltage_range</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">max_voltage</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">min_voltage</span><span class="p">;</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>and provide a storage type and special values for the hardware representation:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hw_voltage.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-22">22</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hw_voltage.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-21">21</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-22">22</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-23">23</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-24">24</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-25">25</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-26">26</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-27">27</a></span>
|
||||
<span class="normal"><a href="#__codelineno-2-28">28</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-22"><a id="__codelineno-2-22" name="__codelineno-2-22"></a><span class="c1">// hardware encoding of voltage</span>
|
||||
</span><span id="__span-2-23"><a id="__codelineno-2-23" name="__codelineno-2-23"></a><span class="k">using</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="kt">uint16_t</span><span class="p">;</span>
|
||||
</span><span id="__span-2-24"><a id="__codelineno-2-24" name="__codelineno-2-24"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="n">voltage_hw_error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">numeric_limits</span><span class="o"><</span><span class="n">voltage_hw_t</span><span class="o">>::</span><span class="n">max</span><span class="p">();</span>
|
||||
</span><span id="__span-2-25"><a id="__codelineno-2-25" name="__codelineno-2-25"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="n">voltage_hw_min</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||||
</span><span id="__span-2-26"><a id="__codelineno-2-26" name="__codelineno-2-26"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="n">voltage_hw_max</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">voltage_hw_error</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||||
</span><span id="__span-2-27"><a id="__codelineno-2-27" name="__codelineno-2-27"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="n">voltage_hw_range</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">voltage_hw_max</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">voltage_hw_min</span><span class="p">;</span>
|
||||
</span><span id="__span-2-28"><a id="__codelineno-2-28" name="__codelineno-2-28"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="n">voltage_hw_zero</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">voltage_hw_range</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
|
||||
<span class="normal"><a href="#__codelineno-2-27">27</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-21"><a id="__codelineno-2-21" name="__codelineno-2-21"></a><span class="c1">// hardware encoding of voltage</span>
|
||||
</span><span id="__span-2-22"><a id="__codelineno-2-22" name="__codelineno-2-22"></a><span class="k">using</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="kt">uint16_t</span><span class="p">;</span>
|
||||
</span><span id="__span-2-23"><a id="__codelineno-2-23" name="__codelineno-2-23"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="n">voltage_hw_error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">numeric_limits</span><span class="o"><</span><span class="n">voltage_hw_t</span><span class="o">>::</span><span class="n">max</span><span class="p">();</span>
|
||||
</span><span id="__span-2-24"><a id="__codelineno-2-24" name="__codelineno-2-24"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="n">voltage_hw_min</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
||||
</span><span id="__span-2-25"><a id="__codelineno-2-25" name="__codelineno-2-25"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="n">voltage_hw_max</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">voltage_hw_error</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
||||
</span><span id="__span-2-26"><a id="__codelineno-2-26" name="__codelineno-2-26"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="n">voltage_hw_range</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">voltage_hw_max</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">voltage_hw_min</span><span class="p">;</span>
|
||||
</span><span id="__span-2-27"><a id="__codelineno-2-27" name="__codelineno-2-27"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="n">voltage_hw_zero</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">voltage_hw_range</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>Finally, we define a quantity point origin, an offset unit that scales the value and uses this
|
||||
origin to offset the zero of the sale, and a dedicated quantity point alias using those:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hw_voltage.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-29">29</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hw_voltage.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-28">28</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-29">29</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-30">30</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-31">31</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-32">32</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-33">33</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-34">34</a></span>
|
||||
<span class="normal"><a href="#__codelineno-3-35">35</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-29"><a id="__codelineno-3-29" name="__codelineno-3-29"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">hw_voltage_origin</span><span class="w"> </span><span class="k">final</span><span class="w"> </span><span class="o">:</span>
|
||||
</span><span id="__span-3-30"><a id="__codelineno-3-30" name="__codelineno-3-30"></a><span class="w"> </span><span class="n">relative_point_origin</span><span class="o"><</span><span class="n">point</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">volt</span><span class="o">></span><span class="p">(</span><span class="n">min_voltage</span><span class="p">)</span><span class="o">></span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="n">hw_voltage_origin</span><span class="p">;</span>
|
||||
</span><span id="__span-3-31"><a id="__codelineno-3-31" name="__codelineno-3-31"></a>
|
||||
</span><span id="__span-3-32"><a id="__codelineno-3-32" name="__codelineno-3-32"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">hw_voltage_unit</span><span class="w"> </span><span class="k">final</span><span class="w"> </span><span class="o">:</span>
|
||||
</span><span id="__span-3-33"><a id="__codelineno-3-33" name="__codelineno-3-33"></a><span class="w"> </span><span class="n">named_unit</span><span class="o"><</span><span class="s">"hwV"</span><span class="p">,</span><span class="w"> </span><span class="n">mag_ratio</span><span class="o"><</span><span class="n">voltage_range</span><span class="p">,</span><span class="w"> </span><span class="n">voltage_hw_range</span><span class="o">></span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si</span><span class="o">::</span><span class="n">volt</span><span class="p">,</span><span class="w"> </span><span class="n">hw_voltage_origin</span><span class="o">></span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="n">hw_voltage_unit</span><span class="p">;</span>
|
||||
</span><span id="__span-3-34"><a id="__codelineno-3-34" name="__codelineno-3-34"></a>
|
||||
</span><span id="__span-3-35"><a id="__codelineno-3-35" name="__codelineno-3-35"></a><span class="k">using</span><span class="w"> </span><span class="n">hw_voltage_quantity_point</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">quantity_point</span><span class="o"><</span><span class="n">hw_voltage_unit</span><span class="p">,</span><span class="w"> </span><span class="n">hw_voltage_origin</span><span class="p">,</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="o">></span><span class="p">;</span>
|
||||
<span class="normal"><a href="#__codelineno-3-34">34</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-28"><a id="__codelineno-3-28" name="__codelineno-3-28"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">hw_voltage_origin</span><span class="w"> </span><span class="k">final</span><span class="w"> </span><span class="o">:</span>
|
||||
</span><span id="__span-3-29"><a id="__codelineno-3-29" name="__codelineno-3-29"></a><span class="w"> </span><span class="n">relative_point_origin</span><span class="o"><</span><span class="n">point</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">volt</span><span class="o">></span><span class="p">(</span><span class="n">min_voltage</span><span class="p">)</span><span class="o">></span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="n">hw_voltage_origin</span><span class="p">;</span>
|
||||
</span><span id="__span-3-30"><a id="__codelineno-3-30" name="__codelineno-3-30"></a>
|
||||
</span><span id="__span-3-31"><a id="__codelineno-3-31" name="__codelineno-3-31"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">hw_voltage_unit</span><span class="w"> </span><span class="k">final</span><span class="w"> </span><span class="o">:</span>
|
||||
</span><span id="__span-3-32"><a id="__codelineno-3-32" name="__codelineno-3-32"></a><span class="w"> </span><span class="n">named_unit</span><span class="o"><</span><span class="s">"hwV"</span><span class="p">,</span><span class="w"> </span><span class="n">mag_ratio</span><span class="o"><</span><span class="n">voltage_range</span><span class="p">,</span><span class="w"> </span><span class="n">voltage_hw_range</span><span class="o">></span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si</span><span class="o">::</span><span class="n">volt</span><span class="p">,</span><span class="w"> </span><span class="n">hw_voltage_origin</span><span class="o">></span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="n">hw_voltage_unit</span><span class="p">;</span>
|
||||
</span><span id="__span-3-33"><a id="__codelineno-3-33" name="__codelineno-3-33"></a>
|
||||
</span><span id="__span-3-34"><a id="__codelineno-3-34" name="__codelineno-3-34"></a><span class="k">using</span><span class="w"> </span><span class="n">hw_voltage_quantity_point</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">quantity_point</span><span class="o"><</span><span class="n">hw_voltage_unit</span><span class="p">,</span><span class="w"> </span><span class="n">hw_voltage_origin</span><span class="p">,</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="o">></span><span class="p">;</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>Now, when everything is ready, we can simulate mapping of our hardware register, and provide
|
||||
a helper function that will read the value and construct a quantity point from the obtained copy:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hw_voltage.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-36">36</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hw_voltage.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-35">35</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-36">36</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-37">37</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-38">38</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-39">39</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-40">40</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-41">41</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-42">42</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-43">43</a></span>
|
||||
<span class="normal"><a href="#__codelineno-4-44">44</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-4-36"><a id="__codelineno-4-36" name="__codelineno-4-36"></a><span class="c1">// mapped HW register</span>
|
||||
</span><span id="__span-4-37"><a id="__codelineno-4-37" name="__codelineno-4-37"></a><span class="k">volatile</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="n">hw_voltage_value</span><span class="p">;</span>
|
||||
</span><span id="__span-4-38"><a id="__codelineno-4-38" name="__codelineno-4-38"></a>
|
||||
</span><span id="__span-4-39"><a id="__codelineno-4-39" name="__codelineno-4-39"></a><span class="n">std</span><span class="o">::</span><span class="n">optional</span><span class="o"><</span><span class="n">hw_voltage_quantity_point</span><span class="o">></span><span class="w"> </span><span class="n">read_hw_voltage</span><span class="p">()</span>
|
||||
</span><span id="__span-4-40"><a id="__codelineno-4-40" name="__codelineno-4-40"></a><span class="p">{</span>
|
||||
</span><span id="__span-4-41"><a id="__codelineno-4-41" name="__codelineno-4-41"></a><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="n">local_copy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">hw_voltage_value</span><span class="p">;</span>
|
||||
</span><span id="__span-4-42"><a id="__codelineno-4-42" name="__codelineno-4-42"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">local_copy</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">voltage_hw_error</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">nullopt</span><span class="p">;</span>
|
||||
</span><span id="__span-4-43"><a id="__codelineno-4-43" name="__codelineno-4-43"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">point</span><span class="o"><</span><span class="n">hw_voltage_unit</span><span class="o">></span><span class="p">(</span><span class="n">local_copy</span><span class="p">);</span>
|
||||
</span><span id="__span-4-44"><a id="__codelineno-4-44" name="__codelineno-4-44"></a><span class="p">}</span>
|
||||
<span class="normal"><a href="#__codelineno-4-43">43</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-4-35"><a id="__codelineno-4-35" name="__codelineno-4-35"></a><span class="c1">// mapped HW register</span>
|
||||
</span><span id="__span-4-36"><a id="__codelineno-4-36" name="__codelineno-4-36"></a><span class="k">volatile</span><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="n">hw_voltage_value</span><span class="p">;</span>
|
||||
</span><span id="__span-4-37"><a id="__codelineno-4-37" name="__codelineno-4-37"></a>
|
||||
</span><span id="__span-4-38"><a id="__codelineno-4-38" name="__codelineno-4-38"></a><span class="n">std</span><span class="o">::</span><span class="n">optional</span><span class="o"><</span><span class="n">hw_voltage_quantity_point</span><span class="o">></span><span class="w"> </span><span class="n">read_hw_voltage</span><span class="p">()</span>
|
||||
</span><span id="__span-4-39"><a id="__codelineno-4-39" name="__codelineno-4-39"></a><span class="p">{</span>
|
||||
</span><span id="__span-4-40"><a id="__codelineno-4-40" name="__codelineno-4-40"></a><span class="w"> </span><span class="n">voltage_hw_t</span><span class="w"> </span><span class="n">local_copy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">hw_voltage_value</span><span class="p">;</span>
|
||||
</span><span id="__span-4-41"><a id="__codelineno-4-41" name="__codelineno-4-41"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">local_copy</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">voltage_hw_error</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">nullopt</span><span class="p">;</span>
|
||||
</span><span id="__span-4-42"><a id="__codelineno-4-42" name="__codelineno-4-42"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">point</span><span class="o"><</span><span class="n">hw_voltage_unit</span><span class="o">></span><span class="p">(</span><span class="n">local_copy</span><span class="p">);</span>
|
||||
</span><span id="__span-4-43"><a id="__codelineno-4-43" name="__codelineno-4-43"></a><span class="p">}</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>We also provide a simple print helper for our quantity points:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hw_voltage.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-45">45</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hw_voltage.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-44">44</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-45">45</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-46">46</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-47">47</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-48">48</a></span>
|
||||
<span class="normal"><a href="#__codelineno-5-49">49</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-5-45"><a id="__codelineno-5-45" name="__codelineno-5-45"></a><span class="kt">void</span><span class="w"> </span><span class="nf">print</span><span class="p">(</span><span class="n">QuantityPoint</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">qp</span><span class="p">)</span>
|
||||
</span><span id="__span-5-46"><a id="__codelineno-5-46" name="__codelineno-5-46"></a><span class="p">{</span>
|
||||
</span><span id="__span-5-47"><a id="__codelineno-5-47" name="__codelineno-5-47"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"{:10} ({:5})"</span><span class="p">,</span><span class="w"> </span><span class="n">qp</span><span class="p">.</span><span class="n">quantity_from_zero</span><span class="p">(),</span>
|
||||
</span><span id="__span-5-48"><a id="__codelineno-5-48" name="__codelineno-5-48"></a><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="kt">double</span><span class="p">,</span><span class="w"> </span><span class="n">si</span><span class="o">::</span><span class="n">volt</span><span class="o">></span><span class="p">(</span><span class="n">qp</span><span class="p">).</span><span class="n">quantity_from_zero</span><span class="p">());</span>
|
||||
</span><span id="__span-5-49"><a id="__codelineno-5-49" name="__codelineno-5-49"></a><span class="p">}</span>
|
||||
<span class="normal"><a href="#__codelineno-5-48">48</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-5-44"><a id="__codelineno-5-44" name="__codelineno-5-44"></a><span class="kt">void</span><span class="w"> </span><span class="nf">print</span><span class="p">(</span><span class="n">QuantityPoint</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">qp</span><span class="p">)</span>
|
||||
</span><span id="__span-5-45"><a id="__codelineno-5-45" name="__codelineno-5-45"></a><span class="p">{</span>
|
||||
</span><span id="__span-5-46"><a id="__codelineno-5-46" name="__codelineno-5-46"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"{:10} ({:5})"</span><span class="p">,</span><span class="w"> </span><span class="n">qp</span><span class="p">.</span><span class="n">quantity_from_zero</span><span class="p">(),</span>
|
||||
</span><span id="__span-5-47"><a id="__codelineno-5-47" name="__codelineno-5-47"></a><span class="w"> </span><span class="n">value_cast</span><span class="o"><</span><span class="kt">double</span><span class="p">,</span><span class="w"> </span><span class="n">si</span><span class="o">::</span><span class="n">volt</span><span class="o">></span><span class="p">(</span><span class="n">qp</span><span class="p">).</span><span class="n">quantity_from_zero</span><span class="p">());</span>
|
||||
</span><span id="__span-5-48"><a id="__codelineno-5-48" name="__codelineno-5-48"></a><span class="p">}</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>In the main function we simulate setting of 3 values by our hardware. Each of them is read
|
||||
and printed in the voltage unit used on the hardware as well as in the standard SI unit:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hw_voltage.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-6-50">50</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">hw_voltage.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-6-49">49</a></span>
|
||||
<span class="normal"><a href="#__codelineno-6-50">50</a></span>
|
||||
<span class="normal"><a href="#__codelineno-6-51">51</a></span>
|
||||
<span class="normal"><a href="#__codelineno-6-52">52</a></span>
|
||||
<span class="normal"><a href="#__codelineno-6-53">53</a></span>
|
||||
@ -2520,21 +2519,20 @@ and printed in the voltage unit used on the hardware as well as in the standard
|
||||
<span class="normal"><a href="#__codelineno-6-59">59</a></span>
|
||||
<span class="normal"><a href="#__codelineno-6-60">60</a></span>
|
||||
<span class="normal"><a href="#__codelineno-6-61">61</a></span>
|
||||
<span class="normal"><a href="#__codelineno-6-62">62</a></span>
|
||||
<span class="normal"><a href="#__codelineno-6-63">63</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-6-50"><a id="__codelineno-6-50" name="__codelineno-6-50"></a><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
|
||||
</span><span id="__span-6-51"><a id="__codelineno-6-51" name="__codelineno-6-51"></a><span class="p">{</span>
|
||||
</span><span id="__span-6-52"><a id="__codelineno-6-52" name="__codelineno-6-52"></a><span class="w"> </span><span class="c1">// simulate reading of 3 values from the hardware</span>
|
||||
</span><span id="__span-6-53"><a id="__codelineno-6-53" name="__codelineno-6-53"></a><span class="w"> </span><span class="n">hw_voltage_value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">voltage_hw_min</span><span class="p">;</span>
|
||||
</span><span id="__span-6-54"><a id="__codelineno-6-54" name="__codelineno-6-54"></a><span class="w"> </span><span class="n">quantity_point</span><span class="w"> </span><span class="n">qp1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">read_hw_voltage</span><span class="p">().</span><span class="n">value</span><span class="p">();</span>
|
||||
</span><span id="__span-6-55"><a id="__codelineno-6-55" name="__codelineno-6-55"></a><span class="w"> </span><span class="n">hw_voltage_value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">voltage_hw_zero</span><span class="p">;</span>
|
||||
</span><span id="__span-6-56"><a id="__codelineno-6-56" name="__codelineno-6-56"></a><span class="w"> </span><span class="n">quantity_point</span><span class="w"> </span><span class="n">qp2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">read_hw_voltage</span><span class="p">().</span><span class="n">value</span><span class="p">();</span>
|
||||
</span><span id="__span-6-57"><a id="__codelineno-6-57" name="__codelineno-6-57"></a><span class="w"> </span><span class="n">hw_voltage_value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">voltage_hw_max</span><span class="p">;</span>
|
||||
</span><span id="__span-6-58"><a id="__codelineno-6-58" name="__codelineno-6-58"></a><span class="w"> </span><span class="n">quantity_point</span><span class="w"> </span><span class="n">qp3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">read_hw_voltage</span><span class="p">().</span><span class="n">value</span><span class="p">();</span>
|
||||
</span><span id="__span-6-59"><a id="__codelineno-6-59" name="__codelineno-6-59"></a>
|
||||
</span><span id="__span-6-60"><a id="__codelineno-6-60" name="__codelineno-6-60"></a><span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="n">qp1</span><span class="p">);</span>
|
||||
</span><span id="__span-6-61"><a id="__codelineno-6-61" name="__codelineno-6-61"></a><span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="n">qp2</span><span class="p">);</span>
|
||||
</span><span id="__span-6-62"><a id="__codelineno-6-62" name="__codelineno-6-62"></a><span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="n">qp3</span><span class="p">);</span>
|
||||
</span><span id="__span-6-63"><a id="__codelineno-6-63" name="__codelineno-6-63"></a><span class="p">}</span>
|
||||
<span class="normal"><a href="#__codelineno-6-62">62</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-6-49"><a id="__codelineno-6-49" name="__codelineno-6-49"></a><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
|
||||
</span><span id="__span-6-50"><a id="__codelineno-6-50" name="__codelineno-6-50"></a><span class="p">{</span>
|
||||
</span><span id="__span-6-51"><a id="__codelineno-6-51" name="__codelineno-6-51"></a><span class="w"> </span><span class="c1">// simulate reading of 3 values from the hardware</span>
|
||||
</span><span id="__span-6-52"><a id="__codelineno-6-52" name="__codelineno-6-52"></a><span class="w"> </span><span class="n">hw_voltage_value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">voltage_hw_min</span><span class="p">;</span>
|
||||
</span><span id="__span-6-53"><a id="__codelineno-6-53" name="__codelineno-6-53"></a><span class="w"> </span><span class="n">quantity_point</span><span class="w"> </span><span class="n">qp1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">read_hw_voltage</span><span class="p">().</span><span class="n">value</span><span class="p">();</span>
|
||||
</span><span id="__span-6-54"><a id="__codelineno-6-54" name="__codelineno-6-54"></a><span class="w"> </span><span class="n">hw_voltage_value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">voltage_hw_zero</span><span class="p">;</span>
|
||||
</span><span id="__span-6-55"><a id="__codelineno-6-55" name="__codelineno-6-55"></a><span class="w"> </span><span class="n">quantity_point</span><span class="w"> </span><span class="n">qp2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">read_hw_voltage</span><span class="p">().</span><span class="n">value</span><span class="p">();</span>
|
||||
</span><span id="__span-6-56"><a id="__codelineno-6-56" name="__codelineno-6-56"></a><span class="w"> </span><span class="n">hw_voltage_value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">voltage_hw_max</span><span class="p">;</span>
|
||||
</span><span id="__span-6-57"><a id="__codelineno-6-57" name="__codelineno-6-57"></a><span class="w"> </span><span class="n">quantity_point</span><span class="w"> </span><span class="n">qp3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">read_hw_voltage</span><span class="p">().</span><span class="n">value</span><span class="p">();</span>
|
||||
</span><span id="__span-6-58"><a id="__codelineno-6-58" name="__codelineno-6-58"></a>
|
||||
</span><span id="__span-6-59"><a id="__codelineno-6-59" name="__codelineno-6-59"></a><span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="n">qp1</span><span class="p">);</span>
|
||||
</span><span id="__span-6-60"><a id="__codelineno-6-60" name="__codelineno-6-60"></a><span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="n">qp2</span><span class="p">);</span>
|
||||
</span><span id="__span-6-61"><a id="__codelineno-6-61" name="__codelineno-6-61"></a><span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="n">qp3</span><span class="p">);</span>
|
||||
</span><span id="__span-6-62"><a id="__codelineno-6-62" name="__codelineno-6-62"></a><span class="p">}</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>The above program results with the following text output:</p>
|
||||
<div class="language-text highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a> 0 hwV (-10 V)
|
||||
|
@ -2401,8 +2401,7 @@ work in practice.</p>
|
||||
<span class="normal"><a href="#__codelineno-0-9"> 9</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-10">10</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-11">11</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-12">12</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-13">13</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/compat_macros.h></span>
|
||||
<span class="normal"><a href="#__codelineno-0-12">12</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/compat_macros.h></span>
|
||||
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/ext/format.h></span>
|
||||
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a><span class="cp">#ifdef MP_UNITS_IMPORT_STD</span>
|
||||
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a><span class="k">import</span><span class="w"> </span><span class="n">std</span><span class="p">;</span>
|
||||
@ -2412,13 +2411,13 @@ work in practice.</p>
|
||||
</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8"></a><span class="cp">#ifdef MP_UNITS_MODULES</span>
|
||||
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="k">import</span><span class="w"> </span><span class="n">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="cp">#else</span>
|
||||
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/format.h></span>
|
||||
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="cp">#endif</span>
|
||||
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="cp">#endif</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>As always, we start with the inclusion of all the needed header files.
|
||||
The main part of the example prints all of the SI-defining constants:</p>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">si_constants.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-14">14</a></span>
|
||||
<div class="language-cpp highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">si_constants.cpp</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-13">13</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-14">14</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-15">15</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-16">16</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-17">17</a></span>
|
||||
@ -2440,31 +2439,30 @@ The main part of the example prints all of the SI-defining constants:</p>
|
||||
<span class="normal"><a href="#__codelineno-1-33">33</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-34">34</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-35">35</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-36">36</a></span>
|
||||
<span class="normal"><a href="#__codelineno-1-37">37</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-14"><a id="__codelineno-1-14" name="__codelineno-1-14"></a><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
|
||||
</span><span id="__span-1-15"><a id="__codelineno-1-15" name="__codelineno-1-15"></a><span class="p">{</span>
|
||||
</span><span id="__span-1-16"><a id="__codelineno-1-16" name="__codelineno-1-16"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-1-17"><a id="__codelineno-1-17" name="__codelineno-1-17"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="p">;</span>
|
||||
</span><span id="__span-1-18"><a id="__codelineno-1-18" name="__codelineno-1-18"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-1-19"><a id="__codelineno-1-19" name="__codelineno-1-19"></a>
|
||||
</span><span id="__span-1-20"><a id="__codelineno-1-20" name="__codelineno-1-20"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"The seven defining constants of the SI and the seven corresponding units they define:</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-1-21"><a id="__codelineno-1-21" name="__codelineno-1-21"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"- hyperfine transition frequency of Cs: {} = {::N[.0]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-22"><a id="__codelineno-1-22" name="__codelineno-1-22"></a><span class="w"> </span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">hyperfine_structure_transition_frequency_of_cs</span><span class="p">,</span>
|
||||
</span><span id="__span-1-23"><a id="__codelineno-1-23" name="__codelineno-1-23"></a><span class="w"> </span><span class="p">(</span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">hyperfine_structure_transition_frequency_of_cs</span><span class="p">).</span><span class="n">in</span><span class="p">(</span><span class="n">Hz</span><span class="p">));</span>
|
||||
</span><span id="__span-1-24"><a id="__codelineno-1-24" name="__codelineno-1-24"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"- speed of light in vacuum: {} = {::N[.0]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-25"><a id="__codelineno-1-25" name="__codelineno-1-25"></a><span class="w"> </span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">speed_of_light_in_vacuum</span><span class="p">,</span>
|
||||
</span><span id="__span-1-26"><a id="__codelineno-1-26" name="__codelineno-1-26"></a><span class="w"> </span><span class="p">(</span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">speed_of_light_in_vacuum</span><span class="p">).</span><span class="n">in</span><span class="p">(</span><span class="n">m</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">s</span><span class="p">));</span>
|
||||
</span><span id="__span-1-27"><a id="__codelineno-1-27" name="__codelineno-1-27"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"- Planck constant: {} = {::N[.8e]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-28"><a id="__codelineno-1-28" name="__codelineno-1-28"></a><span class="w"> </span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">planck_constant</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">planck_constant</span><span class="p">).</span><span class="n">in</span><span class="p">(</span><span class="n">J</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">s</span><span class="p">));</span>
|
||||
</span><span id="__span-1-29"><a id="__codelineno-1-29" name="__codelineno-1-29"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"- elementary charge: {} = {::N[.9e]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-30"><a id="__codelineno-1-30" name="__codelineno-1-30"></a><span class="w"> </span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">elementary_charge</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">elementary_charge</span><span class="p">).</span><span class="n">in</span><span class="p">(</span><span class="n">C</span><span class="p">));</span>
|
||||
</span><span id="__span-1-31"><a id="__codelineno-1-31" name="__codelineno-1-31"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"- Boltzmann constant: {} = {::N[.6e]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-32"><a id="__codelineno-1-32" name="__codelineno-1-32"></a><span class="w"> </span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">boltzmann_constant</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">boltzmann_constant</span><span class="p">).</span><span class="n">in</span><span class="p">(</span><span class="n">J</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">K</span><span class="p">));</span>
|
||||
</span><span id="__span-1-33"><a id="__codelineno-1-33" name="__codelineno-1-33"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"- Avogadro constant: {} = {::N[.8e]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-34"><a id="__codelineno-1-34" name="__codelineno-1-34"></a><span class="w"> </span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">avogadro_constant</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">avogadro_constant</span><span class="p">).</span><span class="n">in</span><span class="p">(</span><span class="n">one</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">mol</span><span class="p">));</span>
|
||||
</span><span id="__span-1-35"><a id="__codelineno-1-35" name="__codelineno-1-35"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"- luminous efficacy: {} = {}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-36"><a id="__codelineno-1-36" name="__codelineno-1-36"></a><span class="w"> </span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">luminous_efficacy</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">luminous_efficacy</span><span class="p">).</span><span class="n">in</span><span class="p">(</span><span class="n">lm</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">W</span><span class="p">));</span>
|
||||
</span><span id="__span-1-37"><a id="__codelineno-1-37" name="__codelineno-1-37"></a><span class="p">}</span>
|
||||
<span class="normal"><a href="#__codelineno-1-36">36</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-13"><a id="__codelineno-1-13" name="__codelineno-1-13"></a><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span>
|
||||
</span><span id="__span-1-14"><a id="__codelineno-1-14" name="__codelineno-1-14"></a><span class="p">{</span>
|
||||
</span><span id="__span-1-15"><a id="__codelineno-1-15" name="__codelineno-1-15"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-1-16"><a id="__codelineno-1-16" name="__codelineno-1-16"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="p">;</span>
|
||||
</span><span id="__span-1-17"><a id="__codelineno-1-17" name="__codelineno-1-17"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-1-18"><a id="__codelineno-1-18" name="__codelineno-1-18"></a>
|
||||
</span><span id="__span-1-19"><a id="__codelineno-1-19" name="__codelineno-1-19"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"The seven defining constants of the SI and the seven corresponding units they define:</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-1-20"><a id="__codelineno-1-20" name="__codelineno-1-20"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"- hyperfine transition frequency of Cs: {} = {::N[.0]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-21"><a id="__codelineno-1-21" name="__codelineno-1-21"></a><span class="w"> </span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">hyperfine_structure_transition_frequency_of_cs</span><span class="p">,</span>
|
||||
</span><span id="__span-1-22"><a id="__codelineno-1-22" name="__codelineno-1-22"></a><span class="w"> </span><span class="p">(</span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">hyperfine_structure_transition_frequency_of_cs</span><span class="p">).</span><span class="n">in</span><span class="p">(</span><span class="n">Hz</span><span class="p">));</span>
|
||||
</span><span id="__span-1-23"><a id="__codelineno-1-23" name="__codelineno-1-23"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"- speed of light in vacuum: {} = {::N[.0]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-24"><a id="__codelineno-1-24" name="__codelineno-1-24"></a><span class="w"> </span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">speed_of_light_in_vacuum</span><span class="p">,</span>
|
||||
</span><span id="__span-1-25"><a id="__codelineno-1-25" name="__codelineno-1-25"></a><span class="w"> </span><span class="p">(</span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">speed_of_light_in_vacuum</span><span class="p">).</span><span class="n">in</span><span class="p">(</span><span class="n">m</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">s</span><span class="p">));</span>
|
||||
</span><span id="__span-1-26"><a id="__codelineno-1-26" name="__codelineno-1-26"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"- Planck constant: {} = {::N[.8e]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-27"><a id="__codelineno-1-27" name="__codelineno-1-27"></a><span class="w"> </span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">planck_constant</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">planck_constant</span><span class="p">).</span><span class="n">in</span><span class="p">(</span><span class="n">J</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">s</span><span class="p">));</span>
|
||||
</span><span id="__span-1-28"><a id="__codelineno-1-28" name="__codelineno-1-28"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"- elementary charge: {} = {::N[.9e]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-29"><a id="__codelineno-1-29" name="__codelineno-1-29"></a><span class="w"> </span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">elementary_charge</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">elementary_charge</span><span class="p">).</span><span class="n">in</span><span class="p">(</span><span class="n">C</span><span class="p">));</span>
|
||||
</span><span id="__span-1-30"><a id="__codelineno-1-30" name="__codelineno-1-30"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"- Boltzmann constant: {} = {::N[.6e]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-31"><a id="__codelineno-1-31" name="__codelineno-1-31"></a><span class="w"> </span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">boltzmann_constant</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">boltzmann_constant</span><span class="p">).</span><span class="n">in</span><span class="p">(</span><span class="n">J</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">K</span><span class="p">));</span>
|
||||
</span><span id="__span-1-32"><a id="__codelineno-1-32" name="__codelineno-1-32"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"- Avogadro constant: {} = {::N[.8e]}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-33"><a id="__codelineno-1-33" name="__codelineno-1-33"></a><span class="w"> </span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">avogadro_constant</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">avogadro_constant</span><span class="p">).</span><span class="n">in</span><span class="p">(</span><span class="n">one</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">mol</span><span class="p">));</span>
|
||||
</span><span id="__span-1-34"><a id="__codelineno-1-34" name="__codelineno-1-34"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(</span><span class="s">"- luminous efficacy: {} = {}</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span>
|
||||
</span><span id="__span-1-35"><a id="__codelineno-1-35" name="__codelineno-1-35"></a><span class="w"> </span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">luminous_efficacy</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="mf">1.</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">si2019</span><span class="o">::</span><span class="n">luminous_efficacy</span><span class="p">).</span><span class="n">in</span><span class="p">(</span><span class="n">lm</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">W</span><span class="p">));</span>
|
||||
</span><span id="__span-1-36"><a id="__codelineno-1-36" name="__codelineno-1-36"></a><span class="p">}</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
<p>While analyzing the output of this program (provided below), we can easily notice that a direct
|
||||
printing of the quantity provides just a value <code>1</code> with a proper constant symbol. This is the main
|
||||
|
@ -2548,29 +2548,28 @@ have shorter type identifiers, resulting in easier-to-understand error messages
|
||||
</span></code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="language-cpp highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/format.h></span>
|
||||
</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><print></span>
|
||||
</span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a>
|
||||
</span><span id="__span-3-5"><a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-3-6"><a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a>
|
||||
</span><span id="__span-3-7"><a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="o">></span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="o">></span><span class="w"> </span><span class="n">dist</span><span class="p">,</span>
|
||||
</span><span id="__span-3-8"><a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="o">></span><span class="w"> </span><span class="n">time</span><span class="p">)</span>
|
||||
</span><span id="__span-3-9"><a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a><span class="p">{</span>
|
||||
</span><span id="__span-3-10"><a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">dist</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">time</span><span class="p">;</span>
|
||||
</span><span id="__span-3-11"><a id="__codelineno-3-11" name="__codelineno-3-11" href="#__codelineno-3-11"></a><span class="p">}</span>
|
||||
</span><span id="__span-3-12"><a id="__codelineno-3-12" name="__codelineno-3-12" href="#__codelineno-3-12"></a>
|
||||
</span><span id="__span-3-13"><a id="__codelineno-3-13" name="__codelineno-3-13" href="#__codelineno-3-13"></a><span class="kt">int</span><span class="w"> </span><span class="n">main</span><span class="p">()</span>
|
||||
</span><span id="__span-3-14"><a id="__codelineno-3-14" name="__codelineno-3-14" href="#__codelineno-3-14"></a><span class="p">{</span>
|
||||
</span><span id="__span-3-15"><a id="__codelineno-3-15" name="__codelineno-3-15" href="#__codelineno-3-15"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-3-16"><a id="__codelineno-3-16" name="__codelineno-3-16" href="#__codelineno-3-16"></a>
|
||||
</span><span id="__span-3-17"><a id="__codelineno-3-17" name="__codelineno-3-17" href="#__codelineno-3-17"></a><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">110</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">km</span><span class="p">;</span>
|
||||
</span><span id="__span-3-18"><a id="__codelineno-3-18" name="__codelineno-3-18" href="#__codelineno-3-18"></a><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">;</span>
|
||||
</span><span id="__span-3-19"><a id="__codelineno-3-19" name="__codelineno-3-19" href="#__codelineno-3-19"></a><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">speed</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">);</span>
|
||||
</span><span id="__span-3-20"><a id="__codelineno-3-20" name="__codelineno-3-20" href="#__codelineno-3-20"></a>
|
||||
</span><span id="__span-3-21"><a id="__codelineno-3-21" name="__codelineno-3-21" href="#__codelineno-3-21"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"A car driving {} in {} has an average speed of {::N[.4]} ({::N[.4]})"</span><span class="p">,</span>
|
||||
</span><span id="__span-3-22"><a id="__codelineno-3-22" name="__codelineno-3-22" href="#__codelineno-3-22"></a><span class="w"> </span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">speed</span><span class="p">,</span><span class="w"> </span><span class="n">speed</span><span class="p">.</span><span class="n">in</span><span class="p">(</span><span class="n">km</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">h</span><span class="p">));</span>
|
||||
</span><span id="__span-3-23"><a id="__codelineno-3-23" name="__codelineno-3-23" href="#__codelineno-3-23"></a><span class="p">}</span>
|
||||
<div class="language-cpp highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><print></span>
|
||||
</span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>
|
||||
</span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-3-5"><a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a>
|
||||
</span><span id="__span-3-6"><a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="o">></span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="o">></span><span class="w"> </span><span class="n">dist</span><span class="p">,</span>
|
||||
</span><span id="__span-3-7"><a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="o">></span><span class="w"> </span><span class="n">time</span><span class="p">)</span>
|
||||
</span><span id="__span-3-8"><a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a><span class="p">{</span>
|
||||
</span><span id="__span-3-9"><a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">dist</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">time</span><span class="p">;</span>
|
||||
</span><span id="__span-3-10"><a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a><span class="p">}</span>
|
||||
</span><span id="__span-3-11"><a id="__codelineno-3-11" name="__codelineno-3-11" href="#__codelineno-3-11"></a>
|
||||
</span><span id="__span-3-12"><a id="__codelineno-3-12" name="__codelineno-3-12" href="#__codelineno-3-12"></a><span class="kt">int</span><span class="w"> </span><span class="n">main</span><span class="p">()</span>
|
||||
</span><span id="__span-3-13"><a id="__codelineno-3-13" name="__codelineno-3-13" href="#__codelineno-3-13"></a><span class="p">{</span>
|
||||
</span><span id="__span-3-14"><a id="__codelineno-3-14" name="__codelineno-3-14" href="#__codelineno-3-14"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-3-15"><a id="__codelineno-3-15" name="__codelineno-3-15" href="#__codelineno-3-15"></a>
|
||||
</span><span id="__span-3-16"><a id="__codelineno-3-16" name="__codelineno-3-16" href="#__codelineno-3-16"></a><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">110</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">km</span><span class="p">;</span>
|
||||
</span><span id="__span-3-17"><a id="__codelineno-3-17" name="__codelineno-3-17" href="#__codelineno-3-17"></a><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">;</span>
|
||||
</span><span id="__span-3-18"><a id="__codelineno-3-18" name="__codelineno-3-18" href="#__codelineno-3-18"></a><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">speed</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">);</span>
|
||||
</span><span id="__span-3-19"><a id="__codelineno-3-19" name="__codelineno-3-19" href="#__codelineno-3-19"></a>
|
||||
</span><span id="__span-3-20"><a id="__codelineno-3-20" name="__codelineno-3-20" href="#__codelineno-3-20"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"A car driving {} in {} has an average speed of {::N[.4]} ({::N[.4]})"</span><span class="p">,</span>
|
||||
</span><span id="__span-3-21"><a id="__codelineno-3-21" name="__codelineno-3-21" href="#__codelineno-3-21"></a><span class="w"> </span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">speed</span><span class="p">,</span><span class="w"> </span><span class="n">speed</span><span class="p">.</span><span class="n">in</span><span class="p">(</span><span class="n">km</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">h</span><span class="p">));</span>
|
||||
</span><span id="__span-3-22"><a id="__codelineno-3-22" name="__codelineno-3-22" href="#__codelineno-3-22"></a><span class="p">}</span>
|
||||
</span></code></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
@ -2579,7 +2578,7 @@ have shorter type identifiers, resulting in easier-to-understand error messages
|
||||
<div class="language-text highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>A car driving 110 km in 2 h has an average speed of 15.28 m/s (55 km/h)
|
||||
</span></code></pre></div>
|
||||
<div class="admonition example">
|
||||
<p class="admonition-title"><a href="https://godbolt.org/z/W93ovssda">Try it on Compiler Explorer</a></p>
|
||||
<p class="admonition-title"><a href="https://godbolt.org/z/8EPTh8YrE">Try it on Compiler Explorer</a></p>
|
||||
</div>
|
||||
<h3 id="user-provided-unit-wrappers">User-provided unit wrappers<a class="headerlink" href="#user-provided-unit-wrappers" title="Permanent link">¶</a></h3>
|
||||
<p>Sometimes it might be awkward to type some derived units:</p>
|
||||
@ -2645,30 +2644,29 @@ want to be <strong>quantity-safe</strong>. This, for example, allows us to speci
|
||||
</span></code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="language-cpp highlight"><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/format.h></span>
|
||||
</span><span id="__span-10-2"><a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-10-3"><a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-10-4"><a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><print></span>
|
||||
</span><span id="__span-10-5"><a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a>
|
||||
</span><span id="__span-10-6"><a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-10-7"><a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a>
|
||||
</span><span id="__span-10-8"><a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="p">[</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="p">]</span><span class="o">></span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">quantity</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="p">[</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="p">]</span><span class="o">></span><span class="w"> </span><span class="n">dist</span><span class="p">,</span>
|
||||
</span><span id="__span-10-9"><a id="__codelineno-10-9" name="__codelineno-10-9" href="#__codelineno-10-9"></a><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="p">[</span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="p">]</span><span class="o">></span><span class="w"> </span><span class="n">time</span><span class="p">)</span>
|
||||
</span><span id="__span-10-10"><a id="__codelineno-10-10" name="__codelineno-10-10" href="#__codelineno-10-10"></a><span class="p">{</span>
|
||||
</span><span id="__span-10-11"><a id="__codelineno-10-11" name="__codelineno-10-11" href="#__codelineno-10-11"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">dist</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">time</span><span class="p">;</span>
|
||||
</span><span id="__span-10-12"><a id="__codelineno-10-12" name="__codelineno-10-12" href="#__codelineno-10-12"></a><span class="p">}</span>
|
||||
</span><span id="__span-10-13"><a id="__codelineno-10-13" name="__codelineno-10-13" href="#__codelineno-10-13"></a>
|
||||
</span><span id="__span-10-14"><a id="__codelineno-10-14" name="__codelineno-10-14" href="#__codelineno-10-14"></a><span class="kt">int</span><span class="w"> </span><span class="n">main</span><span class="p">()</span>
|
||||
</span><span id="__span-10-15"><a id="__codelineno-10-15" name="__codelineno-10-15" href="#__codelineno-10-15"></a><span class="p">{</span>
|
||||
</span><span id="__span-10-16"><a id="__codelineno-10-16" name="__codelineno-10-16" href="#__codelineno-10-16"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-10-17"><a id="__codelineno-10-17" name="__codelineno-10-17" href="#__codelineno-10-17"></a>
|
||||
</span><span id="__span-10-18"><a id="__codelineno-10-18" name="__codelineno-10-18" href="#__codelineno-10-18"></a><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">isq</span><span class="o">::</span><span class="n">distance</span><span class="p">(</span><span class="mi">110</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">km</span><span class="p">);</span>
|
||||
</span><span id="__span-10-19"><a id="__codelineno-10-19" name="__codelineno-10-19" href="#__codelineno-10-19"></a><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">);</span>
|
||||
</span><span id="__span-10-20"><a id="__codelineno-10-20" name="__codelineno-10-20" href="#__codelineno-10-20"></a><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">speed</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">);</span>
|
||||
</span><span id="__span-10-21"><a id="__codelineno-10-21" name="__codelineno-10-21" href="#__codelineno-10-21"></a>
|
||||
</span><span id="__span-10-22"><a id="__codelineno-10-22" name="__codelineno-10-22" href="#__codelineno-10-22"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"A car driving {} in {} has an average speed of {::N[.4]} ({::N[.4]})"</span><span class="p">,</span>
|
||||
</span><span id="__span-10-23"><a id="__codelineno-10-23" name="__codelineno-10-23" href="#__codelineno-10-23"></a><span class="w"> </span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">speed</span><span class="p">,</span><span class="w"> </span><span class="n">speed</span><span class="p">.</span><span class="n">in</span><span class="p">(</span><span class="n">km</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">h</span><span class="p">));</span>
|
||||
</span><span id="__span-10-24"><a id="__codelineno-10-24" name="__codelineno-10-24" href="#__codelineno-10-24"></a><span class="p">}</span>
|
||||
<div class="language-cpp highlight"><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-10-2"><a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-10-3"><a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><print></span>
|
||||
</span><span id="__span-10-4"><a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a>
|
||||
</span><span id="__span-10-5"><a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-10-6"><a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a>
|
||||
</span><span id="__span-10-7"><a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a><span class="k">constexpr</span><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="p">[</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="p">]</span><span class="o">></span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">quantity</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="p">[</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="p">]</span><span class="o">></span><span class="w"> </span><span class="n">dist</span><span class="p">,</span>
|
||||
</span><span id="__span-10-8"><a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a><span class="w"> </span><span class="n">quantity</span><span class="o"><</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="p">[</span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="p">]</span><span class="o">></span><span class="w"> </span><span class="n">time</span><span class="p">)</span>
|
||||
</span><span id="__span-10-9"><a id="__codelineno-10-9" name="__codelineno-10-9" href="#__codelineno-10-9"></a><span class="p">{</span>
|
||||
</span><span id="__span-10-10"><a id="__codelineno-10-10" name="__codelineno-10-10" href="#__codelineno-10-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">dist</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">time</span><span class="p">;</span>
|
||||
</span><span id="__span-10-11"><a id="__codelineno-10-11" name="__codelineno-10-11" href="#__codelineno-10-11"></a><span class="p">}</span>
|
||||
</span><span id="__span-10-12"><a id="__codelineno-10-12" name="__codelineno-10-12" href="#__codelineno-10-12"></a>
|
||||
</span><span id="__span-10-13"><a id="__codelineno-10-13" name="__codelineno-10-13" href="#__codelineno-10-13"></a><span class="kt">int</span><span class="w"> </span><span class="n">main</span><span class="p">()</span>
|
||||
</span><span id="__span-10-14"><a id="__codelineno-10-14" name="__codelineno-10-14" href="#__codelineno-10-14"></a><span class="p">{</span>
|
||||
</span><span id="__span-10-15"><a id="__codelineno-10-15" name="__codelineno-10-15" href="#__codelineno-10-15"></a><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">mp_units</span><span class="o">::</span><span class="nn">si</span><span class="o">::</span><span class="nn">unit_symbols</span><span class="p">;</span>
|
||||
</span><span id="__span-10-16"><a id="__codelineno-10-16" name="__codelineno-10-16" href="#__codelineno-10-16"></a>
|
||||
</span><span id="__span-10-17"><a id="__codelineno-10-17" name="__codelineno-10-17" href="#__codelineno-10-17"></a><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">isq</span><span class="o">::</span><span class="n">distance</span><span class="p">(</span><span class="mi">110</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">km</span><span class="p">);</span>
|
||||
</span><span id="__span-10-18"><a id="__codelineno-10-18" name="__codelineno-10-18" href="#__codelineno-10-18"></a><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">h</span><span class="p">);</span>
|
||||
</span><span id="__span-10-19"><a id="__codelineno-10-19" name="__codelineno-10-19" href="#__codelineno-10-19"></a><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">quantity</span><span class="w"> </span><span class="n">speed</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">);</span>
|
||||
</span><span id="__span-10-20"><a id="__codelineno-10-20" name="__codelineno-10-20" href="#__codelineno-10-20"></a>
|
||||
</span><span id="__span-10-21"><a id="__codelineno-10-21" name="__codelineno-10-21" href="#__codelineno-10-21"></a><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">println</span><span class="p">(</span><span class="s">"A car driving {} in {} has an average speed of {::N[.4]} ({::N[.4]})"</span><span class="p">,</span>
|
||||
</span><span id="__span-10-22"><a id="__codelineno-10-22" name="__codelineno-10-22" href="#__codelineno-10-22"></a><span class="w"> </span><span class="n">distance</span><span class="p">,</span><span class="w"> </span><span class="n">duration</span><span class="p">,</span><span class="w"> </span><span class="n">speed</span><span class="p">,</span><span class="w"> </span><span class="n">speed</span><span class="p">.</span><span class="n">in</span><span class="p">(</span><span class="n">km</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">h</span><span class="p">));</span>
|
||||
</span><span id="__span-10-23"><a id="__codelineno-10-23" name="__codelineno-10-23" href="#__codelineno-10-23"></a><span class="p">}</span>
|
||||
</span></code></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
@ -2676,7 +2674,7 @@ want to be <strong>quantity-safe</strong>. This, for example, allows us to speci
|
||||
<div class="language-text highlight"><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>A car driving 110 km in 2 h has an average speed of 15.28 m/s (55 km/h)
|
||||
</span></code></pre></div>
|
||||
<div class="admonition example">
|
||||
<p class="admonition-title"><a href="https://godbolt.org/z/MEK1ooEjo">Try it on Compiler Explorer</a></p>
|
||||
<p class="admonition-title"><a href="https://godbolt.org/z/joc4Yn9Mz">Try it on Compiler Explorer</a></p>
|
||||
</div>
|
||||
<p>In case we will accidentally make the same calculation error as before, this time, we will
|
||||
get a bit longer error message, this time also containing information about the quantity type:</p>
|
||||
|
@ -2495,39 +2495,35 @@ your code using <strong>mp-units</strong>:</p>
|
||||
</span></code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="language-cpp highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/format.h></span>
|
||||
</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/ostream.h></span>
|
||||
</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/international.h></span>
|
||||
</span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-2-5"><a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-2-6"><a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><format></span>
|
||||
</span><span id="__span-2-7"><a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><iostream></span>
|
||||
<div class="language-cpp highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/international.h></span>
|
||||
</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><format></span>
|
||||
</span><span id="__span-2-5"><a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><iostream></span>
|
||||
</span><span id="__span-2-6"><a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a>
|
||||
</span><span id="__span-2-7"><a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a><span class="c1">// ...</span>
|
||||
</span><span id="__span-2-8"><a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a>
|
||||
</span><span id="__span-2-9"><a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a><span class="c1">// ...</span>
|
||||
</span><span id="__span-2-9"><a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">horizontal_length</span><span class="w"> </span><span class="k">final</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">quantity_spec</span><span class="o"><</span><span class="n">horizontal_length</span><span class="p">,</span><span class="w"> </span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">></span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="n">horizontal_length</span><span class="p">;</span>
|
||||
</span><span id="__span-2-10"><a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a>
|
||||
</span><span id="__span-2-11"><a id="__codelineno-2-11" name="__codelineno-2-11" href="#__codelineno-2-11"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">horizontal_length</span><span class="w"> </span><span class="k">final</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">quantity_spec</span><span class="o"><</span><span class="n">horizontal_length</span><span class="p">,</span><span class="w"> </span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">></span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="n">horizontal_length</span><span class="p">;</span>
|
||||
</span><span id="__span-2-11"><a id="__codelineno-2-11" name="__codelineno-2-11" href="#__codelineno-2-11"></a><span class="c1">// ...</span>
|
||||
</span><span id="__span-2-12"><a id="__codelineno-2-12" name="__codelineno-2-12" href="#__codelineno-2-12"></a>
|
||||
</span><span id="__span-2-13"><a id="__codelineno-2-13" name="__codelineno-2-13" href="#__codelineno-2-13"></a><span class="c1">// ...</span>
|
||||
</span><span id="__span-2-14"><a id="__codelineno-2-14" name="__codelineno-2-14" href="#__codelineno-2-14"></a>
|
||||
</span><span id="__span-2-15"><a id="__codelineno-2-15" name="__codelineno-2-15" href="#__codelineno-2-15"></a><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">format</span><span class="p">(...)</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-2-13"><a id="__codelineno-2-13" name="__codelineno-2-13" href="#__codelineno-2-13"></a><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">format</span><span class="p">(...)</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span></code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="language-cpp highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/format.h></span>
|
||||
</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/ostream.h></span>
|
||||
</span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/international.h></span>
|
||||
</span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-3-5"><a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-3-6"><a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><fmt/format.h></span>
|
||||
</span><span id="__span-3-7"><a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><iostream></span>
|
||||
<div class="language-cpp highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/international.h></span>
|
||||
</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><fmt/format.h></span>
|
||||
</span><span id="__span-3-5"><a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><iostream></span>
|
||||
</span><span id="__span-3-6"><a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a>
|
||||
</span><span id="__span-3-7"><a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a><span class="c1">// ...</span>
|
||||
</span><span id="__span-3-8"><a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a>
|
||||
</span><span id="__span-3-9"><a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a><span class="c1">// ...</span>
|
||||
</span><span id="__span-3-9"><a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">horizontal_length</span><span class="w"> </span><span class="k">final</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">quantity_spec</span><span class="o"><</span><span class="n">horizontal_length</span><span class="p">,</span><span class="w"> </span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">></span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="n">horizontal_length</span><span class="p">;</span>
|
||||
</span><span id="__span-3-10"><a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a>
|
||||
</span><span id="__span-3-11"><a id="__codelineno-3-11" name="__codelineno-3-11" href="#__codelineno-3-11"></a><span class="kr">inline</span><span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">horizontal_length</span><span class="w"> </span><span class="k">final</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">quantity_spec</span><span class="o"><</span><span class="n">horizontal_length</span><span class="p">,</span><span class="w"> </span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">></span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="n">horizontal_length</span><span class="p">;</span>
|
||||
</span><span id="__span-3-11"><a id="__codelineno-3-11" name="__codelineno-3-11" href="#__codelineno-3-11"></a><span class="c1">// ...</span>
|
||||
</span><span id="__span-3-12"><a id="__codelineno-3-12" name="__codelineno-3-12" href="#__codelineno-3-12"></a>
|
||||
</span><span id="__span-3-13"><a id="__codelineno-3-13" name="__codelineno-3-13" href="#__codelineno-3-13"></a><span class="c1">// ...</span>
|
||||
</span><span id="__span-3-14"><a id="__codelineno-3-14" name="__codelineno-3-14" href="#__codelineno-3-14"></a>
|
||||
</span><span id="__span-3-15"><a id="__codelineno-3-15" name="__codelineno-3-15" href="#__codelineno-3-15"></a><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">fmt</span><span class="o">::</span><span class="n">format</span><span class="p">(...)</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-3-13"><a id="__codelineno-3-13" name="__codelineno-3-13" href="#__codelineno-3-13"></a><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">fmt</span><span class="o">::</span><span class="n">format</span><span class="p">(...)</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span></code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
@ -2537,20 +2533,18 @@ your code using <strong>mp-units</strong>:</p>
|
||||
</span><span id="__span-4-4"><a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/compat_macros.h></span>
|
||||
</span><span id="__span-4-5"><a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="k">import</span><span class="w"> </span><span class="n">mp_units</span><span class="p">;</span>
|
||||
</span><span id="__span-4-6"><a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="cp">#else</span>
|
||||
</span><span id="__span-4-7"><a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/format.h></span>
|
||||
</span><span id="__span-4-8"><a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/ostream.h></span>
|
||||
</span><span id="__span-4-9"><a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/international.h></span>
|
||||
</span><span id="__span-4-10"><a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-4-11"><a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-4-12"><a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a><span class="cp">#endif</span>
|
||||
</span><span id="__span-4-7"><a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/international.h></span>
|
||||
</span><span id="__span-4-8"><a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/isq.h></span>
|
||||
</span><span id="__span-4-9"><a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a><span class="cp">#include</span><span class="w"> </span><span class="cpf"><mp-units/systems/si.h></span>
|
||||
</span><span id="__span-4-10"><a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a><span class="cp">#endif</span>
|
||||
</span><span id="__span-4-11"><a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a>
|
||||
</span><span id="__span-4-12"><a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a><span class="c1">// ...</span>
|
||||
</span><span id="__span-4-13"><a id="__codelineno-4-13" name="__codelineno-4-13" href="#__codelineno-4-13"></a>
|
||||
</span><span id="__span-4-14"><a id="__codelineno-4-14" name="__codelineno-4-14" href="#__codelineno-4-14"></a><span class="c1">// ...</span>
|
||||
</span><span id="__span-4-14"><a id="__codelineno-4-14" name="__codelineno-4-14" href="#__codelineno-4-14"></a><span class="n">QUANTITY_SPEC</span><span class="p">(</span><span class="n">horizontal_length</span><span class="p">,</span><span class="w"> </span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="p">);</span>
|
||||
</span><span id="__span-4-15"><a id="__codelineno-4-15" name="__codelineno-4-15" href="#__codelineno-4-15"></a>
|
||||
</span><span id="__span-4-16"><a id="__codelineno-4-16" name="__codelineno-4-16" href="#__codelineno-4-16"></a><span class="n">QUANTITY_SPEC</span><span class="p">(</span><span class="n">horizontal_length</span><span class="p">,</span><span class="w"> </span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="p">);</span>
|
||||
</span><span id="__span-4-16"><a id="__codelineno-4-16" name="__codelineno-4-16" href="#__codelineno-4-16"></a><span class="c1">// ...</span>
|
||||
</span><span id="__span-4-17"><a id="__codelineno-4-17" name="__codelineno-4-17" href="#__codelineno-4-17"></a>
|
||||
</span><span id="__span-4-18"><a id="__codelineno-4-18" name="__codelineno-4-18" href="#__codelineno-4-18"></a><span class="c1">// ...</span>
|
||||
</span><span id="__span-4-19"><a id="__codelineno-4-19" name="__codelineno-4-19" href="#__codelineno-4-19"></a>
|
||||
</span><span id="__span-4-20"><a id="__codelineno-4-20" name="__codelineno-4-20" href="#__codelineno-4-20"></a><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(...)</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span><span id="__span-4-18"><a id="__codelineno-4-18" name="__codelineno-4-18" href="#__codelineno-4-18"></a><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">MP_UNITS_STD_FMT</span><span class="o">::</span><span class="n">format</span><span class="p">(...)</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
||||
</span></code></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user