blob: 877dd5997c75e794bb3fec5ed8b7004486dee320 [file] [log] [blame]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Reference</title>
<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
<link rel="up" href="../chrono.html" title="Chapter&#160;4.&#160;Boost.Chrono 1.1.0">
<link rel="prev" href="users_guide.html" title="User's Guide">
<link rel="next" href="appendices.html" title="Appendices">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
<td align="center"><a href="../../../index.html">Home</a></td>
<td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="users_guide.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../chrono.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="appendices.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="chrono.reference"></a><a class="link" href="reference.html" title="Reference">Reference </a>
</h2></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x">Included on the C++0x Recommendation</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.io">Chrono I/O</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.other_clocks">Other Clocks</a></span></dt>
</dl></div>
<p>
As <code class="computeroutput"><span class="identifier">constexpr</span></code> will not be supported
by some compilers, it is replaced in the code by BOOST_CHRONO_CONSTEXPR for
constexpr functions and BOOST_CHRONO_STATIC_CONSTEXPR for struct/class static
fields. The documentation doesn't use these macros.
</p>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="chrono.reference.cpp0x"></a><a class="link" href="reference.html#chrono.reference.cpp0x" title="Included on the C++0x Recommendation">Included on the C++0x Recommendation</a>
</h3></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.chrono_hpp">Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.duration_hpp">Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">duration</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.clock"><code class="computeroutput"><span class="identifier">Clock</span></code>
Requirements</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.time_point_hpp">Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">time_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.system_clocks_hpp">Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">system_clocks</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.chrono_typeof_hpp">Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="chrono.reference.cpp0x.chrono_hpp"></a><a class="link" href="reference.html#chrono.reference.cpp0x.chrono_hpp" title="Header &lt;boost/chrono.hpp&gt;">Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
</h4></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.chrono_hpp.limitations">Limitations
and Extensions</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.chrono_hpp.conf">Configuration
Macros</a></span></dt>
</dl></div>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">duration</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">time_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">system_clocks</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
</pre>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.chrono_hpp.limitations"></a><a class="link" href="reference.html#chrono.reference.cpp0x.chrono_hpp.limitations" title="Limitations and Extensions">Limitations
and Extensions</a>
</h5></div></div></div>
<p>
Next follows limitation respect to the C++0x recomendations:
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
constexpr not tested yet.
</li>
<li class="listitem">
The recently steady_clock approved is not yet included.
</li>
</ul></div>
<p>
The current implementation provides in addition:
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
clock error handling as specified in <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3135.html#935" target="_top">clock
error handling needs to be specified</a>.
</li>
<li class="listitem">
process and thread clocks.
</li>
</ul></div>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.chrono_hpp.conf"></a><a class="link" href="reference.html#chrono.reference.cpp0x.chrono_hpp.conf" title="Configuration Macros">Configuration
Macros</a>
</h5></div></div></div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.chrono_hpp.conf.assert"></a><a class="link" href="reference.html#chrono.reference.cpp0x.chrono_hpp.conf.assert" title="How Assert Behaves?">How
Assert Behaves?</a>
</h6></div></div></div>
<p>
When <code class="computeroutput"><span class="identifier">BOOST_NO_STATIC_ASSERT</span></code>
is defined, the user can select the way static assertions are reported.
Define
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_CHRONO_USES_STATIC_ASSERT</span></code>:
define it if you want to use Boost.StaticAssert.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_CHRONO_USES_MPL_ASSERT</span></code>:
define it if you want to use Boost.MPL static asertions.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">BOOST_CHRONO_USES_ARRAY_ASSERT</span></code>:
define it if you want to use internal static asertions.
</li>
</ul></div>
<p>
The default behavior is as <code class="computeroutput"><span class="identifier">BOOST_CHRONO_USES_ARRAY_ASSERT</span></code>
was defined.
</p>
<p>
When <code class="computeroutput"><span class="identifier">BOOST_CHRONO_USES_MPL_ASSERT</span></code>
is not defined the following symbols are defined as
</p>
<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_CHRONO_A_DURATION_REPRESENTATION_CAN_NOT_BE_A_DURATION</span> <span class="special">\</span>
<span class="string">"A duration representation can not be a duration"</span>
<span class="preprocessor">#define</span> <span class="identifier">BOOST_CHRONO_SECOND_TEMPLATE_PARAMETER_OF_DURATION_MUST_BE_A_STD_RATIO</span> <span class="special">\</span>
<span class="string">"Second template parameter of duration must be a boost::ratio"</span>
<span class="preprocessor">#define</span> <span class="identifier">BOOST_CHRONO_DURATION_PERIOD_MUST_BE_POSITIVE</span> <span class="special">\</span>
<span class="string">"duration period must be positive"</span>
<span class="preprocessor">#define</span> <span class="identifier">BOOST_CHRONO_SECOND_TEMPLATE_PARAMETER_OF_TIME_POINT_MUST_BE_A_BOOST_CHRONO_DURATION</span> <span class="special">\</span>
<span class="string">"Second template parameter of time_point must be a boost::chrono::duration"</span>
</pre>
<p>
Depending on the static assertion used system you will have an hint
of the failing assertion either through the symbol or through the text.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.chrono_hpp.conf.header_only"></a><a class="link" href="reference.html#chrono.reference.cpp0x.chrono_hpp.conf.header_only" title="How to Build Boost.Chrono as a Header Only Library?">How
to Build Boost.Chrono as a Header Only Library?</a>
</h6></div></div></div>
<p>
When <code class="computeroutput"><span class="identifier">BOOST_CHRONO_HEADER_ONLY</span></code>
is defined the lib is header-only.
</p>
<p>
If in addition <code class="computeroutput"><span class="identifier">BOOST_USE_WINDOWS_H</span></code>
is defined <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">windows</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code> is included, otherwise files in
<code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">win</span></code> are used to reduce the impact
of including <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">windows</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>.
</p>
</div>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="chrono.reference.cpp0x.duration_hpp"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp" title="Header &lt;boost/chrono/duration.hpp&gt;">Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">duration</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
</h4></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.duration_hpp.traits">Time-related
Traits</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.duration_hpp.common_type_spe"><code class="computeroutput"><span class="identifier">common_type</span></code> Specialization</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.duration_hpp.duration">Class
Template <code class="computeroutput"><span class="identifier">duration</span><span class="special">&lt;&gt;</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic"><code class="computeroutput"><span class="identifier">duration</span></code> Non-Member Arithmetic</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons"><code class="computeroutput"><span class="identifier">duration</span></code> Non-Member Comparaisons</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_cast">Non-Member
Function <code class="computeroutput"><span class="identifier">duration_cast</span><span class="special">(</span><span class="identifier">duration</span><span class="special">)</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_typedefs"><code class="computeroutput"><span class="identifier">duration</span></code> typedefs</a></span></dt>
</dl></div>
<p>
This file contains duration specific classes and non-member functions.
</p>
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
<span class="keyword">namespace</span> <span class="identifier">chrono</span> <span class="special">{</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span> <span class="special">=</span> <code class="computeroutput"><span class="identifier">ratio</span></code><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="keyword">class</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">;</span>
<span class="special">}</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.common_type_spe" title="common_type Specialization"><code class="computeroutput"><span class="identifier">common_type</span></code></a><span class="special">&lt;</span><span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;,</span>
<span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;</span> <span class="special">&gt;;</span>
<span class="keyword">namespace</span> <span class="identifier">chrono</span> <span class="special">{</span>
<span class="comment">// customization traits</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.treat_as_floating_point" title="Metafunction treat_as_floating_point&lt;&gt;"><code class="computeroutput"><span class="identifier">treat_as_floating_point</span></code></a><span class="special">;</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.duration_values" title="Class Template duration_values"><code class="computeroutput"><span class="identifier">duration_values</span></code></a><span class="special">;</span>
<span class="comment">// duration arithmetic</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">typename</span> <span class="identifier">common_type</span><span class="special">&lt;</span><span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;,</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span>
<span class="keyword">operator</span><span class="special">+(</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">typename</span> <span class="identifier">common_type</span><span class="special">&lt;</span><span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;,</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span>
<span class="keyword">operator</span><span class="special">-(</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">&gt;</span>
<span class="identifier">duration</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">common_type</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Rep2</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="keyword">operator</span><span class="special">*(</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">Rep2</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">&gt;</span>
<span class="identifier">duration</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">common_type</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Rep2</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="keyword">operator</span><span class="special">*(</span>
<span class="keyword">const</span> <span class="identifier">Rep1</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">&gt;</span>
<span class="identifier">duration</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">common_type</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Rep2</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="keyword">operator</span><span class="special">/(</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">Rep2</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">typename</span> <span class="identifier">common_type</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Rep2</span><span class="special">&gt;::</span><span class="identifier">type</span>
<span class="keyword">operator</span><span class="special">/(</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="preprocessor">#ifdef</span> <span class="identifier">BOOST_CHRONO_EXTENSIONS</span>
<span class="comment">// Used to get frecuency of events</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="keyword">double</span> <span class="keyword">operator</span><span class="special">/(</span>
<span class="keyword">const</span> <span class="identifier">Rep1</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">);</span>
<span class="preprocessor">#endif</span>
<span class="comment">// duration comparisons</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;(</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;=(</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&gt;</span> <span class="special">(</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&gt;=(</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="comment">// duration_cast</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">ToDuration</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="identifier">ToDuration</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_cast" title="Non-Member Function duration_cast(duration)"><code class="computeroutput"><span class="identifier">duration_cast</span></code></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">);</span>
<span class="comment">// convenience typedefs</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least64_t</span><span class="special">,</span> <span class="identifier">nano</span><span class="special">&gt;</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_typedefs" title="duration typedefs"><code class="computeroutput"><span class="identifier">nanoseconds</span></code></a><span class="special">;</span> <span class="comment">// at least 64 bits needed</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least64_t</span><span class="special">,</span> <span class="identifier">micro</span><span class="special">&gt;</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_typedefs" title="duration typedefs"><code class="computeroutput"><span class="identifier">microseconds</span></code></a><span class="special">;</span> <span class="comment">// at least 55 bits needed</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least64_t</span><span class="special">,</span> <span class="identifier">milli</span><span class="special">&gt;</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_typedefs" title="duration typedefs"><code class="computeroutput"><span class="identifier">milliseconds</span></code></a><span class="special">;</span> <span class="comment">// at least 45 bits needed</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least64_t</span><span class="special">&gt;</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_typedefs" title="duration typedefs"><code class="computeroutput"><span class="identifier">seconds</span></code></a><span class="special">;</span> <span class="comment">// at least 35 bits needed</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least32_t</span><span class="special">,</span> <span class="identifier">ratio</span><span class="special">&lt;</span> <span class="number">60</span><span class="special">&gt;</span> <span class="special">&gt;</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_typedefs" title="duration typedefs"><code class="computeroutput"><span class="identifier">minutes</span></code></a><span class="special">;</span> <span class="comment">// at least 29 bits needed</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least32_t</span><span class="special">,</span> <span class="identifier">ratio</span><span class="special">&lt;</span><span class="number">3600</span><span class="special">&gt;</span> <span class="special">&gt;</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_typedefs" title="duration typedefs"><code class="computeroutput"><span class="identifier">hours</span></code></a><span class="special">;</span> <span class="comment">// at least 23 bits needed</span>
<span class="special">}</span>
<span class="special">}</span>
</pre>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.traits"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits" title="Time-related Traits">Time-related
Traits</a>
</h5></div></div></div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.traits.treat_as_floating_point"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.treat_as_floating_point" title="Metafunction treat_as_floating_point&lt;&gt;">Metafunction
<code class="computeroutput"><span class="identifier">treat_as_floating_point</span><span class="special">&lt;&gt;</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">treat_as_floating_point</span>
<span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_floating_point</span><span class="special">&lt;</span><span class="identifier">Rep</span><span class="special">&gt;</span> <span class="special">{};</span>
</pre>
<p>
The <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> template uses the
<a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.treat_as_floating_point" title="Metafunction treat_as_floating_point&lt;&gt;"><code class="computeroutput"><span class="identifier">treat_as_floating_point</span></code></a> trait
to help determine if a <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> with one tick period
can be converted to another <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> with a different
tick period. If <code class="computeroutput"><span class="identifier">treat_as_floating_point</span><span class="special">&lt;</span><span class="identifier">Rep</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
is <code class="computeroutput"><span class="keyword">true</span></code>, then <code class="computeroutput"><span class="identifier">Rep</span></code> is a floating-point type and
implicit conversions are allowed among <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>s. Otherwise, the
implicit convertibility depends on the tick periods of the <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>s. If <code class="computeroutput"><span class="identifier">Rep</span></code> is a class type which emulates
a floating-point type, the author of <code class="computeroutput"><span class="identifier">Rep</span></code>
can specialize <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.treat_as_floating_point" title="Metafunction treat_as_floating_point&lt;&gt;"><code class="computeroutput"><span class="identifier">treat_as_floating_point</span></code></a> so
that <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> will treat this
<code class="computeroutput"><span class="identifier">Rep</span></code> as if it were a
floating-point type. Otherwise <code class="computeroutput"><span class="identifier">Rep</span></code>
is assumed to be an integral type, or a class emulating an integral
type.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.traits.duration_values"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.duration_values" title="Class Template duration_values">Class
Template <code class="computeroutput"><span class="identifier">duration_values</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">duration_values</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">Rep</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.duration_values.zero" title="Static Member Function zero()"><code class="computeroutput"><span class="identifier">zero</span></code></a><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">Rep</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.duration_values.max" title="Static Member Function max()"><code class="computeroutput"><span class="identifier">max</span></code></a><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">Rep</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.duration_values.min" title="Static Member Function min()"><code class="computeroutput"><span class="identifier">min</span></code></a><span class="special">();</span>
<span class="special">};</span>
</pre>
<p>
The <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> template uses the
<a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.duration_values" title="Class Template duration_values"><code class="computeroutput"><span class="identifier">duration_values</span></code></a> trait to construct
special values of the <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>'s representation
(<code class="computeroutput"><span class="identifier">Rep</span></code>). This is done
because the representation might be a class type with behavior which
requires some other implementation to return these special values.
In that case, the author of that class type should specialize <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.duration_values" title="Class Template duration_values"><code class="computeroutput"><span class="identifier">duration_values</span></code></a> to return
the indicated values.
</p>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.traits.duration_values.zero"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.duration_values.zero" title="Static Member Function zero()">Static
Member Function <code class="computeroutput"><span class="identifier">zero</span><span class="special">()</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">Rep</span> <span class="identifier">zero</span><span class="special">();</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">Rep</span><span class="special">(</span><span class="number">0</span><span class="special">)</span></code>. <span class="bold"><strong>Note:</strong></span>
<code class="computeroutput"><span class="identifier">Rep</span><span class="special">(</span><span class="number">0</span><span class="special">)</span></code>
is specified instead of <code class="computeroutput"><span class="identifier">Rep</span><span class="special">()</span></code> since <code class="computeroutput"><span class="identifier">Rep</span><span class="special">()</span></code> may have some other meaning, such
as an uninitialized value.
</p>
<p>
<span class="bold"><strong>Remarks:</strong></span> The value returned corresponds
to the additive identity.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.traits.duration_values.max"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.duration_values.max" title="Static Member Function max()">Static
Member Function <code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">Rep</span> <span class="identifier">max</span><span class="special">();</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">Rep</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">()</span></code>.
</p>
<p>
<span class="bold"><strong>Remarks:</strong></span> The value returned compares
greater than zero().
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.traits.duration_values.min"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.duration_values.min" title="Static Member Function min()">Static
Member Function <code class="computeroutput"><span class="identifier">min</span><span class="special">()</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">Rep</span> <span class="identifier">min</span><span class="special">();</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">Rep</span><span class="special">&gt;::</span><span class="identifier">lowest</span><span class="special">()</span></code>.
</p>
<p>
<span class="bold"><strong>Remarks:</strong></span> The value returned compares
less than or equal to <code class="computeroutput"><span class="identifier">zero</span><span class="special">()</span></code>.
</p>
</div>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.common_type_spe"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.common_type_spe" title="common_type Specialization"><code class="computeroutput"><span class="identifier">common_type</span></code> Specialization</a>
</h5></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><span class="identifier">chrono</span><span class="special">::</span><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;,</span> <span class="identifier">chrono</span><span class="special">::</span><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="keyword">typedef</span> <span class="identifier">chrono</span><span class="special">::</span><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="keyword">typename</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Rep2</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span> <span class="emphasis"><em>see bellow</em></span><span class="special">&gt;</span> <span class="identifier">type</span><span class="special">;</span>
<span class="special">};</span>
</pre>
<p>
The period of the <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> indicated by this specialization
of <code class="computeroutput"><span class="identifier">common_type</span></code> is the
greatest common divisor of <code class="computeroutput"><span class="identifier">Period1</span></code>
and <code class="computeroutput"><span class="identifier">Period2</span></code>. This can
be computed by forming a <code class="computeroutput"><span class="identifier">ratio</span></code>
of the greatest common divisor of <code class="computeroutput"><span class="identifier">Period1</span><span class="special">::</span><span class="identifier">num</span></code>
and <code class="computeroutput"><span class="identifier">Period2</span><span class="special">::</span><span class="identifier">num</span></code>, and the least common multiple
of <code class="computeroutput"><span class="identifier">Period1</span><span class="special">::</span><span class="identifier">den</span></code> and <code class="computeroutput"><span class="identifier">Period2</span><span class="special">::</span><span class="identifier">den</span></code>.
</p>
<p>
<span class="bold"><strong>Note:</strong></span> The typedef type is the <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> with the largest tick
period possible where both <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> arguments will convert
to it without requiring a division operation. The representation of this
type is intended to be able to hold any value resulting from this conversion,
with the possible exception of round-off error when floating-point <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>s are involved (but
not truncation error).
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;">Class
Template <code class="computeroutput"><span class="identifier">duration</span><span class="special">&lt;&gt;</span></code></a>
</h5></div></div></div>
<p>
A <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> measures time between
two points in time (<a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a>). A <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> has a representation
which holds a count of ticks, and a tick period. The tick period is the
amount of time which occurs from one tick to another in units of a second.
It is expressed as a rational constant using <code class="computeroutput"><span class="identifier">ratio</span></code>.
</p>
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">chrono</span> <span class="special">{</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">duration</span> <span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="keyword">typedef</span> <span class="identifier">Rep</span> <span class="identifier">rep</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">Period</span> <span class="identifier">period</span><span class="special">;</span>
<span class="keyword">private</span><span class="special">:</span>
<span class="identifier">rep</span> <span class="identifier">rep_</span><span class="special">;</span> <span class="comment">// exposition only</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="identifier">constexpr</span> <span class="identifier">duration</span><span class="special">();</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="keyword">explicit</span> <span class="identifier">duration</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Rep2</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="identifier">duration</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">);</span>
<span class="identifier">duration</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;)</span> <span class="special">=</span> <span class="keyword">default</span><span class="special">;</span>
<span class="identifier">constexpr</span> <span class="identifier">rep</span> <span class="identifier">count</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
<span class="identifier">constexpr</span> <span class="identifier">duration</span> <span class="keyword">operator</span><span class="special">+();</span>
<span class="identifier">constexpr</span> <span class="identifier">duration</span> <span class="keyword">operator</span><span class="special">-();</span>
<span class="identifier">duration</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">++();</span>
<span class="identifier">duration</span> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
<span class="identifier">duration</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">--();</span>
<span class="identifier">duration</span> <span class="keyword">operator</span><span class="special">--(</span><span class="keyword">int</span><span class="special">);</span>
<span class="identifier">duration</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;</span> <span class="identifier">d</span><span class="special">);</span>
<span class="identifier">duration</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">-=(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;</span> <span class="identifier">d</span><span class="special">);</span>
<span class="identifier">duration</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">*=(</span><span class="keyword">const</span> <span class="identifier">rep</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="identifier">duration</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">/=(</span><span class="keyword">const</span> <span class="identifier">rep</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="identifier">duration</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">%=(</span><span class="keyword">const</span> <span class="identifier">rep</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="identifier">duration</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">%=(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">duration</span> <span class="identifier">zero</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">duration</span> <span class="identifier">min</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">duration</span> <span class="identifier">max</span><span class="special">();</span>
<span class="special">};</span>
<span class="special">}}</span>
</pre>
<p>
<code class="computeroutput"><span class="identifier">Rep</span></code> must be an arithmetic
type, or a class emulating an arithmetic type, compile diagnostic otherwise.
If <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> is instantiated with
the type of <code class="computeroutput"><span class="identifier">Rep</span></code> being
a <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>, compile diagnostic
is issued.
</p>
<p>
<code class="computeroutput"><span class="identifier">Period</span></code> must be an instantiation
of <code class="computeroutput"><span class="identifier">ratio</span></code>, compile diagnostic
otherwise.
</p>
<p>
<code class="computeroutput"><span class="identifier">Period</span><span class="special">::</span><span class="identifier">num</span></code> must be positive, compile diagnostic
otherwise.
</p>
<p>
Examples:
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="keyword">long</span><span class="special">,</span> <code class="computeroutput"><span class="identifier">ratio</span></code><span class="special">&lt;</span><span class="number">60</span><span class="special">&gt;</span> <span class="special">&gt;</span></code> holds a count of minutes using
a long.
</li>
<li class="listitem">
<code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">long</span><span class="special">,</span> <span class="identifier">milli</span><span class="special">&gt;</span></code> holds a count of milliseconds
using a long long.
</li>
<li class="listitem">
<code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span>
<code class="computeroutput"><span class="identifier">ratio</span></code><span class="special">&lt;</span><span class="number">1</span><span class="special">,</span> <span class="number">30</span><span class="special">&gt;</span> <span class="special">&gt;</span></code> holds a count using a double
with a tick period of 1/30 second (a tick frequency of 30 Hz).
</li>
</ul></div>
<p>
The following members of <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> do not throw an exception
unless the indicated operations on the representations throw an exception.
</p>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_c_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_c_1" title="Constructor duration(const Rep2&amp;)">Constructor
<code class="computeroutput"><span class="identifier">duration</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Rep2</span><span class="special">&amp;)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="keyword">explicit</span> <span class="identifier">duration</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Rep2</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Remarks:</strong></span> <code class="computeroutput"><span class="identifier">Rep2</span></code>
is implicitly convertible to <code class="computeroutput"><span class="identifier">rep</span></code>,
and
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<code class="computeroutput"><span class="identifier">treat_as_floating_point</span><span class="special">&lt;</span><span class="identifier">rep</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
is <code class="computeroutput"><span class="keyword">true</span></code>, or
</li>
<li class="listitem">
<code class="computeroutput"><span class="special">!</span><span class="identifier">treat_as_floating_point</span><span class="special">&lt;</span><span class="identifier">rep</span><span class="special">&gt;::</span><span class="identifier">value</span>
<span class="special">&amp;&amp;</span> <span class="special">!</span><span class="identifier">treat_as_floating_point</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>.
</li>
</ul></div>
<p>
If these constraints are not met, this constructor will not participate
in overload resolution. <span class="bold"><strong>Note:</strong></span> This
requirement prevents construction of an integral-based <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> with a floating-point
representation. Such a construction could easily lead to confusion
about the value of the <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>.
</p>
<p>
<span class="bold"><strong>Example:</strong></span>
</p>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">milli</span><span class="special">&gt;</span> <span class="identifier">d</span><span class="special">(</span><span class="number">3.5</span><span class="special">);</span> <span class="comment">// do not compile</span>
<a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">milli</span><span class="special">&gt;</span> <span class="identifier">d</span><span class="special">(</span><span class="number">3</span><span class="special">);</span> <span class="comment">// ok</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> Constructs an object of type
<a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>.
</p>
<p>
<span class="bold"><strong>PostConditions:</strong></span> <code class="computeroutput"><span class="identifier">count</span><span class="special">()</span> <span class="special">==</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">rep</span><span class="special">&gt;(</span><span class="identifier">r</span><span class="special">)</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_c_2"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_c_2" title="Constructor duration(const duration&amp;)">Constructor
<code class="computeroutput"><span class="identifier">duration</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Remarks:</strong></span> <code class="computeroutput"><span class="identifier">treat_as_floating_point</span><span class="special">&lt;</span><span class="identifier">rep</span><span class="special">&gt;::</span><span class="identifier">value</span></code>,
or <code class="computeroutput"><span class="identifier">ratio_divide</span><span class="special">&lt;</span><span class="identifier">Period2</span><span class="special">,</span>
<span class="identifier">period</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">::</span><span class="identifier">den</span> <span class="special">==</span>
<span class="number">1</span></code>, else this constructor will
not participate in overload resolution. <span class="bold"><strong>note</strong></span>
This requirement prevents implicit truncation error when converting
between integral-based <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>s. Such a construction
could easily lead to confusion about the value of the <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>.
</p>
<p>
<span class="bold"><strong>Example:</strong></span>
</p>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">milli</span><span class="special">&gt;</span> <span class="identifier">ms</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
<a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">micro</span><span class="special">&gt;</span> <span class="identifier">us</span> <span class="special">=</span> <span class="identifier">ms</span><span class="special">;</span> <span class="comment">// ok</span>
<a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">milli</span><span class="special">&gt;</span> <span class="identifier">ms2</span> <span class="special">=</span> <span class="identifier">us</span><span class="special">;</span> <span class="comment">// do not compile</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> Constructs an object of type
<a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>, constructing <code class="computeroutput"><span class="identifier">rep_</span></code> from <code class="computeroutput"><span class="identifier">duration_cast</span><span class="special">&lt;</span><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&gt;(</span><span class="identifier">d</span><span class="special">).</span><span class="identifier">count</span><span class="special">()</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.count"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.count" title="Member Function count() const">Member
Function <code class="computeroutput"><span class="identifier">count</span><span class="special">()</span>
<span class="keyword">const</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="identifier">constexpr</span> <span class="identifier">rep</span> <span class="identifier">count</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">rep_</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_operator_p"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_operator_p" title="Member Function operator+() const">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">+()</span>
<span class="keyword">const</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="identifier">constexpr</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> <span class="keyword">operator</span><span class="special">+()</span> <span class="keyword">const</span><span class="special">;</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_operator_m"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_operator_m" title="Member Function operator-() const">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">-()</span>
<span class="keyword">const</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="identifier">constexpr</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> <span class="keyword">operator</span><span class="special">-()</span> <span class="keyword">const</span><span class="special">;</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">(-</span><span class="identifier">rep_</span><span class="special">)</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_operator_pp"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_operator_pp" title="Member Function operator++()">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">++()</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">++();</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> <code class="computeroutput"><span class="special">++</span><span class="identifier">rep_</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_operator_pp2"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_operator_pp2" title="Member Function operator++(int)">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">(</span><span class="identifier">rep_</span><span class="special">++)</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_operator_mm"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_operator_mm" title="Member Function operator--()">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">--()</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">--();</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> <code class="computeroutput"><span class="special">--</span><span class="identifier">rep_</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_operator_mm2"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_operator_mm2" title="Member Function operator--(int)">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">--(</span><span class="keyword">int</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> <span class="keyword">operator</span><span class="special">--(</span><span class="keyword">int</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">(</span><span class="identifier">rep_</span><span class="special">--)</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_operator_pa"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_operator_pa" title="Member Function operator+=(const duration&amp;)">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">+=(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&amp;</span> <span class="identifier">d</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> <code class="computeroutput"><span class="identifier">rep_</span>
<span class="special">+=</span> <span class="identifier">d</span><span class="special">.</span><span class="identifier">count</span><span class="special">()</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_operator_ma"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_operator_ma" title="Member Function operator-=(const duration&amp;)">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">-=(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">-=(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&amp;</span> <span class="identifier">d</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> <code class="computeroutput"><span class="identifier">rep_</span>
<span class="special">-=</span> <span class="identifier">d</span><span class="special">.</span><span class="identifier">count</span><span class="special">()</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_operator_moda"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_operator_moda" title="Member Function operator%=(const duration&amp;)">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">%=(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">%=(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&amp;</span> <span class="identifier">d</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> <code class="computeroutput"><span class="identifier">rep_</span>
<span class="special">%=</span> <span class="identifier">d</span><span class="special">.</span><span class="identifier">count</span><span class="special">()</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_operator_proda"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_operator_proda" title="Member Function operator*=(const rep&amp;)">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">*=(</span><span class="keyword">const</span> <span class="identifier">rep</span><span class="special">&amp;)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">*=(</span><span class="keyword">const</span> <span class="identifier">rep</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> <code class="computeroutput"><span class="identifier">rep_</span>
<span class="special">*=</span> <span class="identifier">rhs</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_operator_da"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_operator_da" title="Member Function operator/=(const rep&amp;)">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">/=(</span><span class="keyword">const</span> <span class="identifier">rep</span><span class="special">&amp;)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">/=(</span><span class="keyword">const</span> <span class="identifier">rep</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> <code class="computeroutput"><span class="identifier">rep_</span>
<span class="special">/=</span> <span class="identifier">rhs</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_operator_moda_2"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_operator_moda_2" title="Member Function operator%=(const rep&amp;)">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">%=(</span><span class="keyword">const</span> <span class="identifier">rep</span><span class="special">&amp;)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">%=(</span><span class="keyword">const</span> <span class="identifier">rep</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> <code class="computeroutput"><span class="identifier">rep_</span>
<span class="special">%=</span> <span class="identifier">rhs</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_zero"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_zero" title="Static Member Function zero()">Static
Member Function <code class="computeroutput"><span class="identifier">zero</span><span class="special">()</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">constexpr</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> <span class="identifier">zero</span><span class="special">();</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">(</span><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.duration_values" title="Class Template duration_values"><code class="computeroutput"><span class="identifier">duration_values</span></code></a><span class="special">&lt;</span><span class="identifier">rep</span><span class="special">&gt;::</span><span class="identifier">zero</span><span class="special">())</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_min"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_min" title="Static Member Function min()">Static
Member Function <code class="computeroutput"><span class="identifier">min</span><span class="special">()</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">constexpr</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> <span class="identifier">min</span><span class="special">();</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">(</span><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.duration_values" title="Class Template duration_values"><code class="computeroutput"><span class="identifier">duration_values</span></code></a><span class="special">&lt;</span><span class="identifier">rep</span><span class="special">&gt;::</span><span class="identifier">min</span><span class="special">()).</span></code>
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration.duration_max"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration.duration_max" title="Static Member Function max()">Static
Member Function <code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">constexpr</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> <span class="identifier">max</span><span class="special">();</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">(</span><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.duration_values" title="Class Template duration_values"><code class="computeroutput"><span class="identifier">duration_values</span></code></a><span class="special">&lt;</span><span class="identifier">rep</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">())</span></code>.
</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic" title="duration Non-Member Arithmetic"><code class="computeroutput"><span class="identifier">duration</span></code> Non-Member Arithmetic</a>
</h5></div></div></div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_p_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_p_1" title="Non-Member Function operator+(duration,duration)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">+(</span><span class="identifier">duration</span><span class="special">,</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">typename</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;,</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span>
<span class="keyword">operator</span><span class="special">+(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">CD</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">rhs</span></code> where <code class="computeroutput"><span class="identifier">CD</span></code>
is the type of the return value.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_m_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_m_1" title="Non-Member Function operator-(duration,duration)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">-(</span><span class="identifier">duration</span><span class="special">,</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">typename</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;,</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span>
<span class="keyword">operator</span><span class="special">-(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">CD</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">-=</span> <span class="identifier">rhs</span></code> where <code class="computeroutput"><span class="identifier">CD</span></code>
is the type of the return value.
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">&gt;</span>
<a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="keyword">typename</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Rep2</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="keyword">operator</span><span class="special">*(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Rep2</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Requires:</strong></span> Let <code class="computeroutput"><span class="identifier">CR</span></code>
represent the <code class="computeroutput"><span class="identifier">common_type</span></code>
of <code class="computeroutput"><span class="identifier">Rep1</span></code> and <code class="computeroutput"><span class="identifier">Rep2</span></code>. This function will not participate
in overload resolution unless both <code class="computeroutput"><span class="identifier">Rep1</span></code>
and <code class="computeroutput"><span class="identifier">Rep2</span></code> are implicitly
convertible to <code class="computeroutput"><span class="identifier">CR</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">CR</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;(</span><span class="identifier">d</span><span class="special">)</span> <span class="special">*=</span> <span class="identifier">s</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_prod_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_prod_1" title="Non-Member Function operator*(Rep1,duration)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">*(</span><span class="identifier">Rep1</span><span class="special">,</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">&gt;</span>
<a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="keyword">typename</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Rep2</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="keyword">operator</span><span class="special">*(</span><span class="keyword">const</span> <span class="identifier">Rep1</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Requires:</strong></span> Let <code class="computeroutput"><span class="identifier">CR</span></code>
represent the <code class="computeroutput"><span class="identifier">common_type</span></code>
of <code class="computeroutput"><span class="identifier">Rep1</span></code> and <code class="computeroutput"><span class="identifier">Rep2</span></code>. This function will not participate
in overload resolution unless both <code class="computeroutput"><span class="identifier">Rep1</span></code>
and <code class="computeroutput"><span class="identifier">Rep2</span></code> are implicitly
convertible to <code class="computeroutput"><span class="identifier">CR</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">d</span>
<span class="special">*</span> <span class="identifier">s</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_d_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_d_1" title="Non-Member Function operator/(duration,Rep2)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">/(</span><span class="identifier">duration</span><span class="special">,</span><span class="identifier">Rep2</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">&gt;</span>
<a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="keyword">typename</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Rep2</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="keyword">operator</span><span class="special">/(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Rep2</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Requires:</strong></span> Let <code class="computeroutput"><span class="identifier">CR</span></code>
represent the <code class="computeroutput"><span class="identifier">common_type</span></code>
of <code class="computeroutput"><span class="identifier">Rep1</span></code> and <code class="computeroutput"><span class="identifier">Rep2</span></code>. This function will not participate
in overload resolution unless both <code class="computeroutput"><span class="identifier">Rep1</span></code>
and <code class="computeroutput"><span class="identifier">Rep2</span></code> are implicitly
convertible to <code class="computeroutput"><span class="identifier">CR</span></code>,
and <code class="computeroutput"><span class="identifier">Rep2</span></code> is not an
instantiation of <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">CR</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;(</span><span class="identifier">d</span><span class="special">)</span> <span class="special">/=</span> <span class="identifier">s</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_d_2"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_d_2" title="Non-Member Function operator/(duration,duration)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">/(</span><span class="identifier">duration</span><span class="special">,</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">typename</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Rep2</span><span class="special">&gt;::</span><span class="identifier">type</span>
<span class="keyword">operator</span><span class="special">/(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> Let <code class="computeroutput"><span class="identifier">CD</span></code>
represent the <code class="computeroutput"><span class="identifier">common_type</span></code>
of the two <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> arguments. Returns
<code class="computeroutput"><span class="identifier">CD</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">).</span><span class="identifier">count</span><span class="special">()</span>
<span class="special">/</span> <span class="identifier">CD</span><span class="special">(</span><span class="identifier">rhs</span><span class="special">).</span><span class="identifier">count</span><span class="special">()</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_d_3"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_d_3" title="Non-Member Function operator/(Rep1,duration)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">/(</span><span class="identifier">Rep1</span><span class="special">,</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h6></div></div></div>
<p>
Included only if BOOST_CHRONO_EXTENSIONS is defined.
</p>
<p>
This overloading could be used to get the frequency of an event counted
by <code class="computeroutput"><span class="identifier">Rep1</span></code>.
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="keyword">double</span> <span class="keyword">operator</span><span class="special">/(</span><span class="keyword">const</span> <span class="identifier">Rep1</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Remarks:</strong></span> Let <code class="computeroutput"><span class="identifier">CR</span></code>
represent the <code class="computeroutput"><span class="identifier">common_type</span></code>
of <code class="computeroutput"><span class="identifier">Rep1</span></code> and <code class="computeroutput"><span class="identifier">Rep2</span></code>. This function will not participate
in overload resolution unless both <code class="computeroutput"><span class="identifier">Rep1</span></code>
and <code class="computeroutput"><span class="identifier">Rep2</span></code> are implicitly
convertible to <code class="computeroutput"><span class="identifier">CR</span></code>,
and <code class="computeroutput"><span class="identifier">Rep1</span></code> is not an
instantiation of <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">CR</span><span class="special">(</span><span class="identifier">s</span><span class="special">)/</span><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">CR</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;(</span><span class="identifier">d</span><span class="special">).</span><span class="identifier">count</span><span class="special">()</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_mod_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_mod_1" title="Non-Member Function operator%(duration,Rep2)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">%(</span><span class="identifier">duration</span><span class="special">,</span><span class="identifier">Rep2</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">&gt;</span>
<a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="keyword">typename</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Rep2</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="keyword">operator</span><span class="special">%(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Rep2</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Remarks</strong></span> This function will not participate
in overload resolution unless Rep2 must be implicitly convertible to
CR(Rep1, Rep2) and Rep2 must not be an instantiation of <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>&lt;CR(Rep1,Rep2),
Period&gt;(d) %= s.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_mod_2"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_arithmetic.duration_operator_mod_2" title="Non-Member Function operator%(duration,duration)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">%(</span><span class="identifier">duration</span><span class="special">,</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">typename</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;,</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span>
<span class="keyword">operator</span><span class="special">%(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Remarks</strong></span> This function will not participate
in overload resolution unless
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> CD(lhs) %= CD(rhs)
</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons" title="duration Non-Member Comparaisons"><code class="computeroutput"><span class="identifier">duration</span></code> Non-Member Comparaisons</a>
</h5></div></div></div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons.duration_operator_eq_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons.duration_operator_eq_1" title="Non-Member Function operator==(duration,duration)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">==(</span><span class="identifier">duration</span><span class="special">,</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> Let <code class="computeroutput"><span class="identifier">CD</span></code>
represent the <code class="computeroutput"><span class="identifier">common_type</span></code>
of the two <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> arguments. Returns
<code class="computeroutput"><span class="identifier">CD</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">).</span><span class="identifier">count</span><span class="special">()</span>
<span class="special">==</span> <span class="identifier">CD</span><span class="special">(</span><span class="identifier">rhs</span><span class="special">).</span><span class="identifier">count</span><span class="special">()</span></code>
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons.duration_operator_neq_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons.duration_operator_neq_1" title="Non-Member Function operator!=(duration,duration)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">!=(</span><span class="identifier">duration</span><span class="special">,</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">!(</span><span class="identifier">lhs</span> <span class="special">==</span>
<span class="identifier">rhs</span><span class="special">)</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons.duration_operator_lt_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons.duration_operator_lt_1" title="Non-Member Function operator&lt;(duration,duration)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;(</span><span class="identifier">duration</span><span class="special">,</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;</span> <span class="special">(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> Let <code class="computeroutput"><span class="identifier">CD</span></code>
represent the <code class="computeroutput"><span class="identifier">common_type</span></code>
of the two <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> arguments. Returns
<code class="computeroutput"><span class="identifier">CD</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">).</span><span class="identifier">count</span><span class="special">()</span>
<span class="special">&lt;</span> <span class="identifier">CD</span><span class="special">(</span><span class="identifier">rhs</span><span class="special">).</span><span class="identifier">count</span><span class="special">()</span></code>
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons.duration_operator_leq_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons.duration_operator_leq_1" title="Non-Member Function operator&lt;=(duration,duration)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;=(</span><span class="identifier">duration</span><span class="special">,</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;=(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">!(</span><span class="identifier">rhs</span> <span class="special">&lt;</span>
<span class="identifier">lhs</span><span class="special">)</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons.duration_operator_gt_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons.duration_operator_gt_1" title="Non-Member Function operator&gt;(duration,duration)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">&gt;(</span><span class="identifier">duration</span><span class="special">,</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&gt;</span> <span class="special">(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">rhs</span>
<span class="special">&lt;</span> <span class="identifier">lhs</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons.duration_operator_gteq_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp._duration__non_member_comparaisons.duration_operator_gteq_1" title="Non-Member Function operator&gt;=(duration,duration)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">&gt;=(</span><span class="identifier">duration</span><span class="special">,</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&gt;=(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">!(</span><span class="identifier">lhs</span> <span class="special">&lt;</span>
<span class="identifier">rhs</span><span class="special">)</span></code>.
</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration_cast"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_cast" title="Non-Member Function duration_cast(duration)">Non-Member
Function <code class="computeroutput"><span class="identifier">duration_cast</span><span class="special">(</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h5></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">ToDuration</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="identifier">ToDuration</span> <span class="identifier">duration_cast</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">Rep</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Requires:</strong></span> This function will not participate
in overload resolution unless <code class="computeroutput"><span class="identifier">ToDuration</span></code>
is an instantiation of <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> Forms <code class="computeroutput"><span class="identifier">CF</span></code>
which is a <code class="computeroutput"><span class="identifier">ratio</span></code> resulting
from <code class="computeroutput"><span class="identifier">ratio_divide</span><span class="special">&lt;</span><span class="identifier">Period</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">ToDuration</span><span class="special">::</span><span class="identifier">period</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
Let <code class="computeroutput"><span class="identifier">CR</span></code> be the <code class="computeroutput"><span class="identifier">common_type</span></code> of <code class="computeroutput"><span class="identifier">ToDuration</span><span class="special">::</span><span class="identifier">rep</span></code>,
<code class="computeroutput"><span class="identifier">Rep</span></code>, and <code class="computeroutput"><span class="identifier">intmax_t</span></code>.
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
If <code class="computeroutput"><span class="identifier">CF</span><span class="special">::</span><span class="identifier">num</span> <span class="special">==</span>
<span class="number">1</span></code> and <code class="computeroutput"><span class="identifier">CF</span><span class="special">::</span><span class="identifier">den</span>
<span class="special">==</span> <span class="number">1</span></code>,
then returns <code class="computeroutput"><span class="identifier">ToDuration</span><span class="special">(</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">typename</span>
<span class="identifier">ToDuration</span><span class="special">::</span><span class="identifier">rep</span><span class="special">&gt;(</span><span class="identifier">d</span><span class="special">.</span><span class="identifier">count</span><span class="special">()))</span>
</code>
</li>
<li class="listitem">
else if <code class="computeroutput"><span class="identifier">CF</span><span class="special">::</span><span class="identifier">num</span> <span class="special">!=</span>
<span class="number">1</span></code> and <code class="computeroutput"><span class="identifier">CF</span><span class="special">::</span><span class="identifier">den</span>
<span class="special">==</span> <span class="number">1</span></code>,
then returns <code class="computeroutput"><span class="identifier">ToDuration</span><span class="special">(</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">typename</span>
<span class="identifier">ToDuration</span><span class="special">::</span><span class="identifier">rep</span><span class="special">&gt;(</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">CR</span><span class="special">&gt;(</span><span class="identifier">d</span><span class="special">.</span><span class="identifier">count</span><span class="special">())</span>
<span class="special">*</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">CR</span><span class="special">&gt;(</span><span class="identifier">CF</span><span class="special">::</span><span class="identifier">num</span><span class="special">)))</span></code>
</li>
<li class="listitem">
else if <code class="computeroutput"><span class="identifier">CF</span><span class="special">::</span><span class="identifier">num</span> <span class="special">==</span>
<span class="number">1</span></code> and <code class="computeroutput"><span class="identifier">CF</span><span class="special">::</span><span class="identifier">den</span>
<span class="special">!=</span> <span class="number">1</span></code>,
then returns <code class="computeroutput"><span class="identifier">ToDuration</span><span class="special">(</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">typename</span>
<span class="identifier">ToDuration</span><span class="special">::</span><span class="identifier">rep</span><span class="special">&gt;(</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">CR</span><span class="special">&gt;(</span><span class="identifier">d</span><span class="special">.</span><span class="identifier">count</span><span class="special">())</span>
<span class="special">/</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">CR</span><span class="special">&gt;(</span><span class="identifier">CF</span><span class="special">::</span><span class="identifier">den</span><span class="special">)))</span></code>
</li>
<li class="listitem">
else returns <code class="computeroutput"><span class="identifier">ToDuration</span><span class="special">(</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">typename</span>
<span class="identifier">ToDuration</span><span class="special">::</span><span class="identifier">rep</span><span class="special">&gt;(</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">CR</span><span class="special">&gt;(</span><span class="identifier">d</span><span class="special">.</span><span class="identifier">count</span><span class="special">())</span>
<span class="special">*</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">CR</span><span class="special">&gt;(</span><span class="identifier">CF</span><span class="special">::</span><span class="identifier">num</span><span class="special">)</span> <span class="special">/</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">CR</span><span class="special">&gt;(</span><span class="identifier">CF</span><span class="special">::</span><span class="identifier">den</span><span class="special">)))</span></code>
</li>
</ul></div>
<p>
<span class="bold"><strong>Remarks:</strong></span> This function does not rely
on any implicit conversions. All conversions must be accomplished through
<code class="computeroutput"><span class="keyword">static_cast</span></code>. The implementation
avoids all multiplications or divisions when it is known at compile-time
that it can be avoided because one or more arguments are <code class="computeroutput"><span class="number">1</span></code>. All intermediate computations are carried
out in the widest possible representation and only converted to the destination
representation at the final step.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.duration_hpp.duration_typedefs"></a><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_typedefs" title="duration typedefs"><code class="computeroutput"><span class="identifier">duration</span></code> typedefs</a>
</h5></div></div></div>
<pre class="programlisting"><span class="comment">// convenience typedefs</span>
<span class="keyword">typedef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least64_t</span><span class="special">,</span> <span class="identifier">nano</span><span class="special">&gt;</span> <span class="identifier">nanoseconds</span><span class="special">;</span> <span class="comment">// at least 64 bits needed</span>
<span class="keyword">typedef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least64_t</span><span class="special">,</span> <span class="identifier">micro</span><span class="special">&gt;</span> <span class="identifier">microseconds</span><span class="special">;</span> <span class="comment">// at least 55 bits needed</span>
<span class="keyword">typedef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least64_t</span><span class="special">,</span> <span class="identifier">milli</span><span class="special">&gt;</span> <span class="identifier">milliseconds</span><span class="special">;</span> <span class="comment">// at least 45 bits needed</span>
<span class="keyword">typedef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least64_t</span><span class="special">&gt;</span> <span class="identifier">seconds</span><span class="special">;</span> <span class="comment">// at least 35 bits needed</span>
<span class="keyword">typedef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least32_t</span><span class="special">,</span> <code class="computeroutput"><span class="identifier">ratio</span></code><span class="special">&lt;</span> <span class="number">60</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">minutes</span><span class="special">;</span> <span class="comment">// at least 29 bits needed</span>
<span class="keyword">typedef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int_least32_t</span><span class="special">,</span> <code class="computeroutput"><span class="identifier">ratio</span></code><span class="special">&lt;</span><span class="number">3600</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">hours</span><span class="special">;</span> <span class="comment">// at least 23 bits needed</span>
</pre>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="chrono.reference.cpp0x.clock"></a><a class="link" href="reference.html#chrono.reference.cpp0x.clock" title="Clock Requirements"><code class="computeroutput"><span class="identifier">Clock</span></code>
Requirements</a>
</h4></div></div></div>
<p>
A clock represents a bundle consisting of a <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>, a <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a>, and a function <code class="computeroutput"><span class="identifier">now</span><span class="special">()</span></code>
to get the current <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a>. A clock must meet
the requirements in the following Table.
</p>
<p>
In this table <code class="computeroutput"><span class="identifier">C1</span></code> and <code class="computeroutput"><span class="identifier">C2</span></code> denote <code class="computeroutput"><span class="identifier">clock</span></code>
types. <code class="computeroutput"><span class="identifier">t1</span></code> and <code class="computeroutput"><span class="identifier">t2</span></code> are values returned from <code class="computeroutput"><span class="identifier">C1</span><span class="special">::</span><span class="identifier">now</span><span class="special">()</span></code>
where the call returning <code class="computeroutput"><span class="identifier">t1</span></code>
happens before the call returning <code class="computeroutput"><span class="identifier">t2</span></code>
and both of these calls happen before <code class="computeroutput"><span class="identifier">C1</span><span class="special">::</span><span class="identifier">time_point</span><span class="special">::</span><span class="identifier">max</span><span class="special">()</span></code>.
</p>
<div class="table">
<a name="chrono.reference.cpp0x.clock.clock_requirements"></a><p class="title"><b>Table&#160;4.1.&#160;Clock Requirements</b></p>
<div class="table-contents"><table class="table" summary="Clock Requirements">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
expression
</p>
</th>
<th>
<p>
return type
</p>
</th>
<th>
<p>
operational semantics
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">C1</span><span class="special">::</span><span class="identifier">rep</span></code>
</p>
</td>
<td>
<p>
An arithmetic type or class emulating an arithmetic type.
</p>
</td>
<td>
<p>
The representation type of the <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> and <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">C1</span><span class="special">::</span><span class="identifier">period</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="identifier">ratio</span></code>
</p>
</td>
<td>
<p>
The tick period of the clock in seconds.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">C1</span><span class="special">::</span><span class="identifier">duration</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="identifier">chrono</span><span class="special">::</span><span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">C1</span><span class="special">::</span><span class="identifier">rep</span><span class="special">,</span>
<span class="identifier">C1</span><span class="special">::</span><span class="identifier">period</span><span class="special">&gt;</span></code>
</p>
</td>
<td>
<p>
The <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> type of the
<code class="computeroutput"><span class="identifier">clock</span></code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">C1</span><span class="special">::</span><span class="identifier">time_point</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="identifier">chrono</span><span class="special">::</span><span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">C1</span><span class="special">&gt;</span>
<span class="keyword">or</span> <span class="identifier">chrono</span><span class="special">::</span><span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">C2</span><span class="special">,</span> <span class="identifier">C1</span><span class="special">::</span><span class="identifier">duration</span><span class="special">&gt;</span></code>
</p>
</td>
<td>
<p>
The <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> type of the
<code class="computeroutput"><span class="identifier">clock</span></code>. Different
clocks are permitted to share a <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> definition
if it is valid to compare their time_points by comparing their
respective <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>s. <code class="computeroutput"><span class="identifier">C1</span></code> and <code class="computeroutput"><span class="identifier">C2</span></code>
must refer to the same epoch.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">C1</span><span class="special">::</span><span class="identifier">is_steady</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="identifier">constexpr</span> <span class="keyword">bool</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">t1</span> <span class="special">&lt;=</span>
<span class="identifier">t2</span></code> is always <code class="computeroutput"><span class="keyword">true</span></code>, else <code class="computeroutput"><span class="keyword">false</span></code>.
<span class="bold"><strong>Note</strong></span>: A <code class="computeroutput"><span class="identifier">clock</span></code>
that can be adjusted backwards is not steady
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">C1</span><span class="special">::</span><span class="identifier">now</span><span class="special">()</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="identifier">C1</span><span class="special">::</span><span class="identifier">time_point</span></code>
</p>
</td>
<td>
<p>
Returns a <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> representing
the current point in time.
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break"><p>
Models of Clock:
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.system_clock" title="Class system_clock"><code class="computeroutput"><span class="identifier">system_clock</span></code></a>
</li>
<li class="listitem">
<a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.steady_clock" title="Class steady_clock"><code class="computeroutput"><span class="identifier">steady_clock</span></code></a>
</li>
<li class="listitem">
<a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.high_resolution_clock" title="Class high_resolution_clock"><code class="computeroutput"><span class="identifier">high_resolution_clock</span></code></a>
</li>
<li class="listitem">
<a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_real_cpu_clock" title="Class process_real_cpu_clock"><code class="computeroutput"><span class="identifier">process_real_cpu_clock</span></code></a>
</li>
<li class="listitem">
<a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_user_cpu_clock" title="Class process_user_cpu_clock"><code class="computeroutput"><span class="identifier">process_user_cpu_clock</span></code></a>
</li>
<li class="listitem">
<a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_system_cpu_clock" title="Class process_system_cpu_clock"><code class="computeroutput"><span class="identifier">process_system_cpu_clock</span></code></a>
</li>
<li class="listitem">
<a class="link" href="reference.html#chrono.reference.other_clocks.thread_clock_hpp.thread_clock" title="Class thread_clock"><code class="computeroutput"><span class="identifier">thread_clock</span></code></a>
</li>
</ul></div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp" title="Header &lt;boost/chrono/time_point.hpp&gt;">Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">time_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
</h4></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.time_point_hpp.common_type_spe2"><code class="computeroutput"><span class="identifier">common_type</span></code> specialization</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point">Class
template <code class="computeroutput"><span class="identifier">time_point</span><span class="special">&lt;&gt;</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.time_point_hpp._time_point__non_member_arithmetic"><code class="computeroutput"><span class="identifier">time_point</span></code> non-member arithmetic</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons"><code class="computeroutput"><span class="identifier">time_point</span></code> non-member comparisons</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point_cast">Non-Member
Function <code class="computeroutput"><span class="identifier">time_point_cast</span><span class="special">(</span><span class="identifier">time_point</span><span class="special">)</span></code></a></span></dt>
</dl></div>
<p>
This file contains <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> specific classes and
non-member functions.
</p>
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
<span class="keyword">namespace</span> <span class="identifier">chrono</span> <span class="special">{</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration</span> <span class="special">=</span> <span class="keyword">typename</span> <span class="identifier">Clock</span><span class="special">::</span><span class="identifier">duration</span><span class="special">&gt;</span> <span class="keyword">class</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">;</span>
<span class="special">}</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.common_type_spe" title="common_type Specialization"><code class="computeroutput"><span class="identifier">common_type</span></code></a><span class="special">&lt;</span><span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;,</span>
<span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;</span> <span class="special">&gt;;</span>
<span class="keyword">namespace</span> <span class="identifier">chrono</span> <span class="special">{</span>
<span class="comment">// time_point arithmetic</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">common_type</span><span class="special">&lt;</span><span class="identifier">Duration1</span><span class="special">,</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;</span>
<span class="keyword">operator</span><span class="special">+(</span><span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">common_type</span><span class="special">&lt;</span><span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;,</span> <span class="identifier">Duration2</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;</span>
<span class="keyword">operator</span><span class="special">+(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">common_type</span><span class="special">&lt;</span><span class="identifier">Duration1</span><span class="special">,</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;</span>
<span class="keyword">operator</span><span class="special">-(</span><span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="keyword">typename</span> <span class="identifier">common_type</span><span class="special">&lt;</span><span class="identifier">Duration1</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;::</span><span class="identifier">type</span>
<span class="keyword">operator</span><span class="special">-(</span><span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span>
<span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="comment">// time_point comparisons</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;=(</span><span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&gt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&gt;=(</span><span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="comment">// time_point_cast</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">ToDuration</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration</span><span class="special">&gt;</span>
<span class="identifier">constexpr</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">ToDuration</span><span class="special">&gt;</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point_cast" title="Non-Member Function time_point_cast(time_point)"><code class="computeroutput"><span class="identifier">time_point_cast</span></code></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration</span><span class="special">&gt;&amp;</span> <span class="identifier">t</span><span class="special">);</span>
<span class="special">}</span>
<span class="special">}</span>
</pre>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.common_type_spe2"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.common_type_spe2" title="common_type specialization"><code class="computeroutput"><span class="identifier">common_type</span></code> specialization</a>
</h5></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><span class="identifier">chrono</span><span class="special">::</span><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;,</span> <span class="identifier">chrono</span><span class="special">::</span><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="keyword">typedef</span> <span class="identifier">chrono</span><span class="special">::</span><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">typename</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><span class="identifier">Duration1</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;</span> <span class="identifier">type</span><span class="special">;</span>
<span class="special">};</span>
</pre>
<p>
The <code class="computeroutput"><span class="identifier">common_type</span></code> of two
<a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a>s is a <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> with the same <code class="computeroutput"><span class="identifier">clock</span></code> (both have the same <code class="computeroutput"><span class="identifier">clock</span></code>), and the <code class="computeroutput"><span class="identifier">common_type</span></code>
of the two <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>s.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;">Class
template <code class="computeroutput"><span class="identifier">time_point</span><span class="special">&lt;&gt;</span></code></a>
</h5></div></div></div>
<p>
A <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> represents a point
in time with respect to a specific clock.
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">time_point</span> <span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="keyword">typedef</span> <span class="identifier">Clock</span> <span class="identifier">clock</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">Duration</span> <span class="identifier">duration</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">rep</span> <span class="identifier">rep</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">period</span> <span class="identifier">period</span><span class="special">;</span>
<span class="keyword">private</span><span class="special">:</span>
<span class="identifier">duration</span> <span class="identifier">d_</span><span class="special">;</span> <span class="comment">// exposition only</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="identifier">constexpr</span> <span class="identifier">time_point</span><span class="special">();</span>
<span class="identifier">constexpr</span> <span class="keyword">explicit</span> <span class="identifier">time_point</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;</span> <span class="identifier">d</span><span class="special">);</span>
<span class="comment">// conversions</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="identifier">time_point</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">t</span><span class="special">);</span>
<span class="comment">// observer</span>
<span class="identifier">constexpr</span> <span class="identifier">duration</span> <span class="identifier">time_since_epoch</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
<span class="comment">// arithmetic</span>
<span class="preprocessor">#ifdef</span> <span class="identifier">BOOST_CHRONO_EXTENSIONS</span>
<span class="identifier">constexpr</span> <span class="identifier">time_point</span> <span class="keyword">operator</span><span class="special">+();</span>
<span class="identifier">constexpr</span> <span class="identifier">time_point</span> <span class="keyword">operator</span><span class="special">-();</span>
<span class="identifier">time_point</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">++();</span>
<span class="identifier">time_point</span> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
<span class="identifier">time_point</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">--();</span>
<span class="identifier">time_point</span> <span class="keyword">operator</span><span class="special">--(</span><span class="keyword">int</span><span class="special">);</span>
<span class="identifier">time_point</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="keyword">const</span> <span class="identifier">rep</span><span class="special">&amp;</span> <span class="identifier">d</span><span class="special">);</span>
<span class="identifier">time_point</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">-=(</span><span class="keyword">const</span> <span class="identifier">rep</span><span class="special">&amp;</span> <span class="identifier">d</span><span class="special">);</span>
<span class="preprocessor">#endif</span>
<span class="identifier">time_point</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;</span> <span class="identifier">d</span><span class="special">);</span>
<span class="identifier">time_point</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">-=(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;</span> <span class="identifier">d</span><span class="special">);</span>
<span class="comment">// special values</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">time_point</span> <span class="identifier">min</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">time_point</span> <span class="identifier">max</span><span class="special">();</span>
<span class="special">};</span>
</pre>
<p>
Clock must meet the <a class="link" href="reference.html#chrono.reference.cpp0x.clock" title="Clock Requirements"><code class="computeroutput"><span class="identifier">Clock</span></code></a> requirements.
</p>
<p>
Duration must be an instantiation of <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>, compile diagnostic
otherwise.
</p>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.time_point_c_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.time_point_c_1" title="Constructor time_point()">Constructor
<code class="computeroutput"><span class="identifier">time_point</span><span class="special">()</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="identifier">constexpr</span> <span class="identifier">time_point</span><span class="special">();</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> Constructs an object of
<a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a>, initializing
<code class="computeroutput"><span class="identifier">d_</span></code> with <code class="computeroutput"><span class="identifier">duration</span><span class="special">::</span><span class="identifier">zero</span><span class="special">()</span></code>.
This <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> represents the
epoch.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.time_point_c_2"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.time_point_c_2" title="Constructor time_point(const duration&amp;)">Constructor
<code class="computeroutput"><span class="identifier">time_point</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="identifier">constexpr</span> <span class="identifier">time_point</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;</span> <span class="identifier">d</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> Constructs an object of
<a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a>, initializing
<code class="computeroutput"><span class="identifier">d_</span></code> with <code class="computeroutput"><span class="identifier">d</span></code>. This <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> represents the
epoch <code class="computeroutput"><span class="special">+</span> <span class="identifier">d</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.time_point_c_3"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.time_point_c_3" title="Copy Constructor time_point(const time_point&amp;)">Copy
Constructor <code class="computeroutput"><span class="identifier">time_point</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&amp;)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span> <span class="identifier">time_point</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">t</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Requires:</strong></span> This function will not participate
in overload resolution unless <code class="computeroutput"><span class="identifier">Duration2</span></code>
is implicitly convertible to <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>.
</p>
<p>
<span class="bold"><strong>Effects:</strong></span> Constructs an object of
<a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a>, initializing
<code class="computeroutput"><span class="identifier">d_</span></code> with <code class="computeroutput"><span class="identifier">t</span><span class="special">.</span><span class="identifier">time_since_epoch</span><span class="special">()</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.time_since_epoch"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.time_since_epoch" title="Member Function time_since_epoch() const">Member
Function <code class="computeroutput"><span class="identifier">time_since_epoch</span><span class="special">()</span> <span class="keyword">const</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="identifier">constexpr</span> <span class="identifier">duration</span> <span class="identifier">time_since_epoch</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">d_</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.operator_p"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.operator_p" title="Member Function operator+() const">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">+()</span>
<span class="keyword">const</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="identifier">constexpr</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> <span class="keyword">operator</span><span class="special">+()</span> <span class="keyword">const</span><span class="special">;</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.operator_m"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.operator_m" title="Member Function operator-() const">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">-()</span>
<span class="keyword">const</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="identifier">constexpr</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> <span class="keyword">operator</span><span class="special">-()</span> <span class="keyword">const</span><span class="special">;</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">(-</span><span class="identifier">d_</span><span class="special">)</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.operator_pp"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.operator_pp" title="Member Function operator++()">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">++()</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">++();</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> <code class="computeroutput"><span class="special">++</span><span class="identifier">d_</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.operator_pp2"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.operator_pp2" title="Member Function operator++(int)">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">(</span><span class="identifier">d_</span><span class="special">++)</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.operator_mm"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.operator_mm" title="Member Function operator--()">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">--()</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">--();</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> <code class="computeroutput"><span class="special">--</span><span class="identifier">d_</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.operator_mm2"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.operator_mm2" title="Member Function operator--(int)">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">--(</span><span class="keyword">int</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> <span class="keyword">operator</span><span class="special">--(</span><span class="keyword">int</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">(</span><span class="identifier">d_</span><span class="special">--)</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.time_point_operator_per"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.time_point_operator_per" title="Member Function operator+=">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">+=</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="keyword">const</span> <span class="identifier">rep</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> <code class="computeroutput"><span class="identifier">d_</span>
<span class="special">+=</span> <span class="identifier">duration</span><span class="special">(</span><span class="identifier">r</span><span class="special">)</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.time_point_operator_mer"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.time_point_operator_mer" title="Member Function operator-=">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">-=</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">-=(</span><span class="keyword">const</span> <span class="identifier">rep</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> <code class="computeroutput"><span class="identifier">d_</span>
<span class="special">-=</span> <span class="identifier">duration</span><span class="special">(</span><span class="identifier">r</span><span class="special">)</span></code>
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.time_point_operator_pe"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.time_point_operator_pe" title="Member Function operator+=">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">+=</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="identifier">time_point</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;</span> <span class="identifier">d</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> <code class="computeroutput"><span class="identifier">d_</span>
<span class="special">+=</span> <span class="identifier">d</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.time_point_operator_me"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.time_point_operator_me" title="Member Function operator-=">Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">-=</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="identifier">time_point</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">-=(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&amp;</span> <span class="identifier">d</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> <code class="computeroutput"><span class="identifier">d_</span>
<span class="special">-=</span> <span class="identifier">d</span></code>
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.time_point_min"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.time_point_min" title="Static Member Function min">Static
Member Function <code class="computeroutput"><span class="identifier">min</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">time_point</span> <span class="identifier">min</span><span class="special">();</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">time_point</span><span class="special">(</span><span class="identifier">duration</span><span class="special">::</span><span class="identifier">min</span><span class="special">())</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point.time_point_max"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point.time_point_max" title="Static Member Function max">Static
Member Function <code class="computeroutput"><span class="identifier">max</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">time_point</span> <span class="identifier">max</span><span class="special">();</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">time_point</span><span class="special">(</span><span class="identifier">duration</span><span class="special">::</span><span class="identifier">max</span><span class="special">())</span></code>.
</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp._time_point__non_member_arithmetic"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp._time_point__non_member_arithmetic" title="time_point non-member arithmetic"><code class="computeroutput"><span class="identifier">time_point</span></code> non-member arithmetic</a>
</h5></div></div></div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp._time_point__non_member_arithmetic.time_point_operator_p_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp._time_point__non_member_arithmetic.time_point_operator_p_1" title="Non-Member Function operator+(time_point,duration)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">+(</span><span class="identifier">time_point</span><span class="special">,</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">typename</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><span class="identifier">Duration1</span><span class="special">,</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;</span>
<span class="keyword">operator</span><span class="special">+(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">CT</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">rhs</span></code> where <code class="computeroutput"><span class="identifier">CT</span></code>
is the type of the return value.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp._time_point__non_member_arithmetic.time_point_operator_p_2"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp._time_point__non_member_arithmetic.time_point_operator_p_2" title="Non-Member Function operator+(duration,time_point)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">+(</span><span class="identifier">duration</span><span class="special">,</span><span class="identifier">time_point</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Rep1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">typename</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;,</span> <span class="identifier">Duration2</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;</span>
<span class="keyword">operator</span><span class="special">+(</span><span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep1</span><span class="special">,</span> <span class="identifier">Period1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">rhs</span>
<span class="special">+</span> <span class="identifier">lhs</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp._time_point__non_member_arithmetic.time_point_operator_m_1"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp._time_point__non_member_arithmetic.time_point_operator_m_1" title="Non-Member Function operator-(time_point,duration)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">-(</span><span class="identifier">time_point</span><span class="special">,</span><span class="identifier">duration</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period2</span><span class="special">&gt;</span>
<a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">typename</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><span class="identifier">Duration1</span><span class="special">,</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;</span>
<span class="keyword">operator</span><span class="special">-(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep2</span><span class="special">,</span> <span class="identifier">Period2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">lhs</span>
<span class="special">+</span> <span class="special">(-</span><span class="identifier">rhs</span><span class="special">)</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp._time_point__non_member_arithmetic.time_point_operator_m_2"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp._time_point__non_member_arithmetic.time_point_operator_m_2" title="Non-Member Function operator-(time_point,time_point)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">-(</span><span class="identifier">time_point</span><span class="special">,</span><span class="identifier">time_point</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="keyword">typename</span> <code class="computeroutput"><span class="identifier">common_type</span></code><span class="special">&lt;</span><span class="identifier">Duration1</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;::</span><span class="identifier">type</span>
<span class="keyword">operator</span><span class="special">-(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">lhs</span><span class="special">.</span><span class="identifier">time_since_epoch</span><span class="special">()</span> <span class="special">-</span> <span class="identifier">rhs</span><span class="special">.</span><span class="identifier">time_since_epoch</span><span class="special">()</span></code>.
</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons" title="time_point non-member comparisons"><code class="computeroutput"><span class="identifier">time_point</span></code> non-member comparisons</a>
</h5></div></div></div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons.time_point_operator_eq"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons.time_point_operator_eq" title="Non-Member Function operator==(time_point,time_point)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">==(</span><span class="identifier">time_point</span><span class="special">,</span><span class="identifier">time_point</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">lhs</span><span class="special">.</span><span class="identifier">time_since_epoch</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">rhs</span><span class="special">.</span><span class="identifier">time_since_epoch</span><span class="special">()</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons.time_point_operator_neq"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons.time_point_operator_neq" title="Non-Member Function operator!=(time_point,time_point)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">!=(</span><span class="identifier">time_point</span><span class="special">,</span><span class="identifier">time_point</span><span class="special">)</span></code></a>
</h6></div></div></div>
<p>
template &lt;class Clock, class Duration1, class Duration2&gt; bool
operator!=(const <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a>&lt;Clock, Duration1&gt;&amp;
lhs, const <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a>&lt;Clock, Duration2&gt;&amp;
rhs);
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">!(</span><span class="identifier">lhs</span> <span class="special">==</span>
<span class="identifier">rhs</span><span class="special">)</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons.time_point_operator_lt"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons.time_point_operator_lt" title="Non-Member Function operator&lt;(time_point,time_point)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;(</span><span class="identifier">time_point</span><span class="special">,</span><span class="identifier">time_point</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;</span> <span class="special">(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> lhs.time_since_epoch() &lt;
rhs.time_since_epoch().
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons.time_point_operator_leq"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons.time_point_operator_leq" title="Non-Member Function operator&lt;=(time_point,time_point)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;=(</span><span class="identifier">time_point</span><span class="special">,</span><span class="identifier">time_point</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;=(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">!(</span><span class="identifier">rhs</span> <span class="special">&lt;</span>
<span class="identifier">lhs</span><span class="special">)</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons.time_point_operator_gt"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons.time_point_operator_gt" title="Non-Member Function operator&gt;(time_point,time_point)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">&gt;(</span><span class="identifier">time_point</span><span class="special">,</span><span class="identifier">time_point</span><span class="special">)</span></code></a>
</h6></div></div></div>
<p>
template &lt;class Clock, class Duration1, class Duration2&gt; bool
operator&gt;(const <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a>&lt;Clock, Duration1&gt;&amp;
lhs, const <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a>&lt;Clock, Duration2&gt;&amp;
rhs);
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="identifier">rhs</span>
<span class="special">&lt;</span> <span class="identifier">lhs</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons.time_point_operator_geq"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp._time_point__non_member_comparisons.time_point_operator_geq" title="Non-Member Function operator&gt;=(time_point,time_point)">Non-Member
Function <code class="computeroutput"><span class="keyword">operator</span><span class="special">&gt;=(</span><span class="identifier">time_point</span><span class="special">,</span><span class="identifier">time_point</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration2</span><span class="special">&gt;</span>
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&gt;=(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration1</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
<span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration2</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><span class="special">!(</span><span class="identifier">lhs</span> <span class="special">&lt;</span>
<span class="identifier">rhs</span><span class="special">)</span></code>.
</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.time_point_hpp.time_point_cast"></a><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point_cast" title="Non-Member Function time_point_cast(time_point)">Non-Member
Function <code class="computeroutput"><span class="identifier">time_point_cast</span><span class="special">(</span><span class="identifier">time_point</span><span class="special">)</span></code></a>
</h5></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">ToDuration</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration</span><span class="special">&gt;</span>
<a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">ToDuration</span><span class="special">&gt;</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point_cast" title="Non-Member Function time_point_cast(time_point)"><code class="computeroutput"><span class="identifier">time_point_cast</span></code></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration</span><span class="special">&gt;&amp;</span> <span class="identifier">t</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Requires:</strong></span> This function will not participate
in overload resolution unless <code class="computeroutput"><span class="identifier">ToDuration</span></code>
is an instantiation of <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> <code class="computeroutput"><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">ToDuration</span><span class="special">&gt;(</span><a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_cast" title="Non-Member Function duration_cast(duration)"><code class="computeroutput"><span class="identifier">duration_cast</span></code></a><span class="special">&lt;</span><span class="identifier">ToDuration</span><span class="special">&gt;(</span><span class="identifier">t</span><span class="special">.</span><span class="identifier">time_since_epoch</span><span class="special">()))</span></code>.
</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="chrono.reference.cpp0x.system_clocks_hpp"></a><a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp" title="Header &lt;boost/chrono/system_clocks.hpp&gt;">Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">system_clocks</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
</h4></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.system_clock">Class
<code class="computeroutput"><span class="identifier">system_clock</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.BOOST_CHRONO_HAS_CLOCK_STEADY">Macro
<code class="computeroutput"><span class="identifier">BOOST_CHRONO_HAS_CLOCK_STEADY</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.steady_clock">Class
<code class="computeroutput"><span class="identifier">steady_clock</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.high_resolution_clock">Class
<code class="computeroutput"><span class="identifier">high_resolution_clock</span></code></a></span></dt>
</dl></div>
<p>
This file contains the standard clock classes.
</p>
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
<span class="keyword">namespace</span> <span class="identifier">chrono</span> <span class="special">{</span>
<span class="comment">// Clocks</span>
<span class="keyword">class</span> <a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.system_clock" title="Class system_clock"><code class="computeroutput"><span class="identifier">system_clock</span></code></a><span class="special">;</span>
<span class="keyword">class</span> <a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.steady_clock" title="Class steady_clock"><code class="computeroutput"><span class="identifier">steady_clock</span></code></a><span class="special">;</span>
<span class="keyword">class</span> <a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.high_resolution_clock" title="Class high_resolution_clock"><code class="computeroutput"><span class="identifier">high_resolution_clock</span></code></a><span class="special">;</span>
<span class="special">}</span>
<span class="special">}</span>
</pre>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.system_clocks_hpp.system_clock"></a><a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.system_clock" title="Class system_clock">Class
<code class="computeroutput"><span class="identifier">system_clock</span></code></a>
</h5></div></div></div>
<p>
The <a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.system_clock" title="Class system_clock"><code class="computeroutput"><span class="identifier">system_clock</span></code></a> class provides
a means of obtaining the current wall-clock time from the system-wide
real-time clock. The current time can be obtained by calling <code class="computeroutput"><span class="identifier">system_clock</span><span class="special">::</span><span class="identifier">now</span><span class="special">()</span></code>.
Instances of <code class="computeroutput"><span class="identifier">system_clock</span><span class="special">::</span><span class="identifier">time_point</span></code>
can be converted to and from time_t with the <code class="computeroutput"><span class="identifier">system_clock</span><span class="special">::</span><span class="identifier">to_time_t</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">system_clock</span><span class="special">::</span><span class="identifier">to_time_point</span><span class="special">()</span></code> functions. If system clock is not steady,
a subsequent call to <code class="computeroutput"><span class="identifier">system_clock</span><span class="special">::</span><span class="identifier">now</span><span class="special">()</span></code> may return an earlier time than a previous
call (e.g. if the operating system clock is manually adjusted, or synchronized
with an external clock).
</p>
<p>
The current implementation of <a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.system_clock" title="Class system_clock"><code class="computeroutput"><span class="identifier">system_clock</span></code></a> is related an epoch
(midnight UTC of January 1, 1970), but this is not in the contract. You
need to use the static function static
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">time_t</span> <span class="identifier">to_time_t</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&amp;</span> <span class="identifier">t</span><span class="special">);</span>
</pre>
<p>
which returns a <code class="computeroutput"><span class="identifier">time_t</span></code>
type that is based on midnight UTC of January 1, 1970.
</p>
<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">system_clock</span> <span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="keyword">typedef</span> <span class="emphasis"><em>see bellow</em></span> <span class="identifier">duration</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">rep</span> <span class="identifier">rep</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">period</span> <span class="identifier">period</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">chrono</span><span class="special">::</span><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">system_clock</span><span class="special">&gt;</span> <span class="identifier">time_point</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="identifier">is_steady</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">time_point</span> <span class="identifier">now</span><span class="special">();</span> <span class="comment">// throws on error</span>
<span class="keyword">static</span> <span class="identifier">time_point</span> <span class="identifier">now</span><span class="special">(</span><span class="identifier">system</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&amp;</span> <span class="identifier">ec</span><span class="special">);</span> <span class="comment">// never throws</span>
<span class="comment">// Map to C API</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">time_t</span> <span class="identifier">to_time_t</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&amp;</span> <span class="identifier">t</span><span class="special">);</span>
<span class="keyword">static</span> <span class="identifier">time_point</span> <span class="identifier">from_time_t</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">time_t</span> <span class="identifier">t</span><span class="special">);</span>
<span class="special">};</span>
</pre>
<p>
<a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.system_clock" title="Class system_clock"><code class="computeroutput"><span class="identifier">system_clock</span></code></a> satisfy the <a class="link" href="reference.html#chrono.reference.cpp0x.clock" title="Clock Requirements"><code class="computeroutput"><span class="identifier">Clock</span></code></a>
requirements:
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<code class="computeroutput"><span class="identifier">system_clock</span><span class="special">::</span><span class="identifier">duration</span><span class="special">::</span><span class="identifier">min</span><span class="special">()</span>
<span class="special">&lt;</span> <span class="identifier">system_clock</span><span class="special">::</span><span class="identifier">duration</span><span class="special">::</span><span class="identifier">zero</span><span class="special">()</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>.
</li>
<li class="listitem">
The nested duration typedef has a resolution that depends on the
one provided by the platform.
</li>
</ul></div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.system_clocks_hpp.system_clock.to_time_t"></a><a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.system_clock.to_time_t" title="Static Member Function to_time_t(time_point)">Static
Member Function <code class="computeroutput"><span class="identifier">to_time_t</span><span class="special">(</span><span class="identifier">time_point</span><span class="special">)</span></code></a>
</h6></div></div></div>
<p>
time_t to_time_t(const time_point&amp; t);
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> A <code class="computeroutput"><span class="identifier">time_t</span></code>
such that the <code class="computeroutput"><span class="identifier">time_t</span></code>
and <code class="computeroutput"><span class="identifier">t</span></code> represent the
same point in time, truncated to the courser of the precisions among
<code class="computeroutput"><span class="identifier">time_t</span></code> and <code class="computeroutput"><span class="identifier">t</span></code>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="chrono.reference.cpp0x.system_clocks_hpp.system_clock.from_time_t"></a><a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.system_clock.from_time_t" title="Static Member Function from_time_t(time_t)">Static
Member Function <code class="computeroutput"><span class="identifier">from_time_t</span><span class="special">(</span><span class="identifier">time_t</span><span class="special">)</span></code></a>
</h6></div></div></div>
<pre class="programlisting"><span class="identifier">time_point</span> <span class="identifier">from_time_t</span><span class="special">(</span><span class="identifier">time_t</span> <span class="identifier">t</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Returns:</strong></span> A <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> such that the
<a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> and <code class="computeroutput"><span class="identifier">t</span></code> represent the same point in time,
truncated to the coarser of the precisions among <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> and <code class="computeroutput"><span class="identifier">t</span></code>.
</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.system_clocks_hpp.BOOST_CHRONO_HAS_CLOCK_STEADY"></a><a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.BOOST_CHRONO_HAS_CLOCK_STEADY" title="Macro BOOST_CHRONO_HAS_CLOCK_STEADY">Macro
<code class="computeroutput"><span class="identifier">BOOST_CHRONO_HAS_CLOCK_STEADY</span></code></a>
</h5></div></div></div>
<p>
Defined if the platform support steady clocks.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.system_clocks_hpp.steady_clock"></a><a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.steady_clock" title="Class steady_clock">Class
<code class="computeroutput"><span class="identifier">steady_clock</span></code></a>
</h5></div></div></div>
<p>
<a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.steady_clock" title="Class steady_clock"><code class="computeroutput"><span class="identifier">steady_clock</span></code></a> satisfy the <a class="link" href="reference.html#chrono.reference.cpp0x.clock" title="Clock Requirements"><code class="computeroutput"><span class="identifier">Clock</span></code></a>
requirements.
</p>
<p>
<a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.steady_clock" title="Class steady_clock"><code class="computeroutput"><span class="identifier">steady_clock</span></code></a> class provides
access to the system-wide steady clock. The current time can be obtained
by calling <code class="computeroutput"><span class="identifier">steady_clock</span><span class="special">::</span><span class="identifier">now</span><span class="special">()</span></code>. There is no fixed relationship between
values returned by <code class="computeroutput"><span class="identifier">steady_clock</span><span class="special">::</span><span class="identifier">now</span><span class="special">()</span></code> and wall-clock time.
</p>
<pre class="programlisting"><span class="preprocessor">#ifdef</span> <span class="identifier">BOOST_HAS_CLOCK_STEADY</span>
<span class="keyword">class</span> <span class="identifier">steady_clock</span> <span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="keyword">typedef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_typedefs" title="duration typedefs"><code class="computeroutput"><span class="identifier">nanoseconds</span></code></a> <span class="identifier">duration</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">rep</span> <span class="identifier">rep</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">period</span> <span class="identifier">period</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">chrono</span><span class="special">::</span><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">steady_clock</span><span class="special">&gt;</span> <span class="identifier">time_point</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="identifier">is_steady</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">time_point</span> <span class="identifier">now</span><span class="special">();</span> <span class="comment">// throws on error</span>
<span class="keyword">static</span> <span class="identifier">time_point</span> <span class="identifier">now</span><span class="special">(</span><span class="identifier">system</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&amp;</span> <span class="identifier">ec</span><span class="special">);</span> <span class="comment">// never throws</span>
<span class="special">};</span>
<span class="preprocessor">#endif</span>
</pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.cpp0x.system_clocks_hpp.high_resolution_clock"></a><a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.high_resolution_clock" title="Class high_resolution_clock">Class
<code class="computeroutput"><span class="identifier">high_resolution_clock</span></code></a>
</h5></div></div></div>
<p>
<a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.high_resolution_clock" title="Class high_resolution_clock"><code class="computeroutput"><span class="identifier">high_resolution_clock</span></code></a> satisfy
the <a class="link" href="reference.html#chrono.reference.cpp0x.clock" title="Clock Requirements"><code class="computeroutput"><span class="identifier">Clock</span></code></a>
requirements.
</p>
<pre class="programlisting"><span class="preprocessor">#ifdef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.BOOST_CHRONO_HAS_CLOCK_STEADY" title="Macro BOOST_CHRONO_HAS_CLOCK_STEADY"><code class="computeroutput"><span class="identifier">BOOST_CHRONO_HAS_CLOCK_STEADY</span></code></a>
<span class="keyword">typedef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.steady_clock" title="Class steady_clock"><code class="computeroutput"><span class="identifier">steady_clock</span></code></a> <span class="identifier">high_resolution_clock</span><span class="special">;</span> <span class="comment">// as permitted by [time.clock.hires]</span>
<span class="preprocessor">#else</span>
<span class="keyword">typedef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.system_clocks_hpp.system_clock" title="Class system_clock"><code class="computeroutput"><span class="identifier">system_clock</span></code></a> <span class="identifier">high_resolution_clock</span><span class="special">;</span> <span class="comment">// as permitted by [time.clock.hires]</span>
<span class="preprocessor">#endif</span>
</pre>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="chrono.reference.cpp0x.chrono_typeof_hpp"></a><a class="link" href="reference.html#chrono.reference.cpp0x.chrono_typeof_hpp" title="Header &lt;boost/chrono/typeof/boost/chrono/chrono.hpp&gt;">Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">typeof</span><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
</h4></div></div></div>
<p>
Register <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><code class="computeroutput"><span class="special">&lt;&gt;</span></code>
and <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><code class="computeroutput"><span class="special">&lt;&gt;</span></code>
class templates to <span class="bold"><strong>Boost.Typeof</strong></span>.
</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="chrono.reference.io"></a><a class="link" href="reference.html#chrono.reference.io" title="Chrono I/O">Chrono I/O</a>
</h3></div></div></div>
<div class="toc"><dl><dt><span class="section"><a href="reference.html#chrono.reference.io.chrono_io_hpp">Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">chrono_io</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt></dl></div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="chrono.reference.io.chrono_io_hpp"></a><a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp" title="Header &lt;boost/chrono/chrono_io.hpp&gt;">Header <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">chrono_io</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
</h4></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="reference.html#chrono.reference.io.chrono_io_hpp.duration_punct">Template
Class <code class="computeroutput"><span class="identifier">duration_punct</span><span class="special">&lt;&gt;</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string">Template
Class <code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string_system_clock"><code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">system_clock</span><span class="special">&gt;</span></code>
Specialization</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string_steady_clock"><code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">steady_clock</span><span class="special">&gt;</span></code>
Specialization</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string_thread_clock"><code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">thread_clock</span><span class="special">&gt;</span></code>
Specialization</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string_process_real_cpu_clock"><code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">process_real_cpu_clock</span><span class="special">&gt;</span></code>
Specialization</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string_process_user_cpu_clock"><code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">process_user_cpu_clock</span><span class="special">&gt;</span></code>
Specialization</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string_process_system_cpu_clock"><code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">process_system_cpu_clock</span><span class="special">&gt;</span></code>
Specialization</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string_process_cpu_clock"><code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">process_cpu_clock</span><span class="special">&gt;</span></code>
Specialization</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.io.chrono_io_hpp.manipulators">I/O
Manipulators</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.io.chrono_io_hpp.streams">I/O Streams
Operations</a></span></dt>
</dl></div>
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
<span class="keyword">namespace</span> <span class="identifier">chrono</span> <span class="special">{</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">duration_punct</span><span class="special">;</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">clock_string</span><span class="special">;</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="identifier">duration_short</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">os</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="identifier">duration_long</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">os</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="keyword">operator</span><span class="special">&lt;&lt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="keyword">operator</span><span class="special">&gt;&gt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">)</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="keyword">operator</span><span class="special">&lt;&lt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">os</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration</span><span class="special">&gt;&amp;</span> <span class="identifier">tp</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="keyword">operator</span><span class="special">&gt;&gt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">is</span><span class="special">,</span>
<span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration</span><span class="special">&gt;&amp;</span> <span class="identifier">tp</span><span class="special">);</span>
<span class="special">}</span>
<span class="special">}</span>
</pre>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.io.chrono_io_hpp.duration_punct"></a><a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.duration_punct" title="Template Class duration_punct&lt;&gt;">Template
Class <code class="computeroutput"><span class="identifier">duration_punct</span><span class="special">&lt;&gt;</span></code></a>
</h5></div></div></div>
<p>
The <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> unit names can be customized
through the facet: <a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.duration_punct" title="Template Class duration_punct&lt;&gt;"><code class="computeroutput"><span class="identifier">duration_punct</span></code></a>. <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> unit names come in
two varieties: long and short. The default constructed <a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.duration_punct" title="Template Class duration_punct&lt;&gt;"><code class="computeroutput"><span class="identifier">duration_punct</span></code></a> provides names
in the long format. These names are English descriptions. Other languages
are supported by constructing a <a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.duration_punct" title="Template Class duration_punct&lt;&gt;"><code class="computeroutput"><span class="identifier">duration_punct</span></code></a> with the proper
spellings for "hours", "minutes" and "seconds",
and their abbreviations (for the short format).
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">duration_punct</span>
<span class="special">:</span> <span class="keyword">public</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span><span class="special">::</span><span class="identifier">facet</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">string_type</span><span class="special">;</span>
<span class="keyword">enum</span> <span class="special">{</span><span class="identifier">use_long</span><span class="special">,</span> <span class="identifier">use_short</span><span class="special">};</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span><span class="special">::</span><span class="identifier">id</span> <span class="identifier">id</span><span class="special">;</span>
<span class="keyword">explicit</span> <span class="identifier">duration_punct</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">use</span> <span class="special">=</span> <span class="identifier">use_long</span><span class="special">);</span>
<span class="identifier">duration_punct</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">use</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">string_type</span><span class="special">&amp;</span> <span class="identifier">long_seconds</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">string_type</span><span class="special">&amp;</span> <span class="identifier">long_minutes</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">string_type</span><span class="special">&amp;</span> <span class="identifier">long_hours</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">string_type</span><span class="special">&amp;</span> <span class="identifier">short_seconds</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">string_type</span><span class="special">&amp;</span> <span class="identifier">short_minutes</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">string_type</span><span class="special">&amp;</span> <span class="identifier">short_hours</span><span class="special">);</span>
<span class="identifier">duration_punct</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">use</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">duration_punct</span><span class="special">&amp;</span> <span class="identifier">d</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Period</span><span class="special">&gt;</span> <span class="identifier">string_type</span> <span class="identifier">short_name</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Period</span><span class="special">&gt;</span> <span class="identifier">string_type</span> <span class="identifier">long_name</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Period</span><span class="special">&gt;</span> <span class="identifier">string_type</span> <span class="identifier">name</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
<span class="keyword">bool</span> <span class="identifier">is_short_name</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
<span class="keyword">bool</span> <span class="identifier">is_long_name</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
<span class="special">};</span>
</pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.io.chrono_io_hpp.clock_string"></a><a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string" title="Template Class clock_string&lt;&gt;">Template
Class <code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;</span></code></a>
</h5></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">clock_string</span><span class="special">;</span>
</pre>
<p>
This template must be specialized for specific clocks. The specialization
must define the following functions
</p>
<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">name</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">since</span><span class="special">();</span>
</pre>
<p>
<code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">name</span><span class="special">()</span></code>
return the clock name, which usually corresponds to the class name.
<code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">since</span><span class="special">()</span></code>
return the textual format of the clock epoch.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.io.chrono_io_hpp.clock_string_system_clock"></a><a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string_system_clock" title="clock_string&lt;system_clock&gt; Specialization"><code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">system_clock</span><span class="special">&gt;</span></code>
Specialization</a>
</h5></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">system_clock</span><span class="special">,</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="special">{</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">name</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">since</span><span class="special">();</span>
<span class="special">};</span>
</pre>
<p>
<code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">name</span><span class="special">()</span></code>
returns "system_clock". <code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">since</span><span class="special">()</span></code> returns " since Jan 1, 1970"
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.io.chrono_io_hpp.clock_string_steady_clock"></a><a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string_steady_clock" title="clock_string&lt;steady_clock&gt; Specialization"><code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">steady_clock</span><span class="special">&gt;</span></code>
Specialization</a>
</h5></div></div></div>
<pre class="programlisting"><span class="preprocessor">#ifdef</span> <span class="identifier">BOOST_CHRONO_HAS_CLOCK_STEADY</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">steady_clock</span><span class="special">,</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="special">{</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">name</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">since</span><span class="special">();</span>
<span class="special">};</span>
<span class="preprocessor">#endif</span>
</pre>
<p>
<code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">name</span><span class="special">()</span></code>
returns "steady_clock". <code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">since</span><span class="special">()</span></code> returns " since boot"
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.io.chrono_io_hpp.clock_string_thread_clock"></a><a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string_thread_clock" title="clock_string&lt;thread_clock&gt; Specialization"><code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">thread_clock</span><span class="special">&gt;</span></code>
Specialization</a>
</h5></div></div></div>
<pre class="programlisting"><span class="preprocessor">#if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_CHRONO_HAS_THREAD_CLOCK</span><span class="special">)</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">thread_clock</span><span class="special">,</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="special">{</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">name</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">since</span><span class="special">();</span>
<span class="special">};</span>
<span class="preprocessor">#endif</span>
</pre>
<p>
<code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">name</span><span class="special">()</span></code>
returns "thread_clock". <code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">since</span><span class="special">()</span></code> returns " since thread start-up"
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.io.chrono_io_hpp.clock_string_process_real_cpu_clock"></a><a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string_process_real_cpu_clock" title="clock_string&lt;process_real_cpu_clock&gt; Specialization"><code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">process_real_cpu_clock</span><span class="special">&gt;</span></code>
Specialization</a>
</h5></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">process_real_cpu_clock</span><span class="special">,</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="special">{</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">name</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">since</span><span class="special">();</span>
<span class="special">};</span>
</pre>
<p>
<code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">name</span><span class="special">()</span></code>
returns "process_real_cpu_clock". <code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">since</span><span class="special">()</span></code> returns " since process start-up"
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.io.chrono_io_hpp.clock_string_process_user_cpu_clock"></a><a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string_process_user_cpu_clock" title="clock_string&lt;process_user_cpu_clock&gt; Specialization"><code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">process_user_cpu_clock</span><span class="special">&gt;</span></code>
Specialization</a>
</h5></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">process_user_cpu_clock</span><span class="special">,</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="special">{</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">name</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">since</span><span class="special">();</span>
<span class="special">};</span>
</pre>
<p>
<code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">name</span><span class="special">()</span></code>
returns "process_user_cpu_clock". <code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">since</span><span class="special">()</span></code> returns " since process start-up"
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.io.chrono_io_hpp.clock_string_process_system_cpu_clock"></a><a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string_process_system_cpu_clock" title="clock_string&lt;process_system_cpu_clock&gt; Specialization"><code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">process_system_cpu_clock</span><span class="special">&gt;</span></code>
Specialization</a>
</h5></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">process_system_cpu_clock</span><span class="special">,</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="special">{</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">name</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">since</span><span class="special">();</span>
<span class="special">};</span>
</pre>
<p>
<code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">name</span><span class="special">()</span></code>
returns "process_system_cpu_clock". <code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">since</span><span class="special">()</span></code> returns " since process start-up"
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.io.chrono_io_hpp.clock_string_process_cpu_clock"></a><a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.clock_string_process_cpu_clock" title="clock_string&lt;process_cpu_clock&gt; Specialization"><code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">process_cpu_clock</span><span class="special">&gt;</span></code>
Specialization</a>
</h5></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">clock_string</span><span class="special">&lt;</span><span class="identifier">process_cpu_clock</span><span class="special">,</span> <span class="identifier">CharT</span><span class="special">&gt;</span>
<span class="special">{</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">name</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">&gt;</span> <span class="identifier">since</span><span class="special">();</span>
<span class="special">};</span>
</pre>
<p>
<code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">name</span><span class="special">()</span></code>
returns "process_cpu_clock". <code class="computeroutput"><span class="identifier">clock_string</span><span class="special">&lt;&gt;::</span><span class="identifier">since</span><span class="special">()</span></code> returns " since process start-up"
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.io.chrono_io_hpp.manipulators"></a><a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.manipulators" title="I/O Manipulators">I/O
Manipulators</a>
</h5></div></div></div>
<p>
The short or long format can be easily chosen by streaming a <code class="computeroutput"><span class="identifier">duration_short</span></code> or <code class="computeroutput"><span class="identifier">duration_long</span></code>
manipulator respectively.
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="identifier">duration_short</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">os</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> Set the <a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.duration_punct" title="Template Class duration_punct&lt;&gt;"><code class="computeroutput"><span class="identifier">duration_punct</span></code></a> facet to stream
<a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>s and <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a>s as abbreviations.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> the output stream
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="identifier">duration_long</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">os</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> Set the <a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.duration_punct" title="Template Class duration_punct&lt;&gt;"><code class="computeroutput"><span class="identifier">duration_punct</span></code></a> facet to stream
durations and time_points as long text.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> the output stream
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.io.chrono_io_hpp.streams"></a><a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.streams" title="I/O Streams Operations">I/O Streams
Operations</a>
</h5></div></div></div>
<p>
Any <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> can be streamed out
to a <code class="computeroutput"><span class="identifier">basic_ostream</span></code>. The
run-time value of the <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> is formatted according
to the rules and current format settings for <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><code class="computeroutput"><span class="special">::</span><span class="identifier">rep</span></code>. This is followed by a single space
and then the compile-time unit name of the <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a>. This unit name is
built on the string returned from <code class="computeroutput"><span class="identifier">ratio_string</span><span class="special">&lt;&gt;</span></code> and the data used to construct
the <a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.duration_punct" title="Template Class duration_punct&lt;&gt;"><code class="computeroutput"><span class="identifier">duration_punct</span></code></a> which was inserted
into the stream's locale. If a <a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.duration_punct" title="Template Class duration_punct&lt;&gt;"><code class="computeroutput"><span class="identifier">duration_punct</span></code></a> has not been
inserted into the stream's locale, a default constructed <a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.duration_punct" title="Template Class duration_punct&lt;&gt;"><code class="computeroutput"><span class="identifier">duration_punct</span></code></a> will be added
to the stream's locale.
</p>
<p>
A <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> is formatted by outputting
its internal <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> followed by a string
that describes the <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><code class="computeroutput"><span class="special">::</span><span class="identifier">clock</span></code> epoch. This string will vary
for each distinct clock, and for each implementation of the supplied
clocks.
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="keyword">operator</span><span class="special">&lt;&lt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> outputs the <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> as an abrevieated or
long text format depending on the state of the <a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.duration_punct" title="Template Class duration_punct&lt;&gt;"><code class="computeroutput"><span class="identifier">duration_punct</span></code></a> facet.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> the output stream
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Rep</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Period</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="keyword">operator</span><span class="special">&gt;&gt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">duration</span><span class="special">&lt;</span><span class="identifier">Rep</span><span class="special">,</span> <span class="identifier">Period</span><span class="special">&gt;&amp;</span> <span class="identifier">d</span><span class="special">)</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> reads a <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a> from the input stream.
If a format error is found, the input stream state will be set to <code class="computeroutput"><span class="identifier">failbit</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> the input stream
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="keyword">operator</span><span class="special">&lt;&lt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">os</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration</span><span class="special">&gt;&amp;</span> <span class="identifier">tp</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> outputs the <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> as an abrevieated
or long text format depending on the state of the <a class="link" href="reference.html#chrono.reference.io.chrono_io_hpp.duration_punct" title="Template Class duration_punct&lt;&gt;"><code class="computeroutput"><span class="identifier">duration_punct</span></code></a> facet.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> the output stream
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Clock</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Duration</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="keyword">operator</span><span class="special">&gt;&gt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">is</span><span class="special">,</span>
<span class="identifier">time_point</span><span class="special">&lt;</span><span class="identifier">Clock</span><span class="special">,</span> <span class="identifier">Duration</span><span class="special">&gt;&amp;</span> <span class="identifier">tp</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effects:</strong></span> reads a <a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a> from the input stream.
If a format error is found, the input stream state will be set to <code class="computeroutput"><span class="identifier">failbit</span></code>.
</p>
<p>
<span class="bold"><strong>Returns:</strong></span> the input stream
</p>
</div>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="chrono.reference.other_clocks"></a><a class="link" href="reference.html#chrono.reference.other_clocks" title="Other Clocks">Other Clocks</a>
</h3></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp">Header
<code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">process_cpu_clocks</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.other_clocks.thread_clock_hpp">Header
<code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">thread_clock</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a></span></dt>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="chrono.reference.other_clocks.process_cpu_clocks_hpp"></a><a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp" title="Header &lt;boost/chrono/process_cpu_clocks.hpp&gt;">Header
<code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">process_cpu_clocks</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
</h4></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_real_cpu_clock">Class
<code class="computeroutput"><span class="identifier">process_real_cpu_clock</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_user_cpu_clock">Class
<code class="computeroutput"><span class="identifier">process_user_cpu_clock</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_system_cpu_clock">Class
<code class="computeroutput"><span class="identifier">process_system_cpu_clock</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_cpu_clock">Class
<code class="computeroutput"><span class="identifier">process_cpu_clock</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.times">Class
<code class="computeroutput"><span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.times_io"><code class="computeroutput"><span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span></code> Input/Output</a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.times_duration_values"><code class="computeroutput"><span class="identifier">duration_values</span></code> Specialization for <code class="computeroutput"><span class="identifier">times</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.times_numeric_limits"><code class="computeroutput"><span class="identifier">numeric_limits</span></code> Specialization for <code class="computeroutput"><span class="identifier">times</span></code></a></span></dt>
</dl></div>
<p>
Knowing how long a program takes to execute is useful in both test and
production environments. It is also helpful if such timing information
is broken down into real (wall clock) time, CPU time spent by the user,
and CPU time spent by the operating system servicing user requests.
</p>
<p>
Process clocks don't include the time spent by the child process.
</p>
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">chrono</span> <span class="special">{</span>
<span class="keyword">class</span> <span class="identifier">process_real_cpu_clock</span><span class="special">;</span>
<span class="keyword">class</span> <span class="identifier">process_user_cpu_clock</span><span class="special">;</span>
<span class="keyword">class</span> <span class="identifier">process_system_cpu_clock</span><span class="special">;</span>
<span class="keyword">class</span> <span class="identifier">process_cpu_clock</span><span class="special">;</span>
<span class="keyword">struct</span> <span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span><span class="special">;</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="keyword">operator</span><span class="special">&lt;&lt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">os</span><span class="special">,</span>
<span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="keyword">operator</span><span class="special">&gt;&gt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">is</span><span class="special">,</span>
<span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;&gt;</span>
<span class="keyword">struct</span> <span class="identifier">duration_values</span><span class="special">&lt;</span><span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span><span class="special">&gt;;</span>
<span class="special">}</span> <span class="special">}</span>
<span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span>
<span class="keyword">template</span> <span class="special">&lt;&gt;</span>
<span class="keyword">class</span> <span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">chrono</span><span class="special">::</span><span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span><span class="special">&gt;;</span>
<span class="special">}</span>
</pre>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.other_clocks.process_cpu_clocks_hpp.process_real_cpu_clock"></a><a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_real_cpu_clock" title="Class process_real_cpu_clock">Class
<code class="computeroutput"><span class="identifier">process_real_cpu_clock</span></code></a>
</h5></div></div></div>
<p>
<a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_real_cpu_clock" title="Class process_real_cpu_clock"><code class="computeroutput"><span class="identifier">process_real_cpu_clock</span></code></a> satisfy
the <a class="link" href="reference.html#chrono.reference.cpp0x.clock" title="Clock Requirements"><code class="computeroutput"><span class="identifier">Clock</span></code></a>
requirements.
</p>
<p>
<a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_real_cpu_clock" title="Class process_real_cpu_clock"><code class="computeroutput"><span class="identifier">process_real_cpu_clock</span></code></a> class
provides access to the real process wall-clock steady clock, i.e. the
real CPU-time clock of the calling process. The process relative current
time can be obtained by calling <code class="computeroutput"><span class="identifier">process_real_cpu_clock</span><span class="special">::</span><span class="identifier">now</span><span class="special">()</span></code>.
</p>
<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">process_real_cpu_clock</span> <span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="keyword">typedef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_typedefs" title="duration typedefs"><code class="computeroutput"><span class="identifier">nanoseconds</span></code></a> <span class="identifier">duration</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">rep</span> <span class="identifier">rep</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">period</span> <span class="identifier">period</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">chrono</span><span class="special">::</span><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">process_real_cpu_clock</span><span class="special">&gt;</span> <span class="identifier">time_point</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="identifier">is_steady</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">time_point</span> <span class="identifier">now</span><span class="special">(</span> <span class="identifier">system</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&amp;</span> <span class="identifier">ec</span> <span class="special">=</span> <span class="identifier">system</span><span class="special">::</span><span class="identifier">throws</span> <span class="special">);</span>
<span class="special">};</span>
</pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.other_clocks.process_cpu_clocks_hpp.process_user_cpu_clock"></a><a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_user_cpu_clock" title="Class process_user_cpu_clock">Class
<code class="computeroutput"><span class="identifier">process_user_cpu_clock</span></code></a>
</h5></div></div></div>
<p>
<a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_user_cpu_clock" title="Class process_user_cpu_clock"><code class="computeroutput"><span class="identifier">process_user_cpu_clock</span></code></a> satisfy
the <a class="link" href="reference.html#chrono.reference.cpp0x.clock" title="Clock Requirements"><code class="computeroutput"><span class="identifier">Clock</span></code></a>
requirements.
</p>
<p>
<a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_user_cpu_clock" title="Class process_user_cpu_clock"><code class="computeroutput"><span class="identifier">process_user_cpu_clock</span></code></a> class
provides access to the user CPU-time steady clock of the calling process.
The process relative user current time can be obtained by calling <code class="computeroutput"><span class="identifier">process_user_cpu_clock</span><span class="special">::</span><span class="identifier">now</span><span class="special">()</span></code>.
</p>
<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">process_user_cpu_clock</span> <span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="keyword">typedef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_typedefs" title="duration typedefs"><code class="computeroutput"><span class="identifier">nanoseconds</span></code></a> <span class="identifier">duration</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">rep</span> <span class="identifier">rep</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">period</span> <span class="identifier">period</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">chrono</span><span class="special">::</span><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">process_user_cpu_clock</span><span class="special">&gt;</span> <span class="identifier">time_point</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="identifier">is_steady</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">time_point</span> <span class="identifier">now</span><span class="special">(</span> <span class="identifier">system</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&amp;</span> <span class="identifier">ec</span> <span class="special">=</span> <span class="identifier">system</span><span class="special">::</span><span class="identifier">throws</span> <span class="special">);</span>
<span class="special">};</span>
</pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.other_clocks.process_cpu_clocks_hpp.process_system_cpu_clock"></a><a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_system_cpu_clock" title="Class process_system_cpu_clock">Class
<code class="computeroutput"><span class="identifier">process_system_cpu_clock</span></code></a>
</h5></div></div></div>
<p>
<a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_system_cpu_clock" title="Class process_system_cpu_clock"><code class="computeroutput"><span class="identifier">process_system_cpu_clock</span></code></a> satisfy
the <a class="link" href="reference.html#chrono.reference.cpp0x.clock" title="Clock Requirements"><code class="computeroutput"><span class="identifier">Clock</span></code></a>
requirements.
</p>
<p>
<a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_system_cpu_clock" title="Class process_system_cpu_clock"><code class="computeroutput"><span class="identifier">process_system_cpu_clock</span></code></a> class
provides access to the system CPU-time steady clockof the calling process.
The process relative system current time can be obtained by calling
<code class="computeroutput"><span class="identifier">process_system_cpu_clock</span><span class="special">::</span><span class="identifier">now</span><span class="special">()</span></code>.
</p>
<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">process_system_cpu_clock</span> <span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="keyword">typedef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_typedefs" title="duration typedefs"><code class="computeroutput"><span class="identifier">nanoseconds</span></code></a> <span class="identifier">duration</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">rep</span> <span class="identifier">rep</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">period</span> <span class="identifier">period</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">chrono</span><span class="special">::</span><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">process_system_cpu_clock</span><span class="special">&gt;</span> <span class="identifier">time_point</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="identifier">is_steady</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">time_point</span> <span class="identifier">now</span><span class="special">(</span> <span class="identifier">system</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&amp;</span> <span class="identifier">ec</span> <span class="special">=</span> <span class="identifier">system</span><span class="special">::</span><span class="identifier">throws</span> <span class="special">);</span>
<span class="special">};</span>
</pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.other_clocks.process_cpu_clocks_hpp.process_cpu_clock"></a><a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.process_cpu_clock" title="Class process_cpu_clock">Class
<code class="computeroutput"><span class="identifier">process_cpu_clock</span></code></a>
</h5></div></div></div>
<p>
<code class="computeroutput"><span class="identifier">process_cpu_clock</span></code> can
be considered as a <code class="computeroutput"><span class="identifier">tuple</span><span class="special">&lt;</span><span class="identifier">process_real_cpu_clock</span><span class="special">,</span> <span class="identifier">process_user_cpu_clock</span><span class="special">,</span> <span class="identifier">process_system_cpu_clock</span><span class="special">&gt;</span></code>.
</p>
<p>
<code class="computeroutput"><span class="identifier">process_cpu_clock</span></code> provides
a thin wrapper around the operating system's process time API. For POSIX-like
systems, that's the times() function, while for Windows, it's the <code class="computeroutput"><span class="identifier">GetProcessTimes</span><span class="special">()</span></code>
function.
</p>
<p>
The process relative real, user and system current time can be obtained
at once by calling <code class="computeroutput"><span class="identifier">process_clocks</span><span class="special">::</span><span class="identifier">now</span><span class="special">()</span></code>.
</p>
<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">process_cpu_clock</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="keyword">struct</span> <span class="identifier">times</span> <span class="special">;</span>
<span class="keyword">typedef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration" title="Class Template duration&lt;&gt;"><code class="computeroutput"><span class="identifier">duration</span></code></a><span class="special">&lt;</span><span class="identifier">times</span><span class="special">,</span> <span class="identifier">nano</span><span class="special">&gt;</span> <span class="identifier">duration</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">rep</span> <span class="identifier">rep</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">period</span> <span class="identifier">period</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">chrono</span><span class="special">::</span><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">process_cpu_clock</span><span class="special">&gt;</span> <span class="identifier">time_point</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="identifier">is_steady</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">time_point</span> <span class="identifier">now</span><span class="special">(</span> <span class="identifier">system</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&amp;</span> <span class="identifier">ec</span> <span class="special">=</span> <span class="identifier">system</span><span class="special">::</span><span class="identifier">throws</span> <span class="special">);</span>
<span class="special">};</span>
</pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.other_clocks.process_cpu_clocks_hpp.times"></a><a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.times" title="Class process_cpu_clock::times">Class
<code class="computeroutput"><span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span></code></a>
</h5></div></div></div>
<p>
This class is the representation of the <code class="computeroutput"><span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">duration</span></code>
class. As such it needs to implements the arithmetic operators.
</p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">times</span> <span class="special">:</span> <span class="identifier">arithmetic</span><span class="special">&lt;</span><span class="identifier">times</span><span class="special">,</span>
<span class="identifier">multiplicative</span><span class="special">&lt;</span><span class="identifier">times</span><span class="special">,</span> <span class="identifier">process_real_cpu_clock</span><span class="special">::</span><span class="identifier">rep</span><span class="special">,</span>
<span class="identifier">less_than_comparable</span><span class="special">&lt;</span><span class="identifier">times</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="identifier">process_real_cpu_clock</span><span class="special">::</span><span class="identifier">rep</span> <span class="identifier">real</span><span class="special">;</span> <span class="comment">// real (i.e wall clock) time</span>
<span class="identifier">process_user_cpu_clock</span><span class="special">::</span><span class="identifier">rep</span> <span class="identifier">user</span><span class="special">;</span> <span class="comment">// user cpu time</span>
<span class="identifier">process_system_cpu_clock</span><span class="special">::</span><span class="identifier">rep</span> <span class="identifier">system</span><span class="special">;</span> <span class="comment">// system cpu time</span>
<span class="identifier">times</span><span class="special">();</span>
<span class="identifier">times</span><span class="special">(</span>
<span class="identifier">process_real_cpu_clock</span><span class="special">::</span><span class="identifier">rep</span> <span class="identifier">r</span><span class="special">,</span>
<span class="identifier">process_user_cpu_clock</span><span class="special">::</span><span class="identifier">rep</span> <span class="identifier">u</span><span class="special">,</span>
<span class="identifier">process_system_cpu_clock</span><span class="special">::</span><span class="identifier">rep</span> <span class="identifier">s</span><span class="special">);</span>
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="identifier">times</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="identifier">times</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="identifier">times</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="identifier">times</span> <span class="keyword">operator</span><span class="special">-=(</span><span class="identifier">times</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="identifier">times</span> <span class="keyword">operator</span><span class="special">*=(</span><span class="identifier">times</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="identifier">times</span> <span class="keyword">operator</span><span class="special">/=(</span><span class="identifier">times</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;(</span><span class="identifier">times</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
<span class="special">};</span>
</pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.other_clocks.process_cpu_clocks_hpp.times_io"></a><a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.times_io" title="process_cpu_clock::times Input/Output"><code class="computeroutput"><span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span></code> Input/Output</a>
</h5></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="keyword">operator</span><span class="special">&lt;&lt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">os</span><span class="special">,</span>
<span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effect</strong></span>: Output each part separated by
';' and sourrounded by '{', '}'. <span class="bold"><strong>Throws</strong></span>:
None.
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">CharT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">&gt;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span>
<span class="keyword">operator</span><span class="special">&gt;&gt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_istream</span><span class="special">&lt;</span><span class="identifier">CharT</span><span class="special">,</span> <span class="identifier">Traits</span><span class="special">&gt;&amp;</span> <span class="identifier">is</span><span class="special">,</span>
<span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
</pre>
<p>
<span class="bold"><strong>Effect</strong></span>: overrides the value of rhs if
the input stream has the format "{r;u;s}". Otherwise, set the
input stream state as failbit | eofbit. <span class="bold"><strong>Throws</strong></span>:
None.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.other_clocks.process_cpu_clocks_hpp.times_duration_values"></a><a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.times_duration_values" title="duration_values Specialization for times"><code class="computeroutput"><span class="identifier">duration_values</span></code> Specialization for <code class="computeroutput"><span class="identifier">times</span></code></a>
</h5></div></div></div>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;&gt;</span>
<span class="keyword">struct</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.traits.duration_values" title="Class Template duration_values"><code class="computeroutput"><span class="identifier">duration_values</span></code></a><span class="special">&lt;</span><span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span><span class="special">&gt;</span>
<span class="special">{</span>
<span class="keyword">static</span> <span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span> <span class="identifier">zero</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span> <span class="identifier">max</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span> <span class="identifier">min</span><span class="special">();</span>
<span class="special">};</span>
</pre>
<p>
The <code class="computeroutput"><span class="identifier">times</span></code> specific functions
<code class="computeroutput"><span class="identifier">zero</span><span class="special">()</span></code>,
<code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code>
and <code class="computeroutput"><span class="identifier">min</span><span class="special">()</span></code>
uses the relative functions on the representation of each component.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.other_clocks.process_cpu_clocks_hpp.times_numeric_limits"></a><a class="link" href="reference.html#chrono.reference.other_clocks.process_cpu_clocks_hpp.times_numeric_limits" title="numeric_limits Specialization for times"><code class="computeroutput"><span class="identifier">numeric_limits</span></code> Specialization for <code class="computeroutput"><span class="identifier">times</span></code></a>
</h5></div></div></div>
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span> <span class="special">{</span>
<span class="keyword">template</span> <span class="special">&lt;&gt;</span>
<span class="keyword">class</span> <span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">chrono</span><span class="special">::</span><span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span><span class="special">&gt;</span> <span class="special">{</span>
<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">chrono</span><span class="special">::</span><span class="identifier">process_cpu_clock</span><span class="special">::</span><span class="identifier">times</span> <span class="identifier">Rep</span><span class="special">;</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">bool</span> <span class="identifier">is_specialized</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">Rep</span> <span class="identifier">min</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">Rep</span> <span class="identifier">max</span><span class="special">();</span>
<span class="keyword">static</span> <span class="identifier">Rep</span> <span class="identifier">lowest</span><span class="special">();</span>
<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">digits</span><span class="special">;</span>
<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">digits10</span><span class="special">;</span>
<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">bool</span> <span class="identifier">is_signed</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">;</span>
<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">bool</span> <span class="identifier">is_integer</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">bool</span> <span class="identifier">is_exact</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">radix</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
<span class="special">};</span>
<span class="special">}</span>
</pre>
<p>
The <code class="computeroutput"><span class="identifier">times</span></code> specialization
functions <code class="computeroutput"><span class="identifier">min</span><span class="special">()</span></code>,
<code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code>
and <code class="computeroutput"><span class="identifier">lowest</span><span class="special">()</span></code>
uses the relative functions on the representation of each component.
</p>
<p>
Notes
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<code class="computeroutput"><span class="identifier">min</span><span class="special">()</span></code>
returns the tuple of mins.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code>
returns the tuple of maxs.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">lowest</span><span class="special">()</span></code>
returns the tuple of lowests.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">digits</span></code> is the sum
of (binary) digits.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">digits10</span></code> is the sum
of digits10s.
</li>
</ul></div>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="chrono.reference.other_clocks.thread_clock_hpp"></a><a class="link" href="reference.html#chrono.reference.other_clocks.thread_clock_hpp" title="Header &lt;boost/chrono/thread_clock.hpp&gt;">Header
<code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">chrono</span><span class="special">/</span><span class="identifier">thread_clock</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
</h4></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="reference.html#chrono.reference.other_clocks.thread_clock_hpp.BOOST_CHRONO_HAS_THREAD_CLOCK">Macro
<code class="computeroutput"><span class="identifier">BOOST_CHRONO_HAS_THREAD_CLOCK</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.other_clocks.thread_clock_hpp.BOOST_CHRONO_THREAD_CLOCK_IS_STEADY">Macro
<code class="computeroutput"><span class="identifier">BOOST_CHRONO_THREAD_CLOCK_IS_STEADY</span></code></a></span></dt>
<dt><span class="section"><a href="reference.html#chrono.reference.other_clocks.thread_clock_hpp.thread_clock">Class
<code class="computeroutput"><span class="identifier">thread_clock</span></code></a></span></dt>
</dl></div>
<p>
Knowing the time a thread takes to execute is useful in both test and production
environments.
</p>
<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_CHRONO_HAS_THREAD_CLOCK</span>
<span class="preprocessor">#define</span> <span class="identifier">BOOST_CHRONO_THREAD_CLOCK_IS_STEADY</span>
<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">chrono</span> <span class="special">{</span>
<span class="keyword">class</span> <span class="identifier">thread_clock</span><span class="special">;</span>
<span class="special">}</span> <span class="special">}</span>
</pre>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.other_clocks.thread_clock_hpp.BOOST_CHRONO_HAS_THREAD_CLOCK"></a><a class="link" href="reference.html#chrono.reference.other_clocks.thread_clock_hpp.BOOST_CHRONO_HAS_THREAD_CLOCK" title="Macro BOOST_CHRONO_HAS_THREAD_CLOCK">Macro
<code class="computeroutput"><span class="identifier">BOOST_CHRONO_HAS_THREAD_CLOCK</span></code></a>
</h5></div></div></div>
<p>
This macro is defined if the platform supports thread clocks.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.other_clocks.thread_clock_hpp.BOOST_CHRONO_THREAD_CLOCK_IS_STEADY"></a><a class="link" href="reference.html#chrono.reference.other_clocks.thread_clock_hpp.BOOST_CHRONO_THREAD_CLOCK_IS_STEADY" title="Macro BOOST_CHRONO_THREAD_CLOCK_IS_STEADY">Macro
<code class="computeroutput"><span class="identifier">BOOST_CHRONO_THREAD_CLOCK_IS_STEADY</span></code></a>
</h5></div></div></div>
<p>
This macro is defined if the platform has a thread clock. Its value is
true if it is steady and false otherwise.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="chrono.reference.other_clocks.thread_clock_hpp.thread_clock"></a><a class="link" href="reference.html#chrono.reference.other_clocks.thread_clock_hpp.thread_clock" title="Class thread_clock">Class
<code class="computeroutput"><span class="identifier">thread_clock</span></code></a>
</h5></div></div></div>
<p>
<a class="link" href="reference.html#chrono.reference.other_clocks.thread_clock_hpp.thread_clock" title="Class thread_clock"><code class="computeroutput"><span class="identifier">thread_clock</span></code></a> satisfy the <a class="link" href="reference.html#chrono.reference.cpp0x.clock" title="Clock Requirements"><code class="computeroutput"><span class="identifier">Clock</span></code></a>
requirements.
</p>
<p>
<a class="link" href="reference.html#chrono.reference.other_clocks.thread_clock_hpp.thread_clock" title="Class thread_clock"><code class="computeroutput"><span class="identifier">thread_clock</span></code></a> class provides
access to the real thread wall-clock, i.e. the real CPU-time clock of
the calling thread. The thread relative current time can be obtained
by calling <code class="computeroutput"><span class="identifier">thread_clock</span><span class="special">::</span><span class="identifier">now</span><span class="special">()</span></code>.
</p>
<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">thread_clock</span> <span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="keyword">typedef</span> <a class="link" href="reference.html#chrono.reference.cpp0x.duration_hpp.duration_typedefs" title="duration typedefs"><code class="computeroutput"><span class="identifier">nanoseconds</span></code></a> <span class="identifier">duration</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">rep</span> <span class="identifier">rep</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">duration</span><span class="special">::</span><span class="identifier">period</span> <span class="identifier">period</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">chrono</span><span class="special">::</span><a class="link" href="reference.html#chrono.reference.cpp0x.time_point_hpp.time_point" title="Class template time_point&lt;&gt;"><code class="computeroutput"><span class="identifier">time_point</span></code></a><span class="special">&lt;</span><span class="identifier">thread_clock</span><span class="special">&gt;</span> <span class="identifier">time_point</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="keyword">bool</span> <span class="identifier">is_steady</span> <span class="special">=</span> <span class="identifier">BOOST_CHRONO_THREAD_CLOCK_IS_STEADY</span><span class="special">;</span>
<span class="keyword">static</span> <span class="identifier">time_point</span> <span class="identifier">now</span><span class="special">(</span> <span class="identifier">system</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&amp;</span> <span class="identifier">ec</span> <span class="special">=</span> <span class="identifier">system</span><span class="special">::</span><span class="identifier">throws</span> <span class="special">);</span>
<span class="special">};</span>
</pre>
</div>
</div>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2008 Howard Hinnant<br>Copyright &#169; 2006, 2008 Beman Dawes<br>Copyright &#169; 2009-2011 Vicente J. Botet
Escriba<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="users_guide.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../chrono.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="appendices.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>