Deployed f4b167a2 to HEAD with MkDocs 1.6.1 and mike 2.1.3

This commit is contained in:
github-actions
2025-06-20 09:00:57 +00:00
parent 5c580a0d3b
commit 1cbda4b2e4
14 changed files with 527 additions and 549 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -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">&lt;mp-units/format.h&gt;</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">&lt;mp-units/ostream.h&gt;</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">&lt;mp-units/systems/international.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;format&gt;</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">&lt;iomanip&gt;</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">&lt;iostream&gt;</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">&lt;print&gt;</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">&lt;mp-units/systems/international.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;format&gt;</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">&lt;iomanip&gt;</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">&lt;iostream&gt;</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">&lt;print&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="kt">int</span><span class="o">&gt;</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">&lt;&lt;</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39;\n&#39;</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">&lt;&lt;</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">&lt;&lt;</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">&#39;*&#39;</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">v2</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39;\n&#39;</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">&lt;&lt;</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">&quot;{:*^10}</span><span class="se">\n</span><span class="s">&quot;</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">&quot;{:%N in %U of %D}&quot;</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">&quot;{::N[.2f]}&quot;</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">&quot;{::N[.2f]U[dn]}&quot;</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">&quot;{:%N}&quot;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="kt">int</span><span class="o">&gt;</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">&lt;&lt;</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39;\n&#39;</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">&lt;&lt;</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">&lt;&lt;</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">&#39;*&#39;</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">v2</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39;\n&#39;</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">&lt;&lt;</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">&quot;{:*^10}</span><span class="se">\n</span><span class="s">&quot;</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">&quot;{:%N in %U of %D}&quot;</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">&quot;{::N[.2f]}&quot;</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">&quot;{::N[.2f]U[dn]}&quot;</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">&quot;{:%N}&quot;</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>

View File

@ -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">&lt;mp-units/format.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;mp-units/systems/usc.h&gt;</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">&lt;print&gt;</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">&lt;</span><span class="n">deg_C</span><span class="o">&gt;</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">&quot;Temperature: {} ({})&quot;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;mp-units/systems/usc.h&gt;</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">&lt;print&gt;</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">&lt;</span><span class="n">deg_C</span><span class="o">&gt;</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">&quot;Temperature: {} ({})&quot;</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>

View File

@ -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">&lt;mp-units/format.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;mp-units/systems/usc.h&gt;</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">&lt;print&gt;</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">&lt;</span><span class="s">&quot;smoot&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">mag</span><span class="o">&lt;</span><span class="mi">67</span><span class="o">&gt;</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">&gt;</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">&quot;Harvard Bridge length = {::N[.1f]} ({::N[.1f]}, {::N[.2f]}) ± 1 εar&quot;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;mp-units/systems/usc.h&gt;</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">&lt;print&gt;</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">&lt;</span><span class="s">&quot;smoot&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">mag</span><span class="o">&lt;</span><span class="mi">67</span><span class="o">&gt;</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">&gt;</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">&quot;Harvard Bridge length = {::N[.1f]} ({::N[.1f]}, {::N[.2f]}) ± 1 εar&quot;</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

View File

@ -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.

View File

@ -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">&lt;exception&gt;</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">&lt;mp-units/ostream.h&gt;</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">&lt;mp-units/systems/cgs.h&gt;</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">&lt;mp-units/systems/international.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;mp-units/systems/cgs.h&gt;</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">&lt;mp-units/systems/international.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="o">&gt;</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">&lt;</span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="o">&gt;</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">&lt;</span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">&gt;</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">&lt;</span><span class="n">QuantityOf</span><span class="o">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">&gt;</span><span class="w"> </span><span class="n">V</span><span class="o">&gt;</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">&lt;</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="o">&gt;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Average speed of a car that makes &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot; in &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot; is &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;.</span><span class="se">\n</span><span class="s">&quot;</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">&lt;</span><span class="n">QuantityOf</span><span class="o">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">&gt;</span><span class="w"> </span><span class="n">V</span><span class="o">&gt;</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">&lt;</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="o">&gt;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Average speed of a car that makes &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">distance</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot; in &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">duration</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot; is &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;.</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;SI units with &#39;int&#39; as representation</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;SI units with &#39;int&#39; as representation</span><span class="se">\n</span><span class="s">&quot;</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 &#39;int&#39; 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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">SI units with &#39;double&#39; as representation</span><span class="se">\n</span><span class="s">&quot;</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">&lt;</span><span class="kt">int</span><span class="o">&gt;</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">&lt;</span><span class="kt">int</span><span class="o">&gt;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">SI units with &#39;double&#39; as representation</span><span class="se">\n</span><span class="s">&quot;</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">&lt;</span><span class="kt">int</span><span class="o">&gt;</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">&lt;</span><span class="kt">int</span><span class="o">&gt;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">International mile with &#39;int&#39; as representation</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">International mile with &#39;double&#39; as representation</span><span class="se">\n</span><span class="s">&quot;</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">&lt;</span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">&gt;</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">&lt;</span><span class="kt">int</span><span class="o">&gt;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">International mile with &#39;int&#39; as representation</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">International mile with &#39;double&#39; as representation</span><span class="se">\n</span><span class="s">&quot;</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">&lt;</span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">&gt;</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">&lt;</span><span class="kt">int</span><span class="o">&gt;</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&#39;000&#39;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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">CGS units with &#39;int&#39; as representation</span><span class="se">\n</span><span class="s">&quot;</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&#39;000&#39;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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">CGS units with &#39;double&#39; as representation</span><span class="se">\n</span><span class="s">&quot;</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">&lt;</span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">&gt;</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">&lt;</span><span class="kt">int</span><span class="o">&gt;</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&#39;000&#39;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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">CGS units with &#39;int&#39; as representation</span><span class="se">\n</span><span class="s">&quot;</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&#39;000&#39;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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">CGS units with &#39;double&#39; as representation</span><span class="se">\n</span><span class="s">&quot;</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">&lt;</span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">&gt;</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">&lt;</span><span class="kt">int</span><span class="o">&gt;</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">&amp;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Unhandled std exception caught: &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</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">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39;\n&#39;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Unhandled unknown exception caught</span><span class="se">\n</span><span class="s">&quot;</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">&amp;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Unhandled std exception caught: &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</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">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39;\n&#39;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Unhandled unknown exception caught</span><span class="se">\n</span><span class="s">&quot;</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>

View File

@ -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">&lt;mp-units/compat_macros.h&gt;</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">&lt;mp-units/compat_macros.h&gt;</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">&lt;mp-units/ext/format.h&gt;</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">&lt;mp-units/format.h&gt;</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">&lt;mp-units/ostream.h&gt;</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">&lt;mp-units/systems/international.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;mp-units/systems/international.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">speed</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">length</span><span class="o">&gt;</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">&lt;</span><span class="n">isq</span><span class="o">::</span><span class="n">time</span><span class="o">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="kt">int</span><span class="o">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="kt">int</span><span class="o">&gt;</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> &amp; <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">&lt;&lt;</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39;\n&#39;</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">&lt;&lt;</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">&lt;&lt;</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">&#39;*&#39;</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">v2</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39;\n&#39;</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">&lt;&lt;</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">&quot;{:*^10}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;{:%N in %U of %D}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;{::N[.2f]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;{::N[.2f]U[dn]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;{:%N}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39;\n&#39;</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">&lt;&lt;</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">&lt;&lt;</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">&#39;*&#39;</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">v2</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39;\n&#39;</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">&lt;&lt;</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">&quot;{:*^10}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;{:%N in %U of %D}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;{::N[.2f]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;{::N[.2f]U[dn]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;{:%N}</span><span class="se">\n</span><span class="s">&quot;</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>

View File

@ -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">&lt;mp-units/compat_macros.h&gt;</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">&lt;mp-units/compat_macros.h&gt;</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">&lt;mp-units/ext/format.h&gt;</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">&lt;mp-units/format.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;</span><span class="n">voltage_hw_t</span><span class="o">&gt;::</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">&lt;</span><span class="n">voltage_hw_t</span><span class="o">&gt;::</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">&lt;</span><span class="n">point</span><span class="o">&lt;</span><span class="n">si</span><span class="o">::</span><span class="n">volt</span><span class="o">&gt;</span><span class="p">(</span><span class="n">min_voltage</span><span class="p">)</span><span class="o">&gt;</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">&lt;</span><span class="s">&quot;hwV&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">mag_ratio</span><span class="o">&lt;</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">&gt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="n">point</span><span class="o">&lt;</span><span class="n">si</span><span class="o">::</span><span class="n">volt</span><span class="o">&gt;</span><span class="p">(</span><span class="n">min_voltage</span><span class="p">)</span><span class="o">&gt;</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">&lt;</span><span class="s">&quot;hwV&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">mag_ratio</span><span class="o">&lt;</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">&gt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="n">hw_voltage_quantity_point</span><span class="o">&gt;</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">&lt;</span><span class="n">hw_voltage_unit</span><span class="o">&gt;</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">&lt;</span><span class="n">hw_voltage_quantity_point</span><span class="o">&gt;</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">&lt;</span><span class="n">hw_voltage_unit</span><span class="o">&gt;</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">&lt;&lt;</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">&quot;{:10} ({:5})&quot;</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">&lt;</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">&gt;</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">&lt;&lt;</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">&quot;{:10} ({:5})&quot;</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">&lt;</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">&gt;</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)

View File

@ -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">&lt;mp-units/compat_macros.h&gt;</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">&lt;mp-units/compat_macros.h&gt;</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">&lt;mp-units/ext/format.h&gt;</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">&lt;mp-units/format.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;The seven defining constants of the SI and the seven corresponding units they define:</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;- hyperfine transition frequency of Cs: {} = {::N[.0]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;- speed of light in vacuum: {} = {::N[.0]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;- Planck constant: {} = {::N[.8e]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;- elementary charge: {} = {::N[.9e]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;- Boltzmann constant: {} = {::N[.6e]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;- Avogadro constant: {} = {::N[.8e]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;- luminous efficacy: {} = {}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;The seven defining constants of the SI and the seven corresponding units they define:</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;- hyperfine transition frequency of Cs: {} = {::N[.0]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;- speed of light in vacuum: {} = {::N[.0]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;- Planck constant: {} = {::N[.8e]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;- elementary charge: {} = {::N[.9e]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;- Boltzmann constant: {} = {::N[.6e]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;- Avogadro constant: {} = {::N[.8e]}</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&quot;- luminous efficacy: {} = {}</span><span class="se">\n</span><span class="s">&quot;</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

View File

@ -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">&lt;mp-units/format.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;print&gt;</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">&lt;</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">&gt;</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">quantity</span><span class="o">&lt;</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="o">&gt;</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">&lt;</span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="o">&gt;</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">&quot;A car driving {} in {} has an average speed of {::N[.4]} ({::N[.4]})&quot;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;print&gt;</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">&lt;</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">&gt;</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">quantity</span><span class="o">&lt;</span><span class="n">si</span><span class="o">::</span><span class="n">metre</span><span class="o">&gt;</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">&lt;</span><span class="n">si</span><span class="o">::</span><span class="n">second</span><span class="o">&gt;</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">&quot;A car driving {} in {} has an average speed of {::N[.4]} ({::N[.4]})&quot;</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">&para;</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">&lt;mp-units/format.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;print&gt;</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">&lt;</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">&gt;</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">quantity</span><span class="o">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&quot;A car driving {} in {} has an average speed of {::N[.4]} ({::N[.4]})&quot;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;print&gt;</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">&lt;</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">&gt;</span><span class="w"> </span><span class="n">avg_speed</span><span class="p">(</span><span class="n">quantity</span><span class="o">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&quot;A car driving {} in {} has an average speed of {::N[.4]} ({::N[.4]})&quot;</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>

View File

@ -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">&lt;mp-units/format.h&gt;</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">&lt;mp-units/ostream.h&gt;</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">&lt;mp-units/systems/international.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;format&gt;</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">&lt;iostream&gt;</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">&lt;mp-units/systems/international.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;format&gt;</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">&lt;iostream&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;&lt;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</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">&lt;mp-units/format.h&gt;</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">&lt;mp-units/ostream.h&gt;</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">&lt;mp-units/systems/international.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;fmt/format.h&gt;</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">&lt;iostream&gt;</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">&lt;mp-units/systems/international.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;fmt/format.h&gt;</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">&lt;iostream&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;&lt;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</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">&lt;mp-units/compat_macros.h&gt;</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">&lt;mp-units/format.h&gt;</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">&lt;mp-units/ostream.h&gt;</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">&lt;mp-units/systems/international.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;mp-units/systems/international.h&gt;</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">&lt;mp-units/systems/isq.h&gt;</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">&lt;mp-units/systems/si.h&gt;</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">&lt;&lt;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</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">&lt;&lt;</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">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span>
</span></code></pre></div>
</div>
</div>