Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r75596 - in branches/release/libs/numeric/conversion/doc/html: . boost_numericconversion numeric_conversion
From: blkohn_at_[hidden]
Date: 2011-11-21 11:46:58


Author: brandon.kohn
Date: 2011-11-21 11:46:56 EST (Mon, 21 Nov 2011)
New Revision: 75596
URL: http://svn.boost.org/trac/boost/changeset/75596

Log:
Missed imports to numeric_cast_traits docs.
Text files modified:
   branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/bounds___traits_class.html | 102 +--
   branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/conversion_traits___traits_class.html | 399 ++++++++---------
   branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/converter___function_object.html | 396 +++++++---------
   branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/definitions.html | 911 +++++++++++++++++++++------------------
   branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/improved_numeric_cast__.html | 156 ++++--
   branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/numeric_converter_policy_classes.html | 181 +++----
   branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/type_requirements_and_user_defined_types_support.html | 521 +++++++++++++++++++---
   branches/release/libs/numeric/conversion/doc/html/index.html | 90 ++-
   branches/release/libs/numeric/conversion/doc/html/numeric_conversion/bibliography.html | 129 +++--
   branches/release/libs/numeric/conversion/doc/html/numeric_conversion/history_and_acknowledgments.html | 121 ++--
   10 files changed, 1722 insertions(+), 1284 deletions(-)

Modified: branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/bounds___traits_class.html
==============================================================================
--- branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/bounds___traits_class.html (original)
+++ branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/bounds___traits_class.html 2011-11-21 11:46:56 EST (Mon, 21 Nov 2011)
@@ -1,43 +1,37 @@
 <html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>bounds&lt;&gt; traits class</title>
 <link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="up" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="prev" href="type_requirements_and_user_defined_types_support.html" title="Type Requirements and User-defined-types support">
-<link rel="next" href="conversion_traits___traits_class.html" title="conversion_traits&lt;&gt; traits class">
+<meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
 </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">Home</td>
-<td align="center">Libraries</td>
+<td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="type_requirements_and_user_defined_types_support.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="conversion_traits___traits_class.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
-<div class="section" title="bounds&lt;&gt; traits class">
+<div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_numericconversion.bounds___traits_class"></a><a class="link" href="bounds___traits_class.html" title="bounds&lt;&gt; traits class">bounds&lt;&gt;
     traits class</a>
 </h2></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section">Introduction</span></dt>
-<dt><span class="section"><a href="bounds___traits_class.html#boost_numericconversion.bounds___traits_class.traits_class_bounds_n_">traits
- class bounds&lt;N&gt;</a></span></dt>
-<dt><span class="section">Examples</span></dt>
-</dl></div>
-<div class="section" title="Introduction">
+
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.bounds___traits_class.introduction"></a><a class="link" href="bounds___traits_class.html#boost_numericconversion.bounds___traits_class.introduction" title="Introduction">Introduction</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         To determine the ranges of numeric types with <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
         [18.2.1], different syntax have to be used depending on numeric type. Specifically,
         <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">min</span><span class="special">()</span></code> for
@@ -45,19 +39,20 @@
         types it returns the minimum positive normalized value. The difference in
         semantics makes client code unnecessarily complex and error prone.
       </p>
-<p>
+ <p>
         <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">bounds</span><span class="special">&lt;&gt;</span></code>
         provides a consistent interface for retrieving the maximum finite value,
         the minimum finite value and the minimum positive normalized value (0 for
         integral types) for numeric types. The selection of implementation is performed
         at compile time, so there is no runtime overhead.
       </p>
-</div>
-<div class="section" title="traits class bounds&lt;N&gt;">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.bounds___traits_class.traits_class_bounds_n_"></a><a class="link" href="bounds___traits_class.html#boost_numericconversion.bounds___traits_class.traits_class_bounds_n_" title="traits class bounds&lt;N&gt;">traits
       class bounds&lt;N&gt;</a>
 </h3></div></div></div>
+
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">N</span><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">bounds</span>
 <span class="special">{</span>
@@ -66,56 +61,45 @@
     <span class="keyword">static</span> <span class="identifier">N</span> <span class="identifier">smallest</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">implementation_defined</span><span class="special">;</span> <span class="special">}</span>
 <span class="special">};</span>
 </pre>
-<a name="boost_numericconversion.bounds___traits_class.traits_class_bounds_n_.members"></a><h5>
-<a name="id565414"></a>
- <a class="link" href="bounds___traits_class.html#boost_numericconversion.bounds___traits_class.traits_class_bounds_n_.members">Members</a>
+ <h5>
+<a name="boost_numericconversion.bounds___traits_class.traits_class_bounds_n_.h0"></a>
+ <span><a name="boost_numericconversion.bounds___traits_class.traits_class_bounds_n_.members"></a></span><a class="link" href="bounds___traits_class.html#boost_numericconversion.bounds___traits_class.traits_class_bounds_n_.members">Members</a>
       </h5>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
- </p>
-<p>
- <code class="computeroutput"><span class="identifier">lowest</span><span class="special">()</span></code>
- </p>
-<p>
+ <div class="blockquote"><blockquote class="blockquote">
+ <p>
+ <code class="computeroutput"><span class="identifier">lowest</span><span class="special">()</span></code>
         </p>
-</blockquote></div>
-<p>
+ </blockquote></div>
+ <p>
         Returns the minimum finite value, equivalent to <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">min</span><span class="special">()</span></code> when
         <code class="computeroutput"><span class="identifier">T</span></code> is an integral type, and
         to <code class="computeroutput"><span class="special">-</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">()</span></code> when
         <code class="computeroutput"><span class="identifier">T</span></code> is a floating point type.
       </p>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
- </p>
-<p>
- <code class="computeroutput"><span class="identifier">highest</span><span class="special">()</span></code>
- </p>
-<p>
+ <div class="blockquote"><blockquote class="blockquote">
+ <p>
+ <code class="computeroutput"><span class="identifier">highest</span><span class="special">()</span></code>
         </p>
-</blockquote></div>
-<p>
+ </blockquote></div>
+ <p>
         Returns the maximum finite value, equivalent to <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">()</span></code>.
       </p>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
- </p>
-<p>
- <code class="computeroutput"><span class="identifier">smallest</span><span class="special">()</span></code>
- </p>
-<p>
+ <div class="blockquote"><blockquote class="blockquote">
+ <p>
+ <code class="computeroutput"><span class="identifier">smallest</span><span class="special">()</span></code>
         </p>
-</blockquote></div>
-<p>
+ </blockquote></div>
+ <p>
         Returns the smallest positive normalized value for floating point types with
         denormalization, or returns 0 for integral types.
       </p>
-</div>
-<div class="section" title="Examples">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.bounds___traits_class.examples"></a><a class="link" href="bounds___traits_class.html#boost_numericconversion.bounds___traits_class.examples" title="Examples">Examples</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         The following example demonstrates the use of <code class="computeroutput"><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">bounds</span><span class="special">&lt;&gt;</span></code> and the equivalent code using <code class="computeroutput"><span class="identifier">numeric_limits</span></code>:
       </p>
 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
@@ -142,19 +126,15 @@
     <span class="keyword">return</span> <span class="number">0</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 © 2004 -2007 Fernando Luis Cacciola Carballal<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="type_requirements_and_user_defined_types_support.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="conversion_traits___traits_class.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
 </body>
 </html>

Modified: branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/conversion_traits___traits_class.html
==============================================================================
--- branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/conversion_traits___traits_class.html (original)
+++ branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/conversion_traits___traits_class.html 2011-11-21 11:46:56 EST (Mon, 21 Nov 2011)
@@ -1,63 +1,42 @@
 <html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>conversion_traits&lt;&gt; traits class</title>
 <link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="up" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="prev" href="bounds___traits_class.html" title="bounds&lt;&gt; traits class">
-<link rel="next" href="numeric_converter_policy_classes.html" title="Numeric Converter Policy Classes">
+<meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
 </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">Home</td>
-<td align="center">Libraries</td>
+<td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="bounds___traits_class.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="numeric_converter_policy_classes.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
-<div class="section" title="conversion_traits&lt;&gt; traits class">
+<div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_numericconversion.conversion_traits___traits_class"></a><a class="link" href="conversion_traits___traits_class.html" title="conversion_traits&lt;&gt; traits class">conversion_traits&lt;&gt;
     traits class</a>
 </h2></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section">Types</span></dt>
-<dt><span class="section">Examples</span></dt>
-</dl></div>
-<div class="section" title="Types">
+
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.conversion_traits___traits_class.types"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types" title="Types">Types</a>
 </h3></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_int_float_mixture_enum">enumeration
- int_float_mixture_enum</a></span></dt>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_sign_mixture_enum">enumeration
- sign_mixture_enum</a></span></dt>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_udt_builtin_mixture_enum">enumeration
- udt_builtin_mixture_enum</a></span></dt>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_int_float_mixture__">template
- class int_float_mixture&lt;&gt;</a></span></dt>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_sign_mixture__">template
- class sign_mixture&lt;&gt;</a></span></dt>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_udt_builtin_mixture__">template
- class udt_builtin_mixture&lt;&gt;</a></span></dt>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_is_subranged__">template
- class is_subranged&lt;&gt;</a></span></dt>
-<dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_conversion_traits__">template
- class conversion_traits&lt;&gt;</a></span></dt>
-</dl></div>
-<div class="section" title="enumeration int_float_mixture_enum">
+
+ <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_numericconversion.conversion_traits___traits_class.types.enumeration_int_float_mixture_enum"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_int_float_mixture_enum" title="enumeration int_float_mixture_enum">enumeration
         int_float_mixture_enum</a>
 </h4></div></div></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">numeric</span> <span class="special">{</span>
 
     <span class="keyword">enum</span> <span class="identifier">int_float_mixture_enum</span>
@@ -68,14 +47,15 @@
       <span class="special">,</span><span class="identifier">float_to_float</span>
     <span class="special">}</span> <span class="special">;</span>
 
-<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric
-</span></pre>
-</div>
-<div class="section" title="enumeration sign_mixture_enum">
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric</span>
+</pre>
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_numericconversion.conversion_traits___traits_class.types.enumeration_sign_mixture_enum"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_sign_mixture_enum" title="enumeration sign_mixture_enum">enumeration
         sign_mixture_enum</a>
 </h4></div></div></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">numeric</span> <span class="special">{</span>
 
 <span class="keyword">enum</span> <span class="identifier">sign_mixture_enum</span>
@@ -86,14 +66,15 @@
   <span class="special">,</span><span class="identifier">unsigned_to_signed</span>
 <span class="special">}</span> <span class="special">;</span>
 
-<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric
-</span></pre>
-</div>
-<div class="section" title="enumeration udt_builtin_mixture_enum">
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric</span>
+</pre>
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_numericconversion.conversion_traits___traits_class.types.enumeration_udt_builtin_mixture_enum"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_udt_builtin_mixture_enum" title="enumeration udt_builtin_mixture_enum">enumeration
         udt_builtin_mixture_enum</a>
 </h4></div></div></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">numeric</span> <span class="special">{</span>
 
     <span class="keyword">enum</span> <span class="identifier">udt_builtin_mixture_enum</span>
@@ -104,108 +85,113 @@
       <span class="special">,</span><span class="identifier">udt_to_udt</span>
     <span class="special">}</span> <span class="special">;</span>
 
-<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric
-</span></pre>
-</div>
-<div class="section" title="template class int_float_mixture&lt;&gt;">
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric</span>
+</pre>
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_numericconversion.conversion_traits___traits_class.types.template_class_int_float_mixture__"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_int_float_mixture__" title="template class int_float_mixture&lt;&gt;">template
         class int_float_mixture&lt;&gt;</a>
 </h4></div></div></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">numeric</span> <span class="special">{</span>
 
     <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">S</span><span class="special">&gt;</span>
     <span class="keyword">struct</span> <span class="identifier">int_float_mixture</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span><span class="special">&lt;</span><span class="identifier">int_float_mixture_enum</span><span class="special">,</span> <span class="identifier">impl</span><span class="special">-</span><span class="identifier">def</span><span class="special">-</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="special">{}</span> <span class="special">;</span>
 
-<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric
-</span></pre>
-<p>
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric</span>
+</pre>
+ <p>
           Classifying <code class="computeroutput"><span class="identifier">S</span></code> and <code class="computeroutput"><span class="identifier">T</span></code> as either integral or float, this
- <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
+ <a class="ulink" href="../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
           Integral Constant</a> indicates the combination of these attributes.
         </p>
-<p>
+ <p>
           Its <code class="computeroutput"><span class="special">::</span><span class="identifier">value</span></code>
           is of enumeration type <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_int_float_mixture_enum" title="enumeration int_float_mixture_enum"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">int_float_mixture_enum</span></code></a>
         </p>
-</div>
-<div class="section" title="template class sign_mixture&lt;&gt;">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_numericconversion.conversion_traits___traits_class.types.template_class_sign_mixture__"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_sign_mixture__" title="template class sign_mixture&lt;&gt;">template
         class sign_mixture&lt;&gt;</a>
 </h4></div></div></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">numeric</span> <span class="special">{</span>
 
     <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">S</span><span class="special">&gt;</span>
     <span class="keyword">struct</span> <span class="identifier">sign_mixture</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span><span class="special">&lt;</span><span class="identifier">sign_mixture_enum</span><span class="special">,</span> <span class="identifier">impl</span><span class="special">-</span><span class="identifier">def</span><span class="special">-</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="special">{}</span> <span class="special">;</span>
 
-<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric
-</span></pre>
-<p>
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric</span>
+</pre>
+ <p>
           Classifying <code class="computeroutput"><span class="identifier">S</span></code> and <code class="computeroutput"><span class="identifier">T</span></code> as either signed or unsigned, this
- <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
+ <a class="ulink" href="../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
           Integral Constant</a> indicates the combination of these attributes.
         </p>
-<p>
+ <p>
           Its <code class="computeroutput"><span class="special">::</span><span class="identifier">value</span></code>
           is of enumeration type <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_sign_mixture_enum" title="enumeration sign_mixture_enum"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">sign_mixture_enum</span></code></a>
         </p>
-</div>
-<div class="section" title="template class udt_builtin_mixture&lt;&gt;">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_numericconversion.conversion_traits___traits_class.types.template_class_udt_builtin_mixture__"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_udt_builtin_mixture__" title="template class udt_builtin_mixture&lt;&gt;">template
         class udt_builtin_mixture&lt;&gt;</a>
 </h4></div></div></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">numeric</span> <span class="special">{</span>
 
     <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">S</span><span class="special">&gt;</span>
     <span class="keyword">struct</span> <span class="identifier">udt_builtin_mixture</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span><span class="special">&lt;</span><span class="identifier">udt_builtin__mixture_enum</span><span class="special">,</span> <span class="identifier">impl</span><span class="special">-</span><span class="identifier">def</span><span class="special">-</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="special">{}</span> <span class="special">;</span>
 
-<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric
-</span></pre>
-<p>
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric</span>
+</pre>
+ <p>
           Classifying <code class="computeroutput"><span class="identifier">S</span></code> and <code class="computeroutput"><span class="identifier">T</span></code> as either user-defined or builtin,
- this <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
+ this <a class="ulink" href="../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
           Integral Constant</a> indicates the combination of these attributes.
         </p>
-<p>
+ <p>
           Its <code class="computeroutput"><span class="special">::</span><span class="identifier">value</span></code>
           is of enumeration type <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_udt_builtin_mixture_enum" title="enumeration udt_builtin_mixture_enum"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">udt_builtin_mixture_enum</span></code></a>
         </p>
-</div>
-<div class="section" title="template class is_subranged&lt;&gt;">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_numericconversion.conversion_traits___traits_class.types.template_class_is_subranged__"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_is_subranged__" title="template class is_subranged&lt;&gt;">template
         class is_subranged&lt;&gt;</a>
 </h4></div></div></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">numeric</span> <span class="special">{</span>
 
     <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">S</span><span class="special">&gt;</span>
     <span class="keyword">struct</span> <span class="identifier">is_subranged</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">bool_</span><span class="special">&lt;</span><span class="identifier">impl</span><span class="special">-</span><span class="identifier">def</span><span class="special">-</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="special">{}</span> <span class="special">;</span>
 
-<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric
-</span></pre>
-<p>
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric</span>
+</pre>
+ <p>
           Indicates if the range of the target type <code class="computeroutput"><span class="identifier">T</span></code>
           is a subset of the range of the source type <code class="computeroutput"><span class="identifier">S</span></code>.
           That is: if there are some source values which fall out of the Target type's
           range.
         </p>
-<p>
- It is a boolean <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
+ <p>
+ It is a boolean <a class="ulink" href="../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
           Integral Constant</a> .
         </p>
-<p>
+ <p>
           It does not indicate if a particular conversion is effectively out of range;
           it indicates that some conversion might be out of range because not all
           the source values are representable as Target type.
         </p>
-</div>
-<div class="section" title="template class conversion_traits&lt;&gt;">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="boost_numericconversion.conversion_traits___traits_class.types.template_class_conversion_traits__"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_conversion_traits__" title="template class conversion_traits&lt;&gt;">template
         class conversion_traits&lt;&gt;</a>
 </h4></div></div></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">numeric</span> <span class="special">{</span>
 
     <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">S</span><span class="special">&gt;</span>
@@ -226,9 +212,9 @@
         <span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">subtype</span> <span class="special">;</span>
     <span class="special">}</span> <span class="special">;</span>
 
-<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace numeric, namespace boost
-</span></pre>
-<p>
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace numeric, namespace boost</span>
+</pre>
+ <p>
           This traits class indicates some properties of a <span class="emphasis"><em>numeric conversion</em></span>
           direction: from a source type <code class="computeroutput"><span class="identifier">S</span></code>
           to a target type <code class="computeroutput"><span class="identifier">T</span></code>. It
@@ -236,242 +222,237 @@
           but of the conversion direction. See <a class="link" href="definitions.html#boost_numericconversion.definitions.subranged_conversion_direction__subtype_and_supertype" title="Subranged Conversion Direction, Subtype and Supertype">Definitions</a>
           for details.
         </p>
-<p>
- The traits class provides the following <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
+ <p>
+ The traits class provides the following <a class="ulink" href="../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
           Integral Constant</a> \s of enumeration type. They express the combination
           of certain attributes of the Source and Target types (thus they are call
           mixture):
         </p>
-<div class="informaltable"><table class="table">
+ <div class="informaltable">
+ <table border="1">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
 <th>
- <p>
- </p>
                 </th>
 <th>
- <p>
- </p>
                 </th>
 </tr></thead>
 <tbody>
 <tr>
 <td>
- <p>
- <span class="bold"><strong>int_float_mixture </strong></span>
- </p>
+ <p>
+ <span class="bold"><strong>int_float_mixture </strong></span>
+ </p>
                 </td>
 <td>
- <p>
- Same as given by the traits class <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_int_float_mixture__" title="template class int_float_mixture&lt;&gt;">int_float_mixture</a>
- </p>
+ <p>
+ Same as given by the traits class <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_int_float_mixture__" title="template class int_float_mixture&lt;&gt;">int_float_mixture</a>
+ </p>
                 </td>
 </tr>
 <tr>
 <td>
- <p>
- <span class="bold"><strong>sign_mixture </strong></span>
- </p>
+ <p>
+ <span class="bold"><strong>sign_mixture </strong></span>
+ </p>
                 </td>
 <td>
- <p>
- Same as given by the traits class <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_sign_mixture__" title="template class sign_mixture&lt;&gt;">sign_mixture</a>
- </p>
+ <p>
+ Same as given by the traits class <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_sign_mixture__" title="template class sign_mixture&lt;&gt;">sign_mixture</a>
+ </p>
                 </td>
 </tr>
 <tr>
 <td>
- <p>
- <span class="bold"><strong>udt_builtin_mixture </strong></span>
- </p>
+ <p>
+ <span class="bold"><strong>udt_builtin_mixture </strong></span>
+ </p>
                 </td>
 <td>
- <p>
- Same as given by the traits class <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_udt_builtin_mixture__" title="template class udt_builtin_mixture&lt;&gt;">udt_builtin_mixture</a>
- </p>
+ <p>
+ Same as given by the traits class <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_udt_builtin_mixture__" title="template class udt_builtin_mixture&lt;&gt;">udt_builtin_mixture</a>
+ </p>
                 </td>
 </tr>
 </tbody>
-</table></div>
-<p>
- The traits class provides the following <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
+</table>
+ </div>
+ <p>
+ The traits class provides the following <a class="ulink" href="../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
           Integral Constant</a> \s of boolean type which indicates indirectly
           the relation between the Source and Target ranges (see <a class="link" href="definitions.html#boost_numericconversion.definitions.range_and_precision" title="Range and Precision">Definitions</a>
           for details).
         </p>
-<div class="informaltable"><table class="table">
+ <div class="informaltable">
+ <table border="1">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
 <th>
- <p>
- </p>
                 </th>
 <th>
- <p>
- </p>
                 </th>
 </tr></thead>
 <tbody>
 <tr>
 <td>
- <p>
- subranged
- </p>
+ <p>
+ subranged
+ </p>
                 </td>
 <td>
- <p>
- Same as given by <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_is_subranged__" title="template class is_subranged&lt;&gt;">is_subranged</a>
- </p>
+ <p>
+ Same as given by <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_is_subranged__" title="template class is_subranged&lt;&gt;">is_subranged</a>
+ </p>
                 </td>
 </tr>
 <tr>
 <td>
- <p>
- trivial
- </p>
+ <p>
+ trivial
+ </p>
                 </td>
 <td>
- <p>
- Indicates if both Source and Target, <span class="underline">without
- cv-qualifications</span>, are the same type.
- </p>
- <p>
- Its <code class="computeroutput"><span class="special">::</span><span class="identifier">value</span></code>
- is of boolean type.
- </p>
+ <p>
+ Indicates if both Source and Target, <span class="underline">without
+ cv-qualifications</span>, are the same type.
+ </p>
+ <p>
+ Its <code class="computeroutput"><span class="special">::</span><span class="identifier">value</span></code>
+ is of boolean type.
+ </p>
                 </td>
 </tr>
 </tbody>
-</table></div>
-<p>
+</table>
+ </div>
+ <p>
           The traits class provides the following types. They are the Source and
           Target types classified and qualified for different purposes.
         </p>
-<div class="informaltable"><table class="table">
+ <div class="informaltable">
+ <table border="1">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
 <th>
- <p>
- </p>
                 </th>
 <th>
- <p>
- </p>
                 </th>
 </tr></thead>
 <tbody>
 <tr>
 <td>
- <p>
- <span class="bold"><strong>target_type</strong></span>
- </p>
+ <p>
+ <span class="bold"><strong>target_type</strong></span>
+ </p>
                 </td>
 <td>
- <p>
- The template parameter <code class="computeroutput"><span class="identifier">T</span></code>
- without cv-qualifications
- </p>
+ <p>
+ The template parameter <code class="computeroutput"><span class="identifier">T</span></code>
+ without cv-qualifications
+ </p>
                 </td>
 </tr>
 <tr>
 <td>
- <p>
- <span class="bold"><strong>source_type</strong></span>
- </p>
+ <p>
+ <span class="bold"><strong>source_type</strong></span>
+ </p>
                 </td>
 <td>
- <p>
- The template parameter <code class="computeroutput"><span class="identifier">S</span></code>
- without cv-qualifications
- </p>
+ <p>
+ The template parameter <code class="computeroutput"><span class="identifier">S</span></code>
+ without cv-qualifications
+ </p>
                 </td>
 </tr>
 <tr>
 <td>
- <p>
- <span class="bold"><strong>argument_type</strong></span>
- </p>
+ <p>
+ <span class="bold"><strong>argument_type</strong></span>
+ </p>
                 </td>
 <td>
- <p>
- This type is either source_type or <code class="computeroutput"><span class="identifier">source_type</span>
- <span class="keyword">const</span><span class="special">&amp;</span></code>.
- </p>
- <p>
- It represents the optimal argument type for the <a class="link" href="converter___function_object.html" title="converter&lt;&gt; function object">converter</a>
- member functions.
- </p>
- <p>
- If S is a built-in type, this is <code class="computeroutput"><span class="identifier">source_type</span></code>,
- otherwise, this is <code class="computeroutput"><span class="identifier">source_type</span>
- <span class="keyword">const</span><span class="special">&amp;</span></code>.
- </p>
+ <p>
+ This type is either source_type or <code class="computeroutput"><span class="identifier">source_type</span>
+ <span class="keyword">const</span><span class="special">&amp;</span></code>.
+ </p>
+ <p>
+ It represents the optimal argument type for the <a class="link" href="converter___function_object.html" title="converter&lt;&gt; function object">converter</a>
+ member functions.
+ </p>
+ <p>
+ If S is a built-in type, this is <code class="computeroutput"><span class="identifier">source_type</span></code>,
+ otherwise, this is <code class="computeroutput"><span class="identifier">source_type</span>
+ <span class="keyword">const</span><span class="special">&amp;</span></code>.
+ </p>
                 </td>
 </tr>
 <tr>
 <td>
- <p>
- <span class="bold"><strong>result_type</strong></span>
- </p>
+ <p>
+ <span class="bold"><strong>result_type</strong></span>
+ </p>
                 </td>
 <td>
- <p>
- This type is either target_type or target_type const&amp;
- </p>
- <p>
- It represents the return type of the <a class="link" href="converter___function_object.html" title="converter&lt;&gt; function object">converter</a>
- member functions.
- </p>
- <p>
- If <code class="computeroutput"><span class="identifier">T</span><span class="special">==</span><span class="identifier">S</span></code>, it is <code class="computeroutput"><span class="identifier">target_type</span>
- <span class="keyword">const</span><span class="special">&amp;</span></code>,
- otherwise, it is <code class="computeroutput"><span class="identifier">target_type</span></code>.
- </p>
+ <p>
+ This type is either target_type or target_type const&amp;
+ </p>
+ <p>
+ It represents the return type of the <a class="link" href="converter___function_object.html" title="converter&lt;&gt; function object">converter</a>
+ member functions.
+ </p>
+ <p>
+ If <code class="computeroutput"><span class="identifier">T</span><span class="special">==</span><span class="identifier">S</span></code>, it is <code class="computeroutput"><span class="identifier">target_type</span>
+ <span class="keyword">const</span><span class="special">&amp;</span></code>,
+ otherwise, it is <code class="computeroutput"><span class="identifier">target_type</span></code>.
+ </p>
                 </td>
 </tr>
 <tr>
 <td>
- <p>
- <span class="bold"><strong>supertype</strong></span>
- </p>
+ <p>
+ <span class="bold"><strong>supertype</strong></span>
+ </p>
                 </td>
 <td>
- <p>
- If the conversion is subranged, it is <code class="computeroutput"><span class="identifier">source_type</span></code>,
- otherwise, it is <code class="computeroutput"><span class="identifier">target_type</span></code>
- </p>
+ <p>
+ If the conversion is subranged, it is <code class="computeroutput"><span class="identifier">source_type</span></code>,
+ otherwise, it is <code class="computeroutput"><span class="identifier">target_type</span></code>
+ </p>
                 </td>
 </tr>
 <tr>
 <td>
- <p>
- <span class="bold"><strong>subtype</strong></span>
- </p>
+ <p>
+ <span class="bold"><strong>subtype</strong></span>
+ </p>
                 </td>
 <td>
- <p>
- If the conversion is subranged, it is <code class="computeroutput"><span class="identifier">target_type</span></code>,
- otherwise, it is <code class="computeroutput"><span class="identifier">source_type</span></code>
- </p>
+ <p>
+ If the conversion is subranged, it is <code class="computeroutput"><span class="identifier">target_type</span></code>,
+ otherwise, it is <code class="computeroutput"><span class="identifier">source_type</span></code>
+ </p>
                 </td>
 </tr>
 </tbody>
-</table></div>
-</div>
-</div>
-<div class="section" title="Examples">
+</table>
+ </div>
+ </div>
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.conversion_traits___traits_class.examples"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.examples" title="Examples">Examples</a>
 </h3></div></div></div>
+
 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cassert</span><span class="special">&gt;</span>
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">typeinfo</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">numeric</span><span class="special">/</span><span class="identifier">conversion</span><span class="special">/</span><span class="identifier">conversion_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@@ -479,38 +460,34 @@
 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
 <span class="special">{</span>
 
- <span class="comment">// A trivial conversion.
-</span> <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">,</span><span class="keyword">short</span><span class="special">&gt;</span> <span class="identifier">Short2Short_Traits</span> <span class="special">;</span>
+ <span class="comment">// A trivial conversion.</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">,</span><span class="keyword">short</span><span class="special">&gt;</span> <span class="identifier">Short2Short_Traits</span> <span class="special">;</span>
     <span class="identifier">assert</span> <span class="special">(</span> <span class="identifier">Short2Short_Traits</span><span class="special">::</span><span class="identifier">trivial</span><span class="special">::</span><span class="identifier">value</span> <span class="special">)</span> <span class="special">;</span>
 
- <span class="comment">// A subranged conversion.
-</span> <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">UInt2Double_Traits</span> <span class="special">;</span>
+ <span class="comment">// A subranged conversion.</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">UInt2Double_Traits</span> <span class="special">;</span>
     <span class="identifier">assert</span> <span class="special">(</span> <span class="identifier">UInt2Double_Traits</span><span class="special">::</span><span class="identifier">int_float_mixture</span><span class="special">::</span><span class="identifier">value</span> <span class="special">==</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">integral_to_float</span> <span class="special">)</span> <span class="special">;</span>
     <span class="identifier">assert</span> <span class="special">(</span> <span class="identifier">UInt2Double_Traits</span><span class="special">::</span><span class="identifier">sign_mixture</span><span class="special">::</span><span class="identifier">value</span> <span class="special">==</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">unsigned_to_signed</span> <span class="special">)</span> <span class="special">;</span>
     <span class="identifier">assert</span> <span class="special">(</span> <span class="special">!</span><span class="identifier">UInt2Double_Traits</span><span class="special">::</span><span class="identifier">subranged</span><span class="special">::</span><span class="identifier">value</span> <span class="special">)</span> <span class="special">;</span>
     <span class="identifier">assert</span> <span class="special">(</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">UInt2Double_Traits</span><span class="special">::</span><span class="identifier">supertype</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">typeid</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span> <span class="special">)</span> <span class="special">;</span>
     <span class="identifier">assert</span> <span class="special">(</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">UInt2Double_Traits</span><span class="special">::</span><span class="identifier">subtype</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">typeid</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">)</span> <span class="special">)</span> <span class="special">;</span>
 
- <span class="comment">// A doubly subranged conversion.
-</span> <span class="identifier">assert</span> <span class="special">(</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">&gt;::</span><span class="identifier">subranged</span><span class="special">::</span><span class="identifier">value</span><span class="special">)</span> <span class="special">);</span>
+ <span class="comment">// A doubly subranged conversion.</span>
+ <span class="identifier">assert</span> <span class="special">(</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">&gt;::</span><span class="identifier">subranged</span><span class="special">::</span><span class="identifier">value</span><span class="special">)</span> <span class="special">);</span>
     <span class="identifier">assert</span> <span class="special">(</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">,</span> <span class="keyword">short</span><span class="special">&gt;::</span><span class="identifier">subranged</span><span class="special">::</span><span class="identifier">value</span><span class="special">)</span> <span class="special">);</span>
 
     <span class="keyword">return</span> <span class="number">0</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 © 2004 -2007 Fernando Luis Cacciola Carballal<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="bounds___traits_class.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="numeric_converter_policy_classes.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
 </body>
 </html>

Modified: branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/converter___function_object.html
==============================================================================
--- branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/converter___function_object.html (original)
+++ branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/converter___function_object.html 2011-11-21 11:46:56 EST (Mon, 21 Nov 2011)
@@ -1,46 +1,36 @@
 <html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>converter&lt;&gt; function object</title>
 <link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="up" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="prev" href="definitions.html" title="Definitions">
-<link rel="next" href="type_requirements_and_user_defined_types_support.html" title="Type Requirements and User-defined-types support">
+<meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
 </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">Home</td>
-<td align="center">Libraries</td>
+<td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="definitions.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="type_requirements_and_user_defined_types_support.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
-<div class="section" title="converter&lt;&gt; function object">
+<div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_numericconversion.converter___function_object"></a><a class="link" href="converter___function_object.html" title="converter&lt;&gt; function object">converter&lt;&gt;
     function object</a>
 </h2></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section">Synopsis</span></dt>
-<dt><span class="section"><a href="converter___function_object.html#boost_numericconversion.converter___function_object.template_parameters">Template
- parameters</a></span></dt>
-<dt><span class="section"><a href="converter___function_object.html#boost_numericconversion.converter___function_object.member_functions">Member
- functions</a></span></dt>
-<dt><span class="section"><a href="converter___function_object.html#boost_numericconversion.converter___function_object.range_checking_logic">Range
- Checking Logic</a></span></dt>
-<dt><span class="section">Examples</span></dt>
-</dl></div>
-<div class="section" title="Synopsis">
+
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.converter___function_object.synopsis"></a><a class="link" href="converter___function_object.html#boost_numericconversion.converter___function_object.synopsis" title="Synopsis">Synopsis</a>
 </h3></div></div></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">numeric</span> <span class="special">{</span>
 
 
@@ -64,8 +54,8 @@
 
         <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span> <span class="keyword">const</span> <span class="special">;</span>
 
- <span class="comment">// Internal member functions:
-</span>
+ <span class="comment">// Internal member functions:</span>
+
         <span class="keyword">static</span> <span class="identifier">range_check_result</span> <span class="identifier">out_of_range</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span> <span class="special">;</span>
         <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">validate_range</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span> <span class="special">;</span>
         <span class="keyword">static</span> <span class="identifier">result_type</span> <span class="identifier">low_level_convert</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span> <span class="special">;</span>
@@ -73,226 +63,216 @@
 
     <span class="special">}</span> <span class="special">;</span>
 
-<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace numeric, boost
-</span></pre>
-<p>
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace numeric, boost</span>
+</pre>
+ <p>
         <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">converter</span><span class="special">&lt;&gt;</span></code>
- is a <a href="http://www.sgi.com/tech/stl/UnaryFunction.html" target="_top">Unary Function
+ is a <a class="ulink" href="http://www.sgi.com/tech/stl/UnaryFunction.html" target="_top">Unary Function
         Object</a> encapsulating the code to perform a numeric conversion with
         the direction and properties specified by the Traits template parameter.
         It can optionally take some <a class="link" href="numeric_converter_policy_classes.html" title="Numeric Converter Policy Classes">policies</a>
         which can be used to customize its behavior. The <code class="computeroutput"><span class="identifier">Traits</span></code>
         parameter is not a policy but the parameter that defines the conversion.
       </p>
-</div>
-<div class="section" title="Template parameters">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.converter___function_object.template_parameters"></a><a class="link" href="converter___function_object.html#boost_numericconversion.converter___function_object.template_parameters" title="Template parameters">Template
       parameters</a>
 </h3></div></div></div>
-<div class="informaltable"><table class="table">
+
+ <div class="informaltable">
+ <table border="1">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
 <th>
- <p>
- </p>
               </th>
 <th>
- <p>
- </p>
               </th>
 </tr></thead>
 <tbody>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">T</span></code>
- </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
               </td>
 <td>
- <p>
- The <a class="link" href="definitions.html#boost_numericconversion.definitions.numeric_types" title="Numeric Types">Numeric
- Type</a> which is the <span class="emphasis"><em>Target</em></span> of the conversion.
- </p>
+ <p>
+ The <a class="link" href="definitions.html#boost_numericconversion.definitions.numeric_types" title="Numeric Types">Numeric
+ Type</a> which is the <span class="emphasis"><em>Target</em></span> of the conversion.
+ </p>
               </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">S</span></code>
- </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">S</span></code>
+ </p>
               </td>
 <td>
- <p>
- The <a class="link" href="definitions.html#boost_numericconversion.definitions.numeric_types" title="Numeric Types">Numeric
- Type</a> which is the <span class="emphasis"><em>Source</em></span> of the conversion.
- </p>
+ <p>
+ The <a class="link" href="definitions.html#boost_numericconversion.definitions.numeric_types" title="Numeric Types">Numeric
+ Type</a> which is the <span class="emphasis"><em>Source</em></span> of the conversion.
+ </p>
               </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">Traits</span></code>
- </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">Traits</span></code>
+ </p>
               </td>
 <td>
- <p>
- This must be a conversion traits class with the interface of <a class="link" href="conversion_traits___traits_class.html" title="conversion_traits&lt;&gt; traits class"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span></code></a>
- </p>
+ <p>
+ This must be a conversion traits class with the interface of <a class="link" href="conversion_traits___traits_class.html" title="conversion_traits&lt;&gt; traits class"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span></code></a>
+ </p>
               </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">OverflowHandler</span></code>
- </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">OverflowHandler</span></code>
+ </p>
               </td>
 <td>
- <p>
- <span class="bold"><strong>Stateless Policy</strong></span> called to administrate
- the result of the range checking.
- </p>
- <p>
- It is a <span class="bold"><strong>Function Object</strong></span> which receives
- the result of <code class="computeroutput"><span class="identifier">out_of_range</span><span class="special">()</span></code> and is called inside the <code class="computeroutput"><span class="identifier">validate_range</span><span class="special">()</span></code>
- static member function exposed by the converter.
- </p>
+ <p>
+ <span class="bold"><strong>Stateless Policy</strong></span> called to administrate
+ the result of the range checking.
+ </p>
+ <p>
+ It is a <span class="bold"><strong>Function Object</strong></span> which
+ receives the result of <code class="computeroutput"><span class="identifier">out_of_range</span><span class="special">()</span></code> and is called inside the <code class="computeroutput"><span class="identifier">validate_range</span><span class="special">()</span></code>
+ static member function exposed by the converter.
+ </p>
               </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">Float2IntRounder</span></code>
- </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">Float2IntRounder</span></code>
+ </p>
               </td>
 <td>
- <p>
- <span class="bold"><strong>Stateless Policy</strong></span> which specifies
- the rounding mode used for float to integral conversions.
- </p>
- <p>
- It supplies the <code class="computeroutput"><span class="identifier">nearbyint</span><span class="special">()</span></code> static member function exposed
- by the converter.
- </p>
+ <p>
+ <span class="bold"><strong>Stateless Policy</strong></span> which specifies
+ the rounding mode used for float to integral conversions.
+ </p>
+ <p>
+ It supplies the <code class="computeroutput"><span class="identifier">nearbyint</span><span class="special">()</span></code> static member function exposed
+ by the converter.
+ </p>
               </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">RawConverter</span></code>
- </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">RawConverter</span></code>
+ </p>
               </td>
 <td>
- <p>
- <span class="bold"><strong>Stateless Policy</strong></span> which is used to
- perform the actual conversion.
- </p>
- <p>
- It supplies the <code class="computeroutput"><span class="identifier">low_level_convert</span><span class="special">()</span></code> static member function exposed
- by the converter.
- </p>
+ <p>
+ <span class="bold"><strong>Stateless Policy</strong></span> which is used
+ to perform the actual conversion.
+ </p>
+ <p>
+ It supplies the <code class="computeroutput"><span class="identifier">low_level_convert</span><span class="special">()</span></code> static member function exposed
+ by the converter.
+ </p>
               </td>
 </tr>
 <tr>
 <td>
- <p>
- <code class="computeroutput"><span class="identifier">UserRangeChecker</span></code>
- </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">UserRangeChecker</span></code>
+ </p>
               </td>
 <td>
- <p>
- <span class="emphasis"><em>Special and Optional</em></span> <span class="bold"><strong>Stateless
- Policy</strong></span> which can be used to override the internal range
- checking logic.
- </p>
- <p>
- If given, supplies alternative code for the <code class="computeroutput"><span class="identifier">out_of_range</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">validate_range</span><span class="special">()</span></code> static member functions exposed
- by the converter.
- </p>
+ <p>
+ <span class="emphasis"><em>Special and Optional</em></span> <span class="bold"><strong>Stateless
+ Policy</strong></span> which can be used to override the internal range
+ checking logic.
+ </p>
+ <p>
+ If given, supplies alternative code for the <code class="computeroutput"><span class="identifier">out_of_range</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">validate_range</span><span class="special">()</span></code> static member functions exposed
+ by the converter.
+ </p>
               </td>
 </tr>
 </tbody>
-</table></div>
-</div>
-<div class="section" title="Member functions">
+</table>
+ </div>
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.converter___function_object.member_functions"></a><a class="link" href="converter___function_object.html#boost_numericconversion.converter___function_object.member_functions" title="Member functions">Member
       functions</a>
 </h3></div></div></div>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
- </p>
-<p>
- <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">result_type</span>
- <span class="identifier">converter</span><span class="special">&lt;&gt;::</span><span class="identifier">convert</span> <span class="special">(</span>
- <span class="identifier">argument_type</span> <span class="identifier">s</span>
- <span class="special">)</span> <span class="special">;</span>
- <span class="comment">// throw </span></code>
- </p>
-<p>
+
+ <div class="blockquote"><blockquote class="blockquote">
+ <p>
+ <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">result_type</span>
+ <span class="identifier">converter</span><span class="special">&lt;&gt;::</span><span class="identifier">convert</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span>
+ <span class="special">)</span> <span class="special">;</span> <span class="comment">// throw</span> </code>
         </p>
-</blockquote></div>
-<p>
+ </blockquote></div>
+ <p>
         This static member function converts an rvalue of type <code class="computeroutput"><span class="identifier">source_type</span></code>
         to an rvalue of type <code class="computeroutput"><span class="identifier">target_type</span></code>.
       </p>
-<p>
+ <p>
         If the conversion requires it, it performs a range checking before the conversion
         and passes the result of the check to the overflow handler policy (the default
         policy throws an exception if out-of-range is detected)
       </p>
-<p>
+ <p>
         The implementation of this function is actually built from the policies and
         is basically as follows:
       </p>
 <pre class="programlisting"><span class="identifier">result_type</span> <span class="identifier">converter</span><span class="special">&lt;&gt;::</span><span class="identifier">convert</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span>
 <span class="special">{</span>
- <span class="identifier">validate_range</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span> <span class="comment">// Implemented by the internal range checking logic
-</span> <span class="comment">// (which also calls the OverflowHandler policy)
-</span> <span class="comment">// or externally supplied by the UserRangeChecker policy.
-</span>
- <span class="identifier">s</span> <span class="special">=</span> <span class="identifier">nearbyint</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span> <span class="comment">// Externally supplied by the Float2IntRounder policy.
-</span> <span class="comment">// NOTE: This is actually called only for float to int conversions.
-</span>
- <span class="keyword">return</span> <span class="identifier">low_level_convert</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span> <span class="comment">// Externally supplied by the RawConverter policy.
-</span><span class="special">}</span>
+ <span class="identifier">validate_range</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span> <span class="comment">// Implemented by the internal range checking logic</span>
+ <span class="comment">// (which also calls the OverflowHandler policy)</span>
+ <span class="comment">// or externally supplied by the UserRangeChecker policy.</span>
+
+ <span class="identifier">s</span> <span class="special">=</span> <span class="identifier">nearbyint</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span> <span class="comment">// Externally supplied by the Float2IntRounder policy.</span>
+ <span class="comment">// NOTE: This is actually called only for float to int conversions.</span>
+
+ <span class="keyword">return</span> <span class="identifier">low_level_convert</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span> <span class="comment">// Externally supplied by the RawConverter policy.</span>
+<span class="special">}</span>
 </pre>
-<p>
+ <p>
         <code class="computeroutput"><span class="identifier">converter</span><span class="special">&lt;&gt;::</span><span class="keyword">operator</span><span class="special">()</span> <span class="keyword">const</span></code> just calls <code class="computeroutput"><span class="identifier">convert</span><span class="special">()</span></code>
       </p>
-<p>
+ <p>
         <span class="inlinemediaobject"><img src="../images/space.png" alt="space"></span>
       </p>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
- </p>
-<p>
- <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">range_check_result</span>
- <span class="identifier">numeric_converter</span><span class="special">&lt;&gt;::</span><span class="identifier">out_of_range</span> <span class="special">(</span>
- <span class="identifier">argument_type</span> <span class="identifier">s</span>
- <span class="special">)</span> <span class="special">;</span></code>
- </p>
-<p>
+ <div class="blockquote"><blockquote class="blockquote">
+ <p>
+ <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">range_check_result</span>
+ <span class="identifier">numeric_converter</span><span class="special">&lt;&gt;::</span><span class="identifier">out_of_range</span> <span class="special">(</span>
+ <span class="identifier">argument_type</span> <span class="identifier">s</span>
+ <span class="special">)</span> <span class="special">;</span></code>
         </p>
-</blockquote></div>
-<p>
+ </blockquote></div>
+ <p>
         This <a class="link" href="converter___function_object.html#numeric_conversion_converter_internal">internal</a>
         static member function determines if the value <code class="computeroutput"><span class="identifier">s</span></code>
         can be represented by the target type without overflow.
       </p>
-<p>
+ <p>
         It does not determine if the conversion is <span class="emphasis"><em>exact</em></span>; that
         is, it does not detect <span class="emphasis"><em>inexact</em></span> conversions, only <span class="emphasis"><em>out-of-range</em></span>
         conversions (see the <a class="link" href="definitions.html#boost_numericconversion.definitions.exact__correctly_rounded_and_out_of_range_representations" title="Exact, Correctly Rounded and Out-Of-Range Representations">Definitions</a>
         for further details).
       </p>
-<p>
+ <p>
         The return value is of enum type <a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.enum_range_check_result" title="enum range_check_result"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">range_check_result</span></code></a>
       </p>
-<p>
+ <p>
         The actual code for the range checking logic is optimized for the combined
         properties of the source and target types. For example, a non-subranged conversion
         (i.e: <code class="computeroutput"><span class="keyword">int</span></code>-&gt;<code class="computeroutput"><span class="keyword">float</span></code>), requires no range checking, so <code class="computeroutput"><span class="identifier">out_of_range</span><span class="special">()</span></code>
@@ -300,128 +280,115 @@
         See the following <a class="link" href="converter___function_object.html#boost_numericconversion.converter___function_object.range_checking_logic" title="Range Checking Logic">table</a>
         for more details.
       </p>
-<p>
+ <p>
         If the user supplied a <a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_userrangechecker" title="Policy UserRangeChecker">UserRangeChecker</a>
         policy, is this policy which implements this function, so the implementation
         is user defined, although it is expected to perform the same conceptual check
         and return the appropriate result.
       </p>
-<p>
+ <p>
         <span class="inlinemediaobject"><img src="../images/space.png" alt="space"></span>
       </p>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
- </p>
-<p>
- <code class="computeroutput"><span class="keyword">static</span> <span class="keyword">void</span>
- <span class="identifier">numeric_converter</span><span class="special">&lt;&gt;::</span><span class="identifier">validate_range</span> <span class="special">(</span>
- <span class="identifier">argument_type</span> <span class="identifier">s</span>
- <span class="special">)</span> <span class="special">;</span>
- <span class="comment">// no throw </span></code>
- </p>
-<p>
+ <div class="blockquote"><blockquote class="blockquote">
+ <p>
+ <code class="computeroutput"><span class="keyword">static</span> <span class="keyword">void</span>
+ <span class="identifier">numeric_converter</span><span class="special">&lt;&gt;::</span><span class="identifier">validate_range</span> <span class="special">(</span>
+ <span class="identifier">argument_type</span> <span class="identifier">s</span>
+ <span class="special">)</span> <span class="special">;</span> <span class="comment">// no throw</span> </code>
         </p>
-</blockquote></div>
-<p>
+ </blockquote></div>
+ <p>
         This <a class="link" href="converter___function_object.html#numeric_conversion_converter_internal">internal</a>
         static member function calls out_of_range(s), and passes the result to the
         <a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_overflowhandler" title="Policy OverflowHandler">OverflowHandler</a>
         policy class.
       </p>
-<p>
+ <p>
         For those Target/Source combinations which don't require range checking,
         this is an empty inline function.
       </p>
-<p>
+ <p>
         If the user supplied a <a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_userrangechecker" title="Policy UserRangeChecker">UserRangeChecker</a>
         policy, is this policy which implements this function, so the implementation
         is user defined, although it is expected to perform the same action as the
         default. In particular, it is expected to pass the result of the check to
         the overflow handler.
       </p>
-<p>
+ <p>
         <span class="inlinemediaobject"><img src="../images/space.png" alt="space"></span>
       </p>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
- </p>
-<p>
- <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">result_type</span>
- <span class="identifier">numeric_converter</span><span class="special">&lt;&gt;::</span><span class="identifier">low_level_convert</span> <span class="special">(</span>
- <span class="identifier">argument_type</span> <span class="identifier">s</span>
- <span class="special">)</span> <span class="special">;</span></code>
- </p>
-<p>
+ <div class="blockquote"><blockquote class="blockquote">
+ <p>
+ <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">result_type</span>
+ <span class="identifier">numeric_converter</span><span class="special">&lt;&gt;::</span><span class="identifier">low_level_convert</span> <span class="special">(</span>
+ <span class="identifier">argument_type</span> <span class="identifier">s</span>
+ <span class="special">)</span> <span class="special">;</span></code>
         </p>
-</blockquote></div>
-<p>
+ </blockquote></div>
+ <p>
         This <a class="link" href="converter___function_object.html#numeric_conversion_converter_internal">internal</a>
         static member function performs the actual conversion.
       </p>
-<p>
+ <p>
         This function is externally supplied by the <a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_rawconverter" title="Policy RawConverter">RawConverter</a>
         policy class.
       </p>
-<p>
+ <p>
         <span class="inlinemediaobject"><img src="../images/space.png" alt="space"></span>
       </p>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
- </p>
-<p>
- <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">source_type</span>
- <span class="identifier">converter</span><span class="special">&lt;&gt;::</span><span class="identifier">nearbyint</span> <span class="special">(</span>
- <span class="identifier">argument_type</span> <span class="identifier">s</span>
- <span class="special">)</span> <span class="special">;</span></code>
- </p>
-<p>
+ <div class="blockquote"><blockquote class="blockquote">
+ <p>
+ <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">source_type</span>
+ <span class="identifier">converter</span><span class="special">&lt;&gt;::</span><span class="identifier">nearbyint</span> <span class="special">(</span>
+ <span class="identifier">argument_type</span> <span class="identifier">s</span>
+ <span class="special">)</span> <span class="special">;</span></code>
         </p>
-</blockquote></div>
-<p>
+ </blockquote></div>
+ <p>
         This <a class="link" href="converter___function_object.html#numeric_conversion_converter_internal">internal</a>
         static member function, which is <span class="underline">only used</span>
         for <code class="computeroutput"><span class="keyword">float</span></code> to <code class="computeroutput"><span class="keyword">int</span></code>
         conversions, returns an <span class="emphasis"><em>integer</em></span> value of <span class="emphasis"><em><span class="underline">floating-point type</span></em></span> according to some
         rounding direction.
       </p>
-<p>
+ <p>
         This function is externally supplied by the <a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_float2introunder" title="Policy Float2IntRounder">Float2IntRounder</a>
         policy class which encapsulates the specific rounding mode.
       </p>
-<p>
+ <p>
         <span class="inlinemediaobject"><img src="../images/space.png" alt="space"></span>
       </p>
-<a name="numeric_conversion_converter_internal"></a><p>
- </p>
-<a name="boost_numericconversion.converter___function_object.member_functions.internal_member_functions"></a><h5>
-<a name="id563268"></a>
- <a class="link" href="converter___function_object.html#boost_numericconversion.converter___function_object.member_functions.internal_member_functions">Internal
+ <a name="numeric_conversion_converter_internal"></a>
+ <h5>
+<a name="boost_numericconversion.converter___function_object.member_functions.h0"></a>
+ <span><a name="boost_numericconversion.converter___function_object.member_functions.internal_member_functions"></a></span><a class="link" href="converter___function_object.html#boost_numericconversion.converter___function_object.member_functions.internal_member_functions">Internal
         Member Functions</a>
       </h5>
-<p>
+ <p>
         These static member functions build the actual conversion code used by <code class="computeroutput"><span class="identifier">convert</span><span class="special">()</span></code>.
         The user does not have to call these if calling <code class="computeroutput"><span class="identifier">convert</span><span class="special">()</span></code>, since <code class="computeroutput"><span class="identifier">convert</span><span class="special">()</span></code> calls them infernally, but they can be
         called separately for specific needs.
       </p>
-</div>
-<div class="section" title="Range Checking Logic">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.converter___function_object.range_checking_logic"></a><a class="link" href="converter___function_object.html#boost_numericconversion.converter___function_object.range_checking_logic" title="Range Checking Logic">Range
       Checking Logic</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         The following table summarizes the internal range checking logic performed
         for each combination of the properties of Source and Target.
       </p>
-<p>
+ <p>
         LowestT/HighestT denotes the highest and lowest values of the Target type,
         respectively.
       </p>
-<p>
+ <p>
         <code class="computeroutput"><span class="identifier">S</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span></code> is short
         for <code class="computeroutput"><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">S</span><span class="special">&gt;(</span><span class="identifier">n</span><span class="special">)</span></code> (<code class="computeroutput"><span class="identifier">S</span></code> denotes the Source type).
       </p>
-<p>
+ <p>
         <code class="computeroutput"><span class="identifier">NONE</span></code> indicates that for this
         case there is no range checking.
       </p>
@@ -452,11 +419,12 @@
                |--&gt; not subranged |--&gt; NONE
 </code>
 </pre>
-</div>
-<div class="section" title="Examples">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.converter___function_object.examples"></a><a class="link" href="converter___function_object.html#boost_numericconversion.converter___function_object.examples" title="Examples">Examples</a>
 </h3></div></div></div>
+
 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cassert</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">numeric</span><span class="special">/</span><span class="identifier">conversion</span><span class="special">/</span><span class="identifier">converter</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 
@@ -467,14 +435,14 @@
     <span class="keyword">int</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">Double2Int</span><span class="special">::</span><span class="identifier">convert</span><span class="special">(</span><span class="number">2.0</span><span class="special">);</span>
     <span class="identifier">assert</span> <span class="special">(</span> <span class="identifier">x</span> <span class="special">==</span> <span class="number">2</span> <span class="special">);</span>
 
- <span class="keyword">int</span> <span class="identifier">y</span> <span class="special">=</span> <span class="identifier">Double2Int</span><span class="special">()(</span><span class="number">3.14</span><span class="special">);</span> <span class="comment">// As a function object.
-</span> <span class="identifier">assert</span> <span class="special">(</span> <span class="identifier">y</span> <span class="special">==</span> <span class="number">3</span> <span class="special">)</span> <span class="special">;</span> <span class="comment">// The default rounding is trunc.
-</span>
+ <span class="keyword">int</span> <span class="identifier">y</span> <span class="special">=</span> <span class="identifier">Double2Int</span><span class="special">()(</span><span class="number">3.14</span><span class="special">);</span> <span class="comment">// As a function object.</span>
+ <span class="identifier">assert</span> <span class="special">(</span> <span class="identifier">y</span> <span class="special">==</span> <span class="number">3</span> <span class="special">)</span> <span class="special">;</span> <span class="comment">// The default rounding is trunc.</span>
+
     <span class="keyword">try</span>
     <span class="special">{</span>
         <span class="keyword">double</span> <span class="identifier">m</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">bounds</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">highest</span><span class="special">();</span>
- <span class="keyword">int</span> <span class="identifier">z</span> <span class="special">=</span> <span class="identifier">Double2Int</span><span class="special">::</span><span class="identifier">convert</span><span class="special">(</span><span class="identifier">m</span><span class="special">);</span> <span class="comment">// By default throws positive_overflow()
-</span> <span class="special">}</span>
+ <span class="keyword">int</span> <span class="identifier">z</span> <span class="special">=</span> <span class="identifier">Double2Int</span><span class="special">::</span><span class="identifier">convert</span><span class="special">(</span><span class="identifier">m</span><span class="special">);</span> <span class="comment">// By default throws positive_overflow()</span>
+ <span class="special">}</span>
     <span class="keyword">catch</span> <span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">positive_overflow</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="special">)</span>
     <span class="special">{</span>
     <span class="special">}</span>
@@ -482,19 +450,15 @@
     <span class="keyword">return</span> <span class="number">0</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 © 2004 -2007 Fernando Luis Cacciola Carballal<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="definitions.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="type_requirements_and_user_defined_types_support.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
 </body>
 </html>

Modified: branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/definitions.html
==============================================================================
--- branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/definitions.html (original)
+++ branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/definitions.html 2011-11-21 11:46:56 EST (Mon, 21 Nov 2011)
@@ -1,346 +1,350 @@
 <html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Definitions</title>
 <link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="up" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="prev" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="next" href="converter___function_object.html" title="converter&lt;&gt; function object">
+<meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
 </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">Home</td>
-<td align="center">Libraries</td>
+<td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../index.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="converter___function_object.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
-<div class="section" title="Definitions">
+<div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_numericconversion.definitions"></a><a class="link" href="definitions.html" title="Definitions">Definitions</a>
 </h2></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section">Introduction</span></dt>
-<dt><span class="section"><a href="definitions.html#boost_numericconversion.definitions.types_and_values">Types
- and Values</a></span></dt>
-<dt><span class="section"><a href="definitions.html#boost_numericconversion.definitions.c___arithmetic_types">C++
- Arithmetic Types</a></span></dt>
-<dt><span class="section"><a href="definitions.html#boost_numericconversion.definitions.numeric_types">Numeric
- Types</a></span></dt>
-<dt><span class="section"><a href="definitions.html#boost_numericconversion.definitions.range_and_precision">Range
- and Precision</a></span></dt>
-<dt><span class="section"><a href="definitions.html#boost_numericconversion.definitions.exact__correctly_rounded_and_out_of_range_representations">Exact,
- Correctly Rounded and Out-Of-Range Representations</a></span></dt>
-<dt><span class="section"><a href="definitions.html#boost_numericconversion.definitions.standard__numeric__conversions">Standard
- (numeric) Conversions</a></span></dt>
-<dt><span class="section"><a href="definitions.html#boost_numericconversion.definitions.subranged_conversion_direction__subtype_and_supertype">Subranged
- Conversion Direction, Subtype and Supertype</a></span></dt>
-</dl></div>
-<div class="section" title="Introduction">
+
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.definitions.introduction"></a><a class="link" href="definitions.html#boost_numericconversion.definitions.introduction" title="Introduction">Introduction</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         This section provides definitions of terms used in the Numeric Conversion
         library.
       </p>
-<div class="sidebar">
-<p class="title"><b></b></p>
-<p>
+ <div class="sidebar">
+<div class="titlepage"></div>
+ <p>
         <span class="bold"><strong>Notation</strong></span> <span class="underline">underlined
         text</span> denotes terms defined in the C++ standard.
       </p>
-<p>
+ <p>
         <span class="bold"><strong>bold face</strong></span> denotes terms defined here but
         not in the standard.
       </p>
-</div>
-</div>
-<div class="section" title="Types and Values">
+ </div>
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.definitions.types_and_values"></a><a class="link" href="definitions.html#boost_numericconversion.definitions.types_and_values" title="Types and Values">Types
       and Values</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         As defined by the <span class="underline">C++ Object Model</span>
- (§1.7) the <span class="underline">storage</span> or memory on which
+ (&#167;1.7) the <span class="underline">storage</span> or memory on which
         a C++ program runs is a contiguous sequence of <span class="underline">bytes</span>
         where each byte is a contiguous sequence of bits.
       </p>
-<p>
- An <span class="underline">object</span> is a region of storage (§1.8)
- and has a type (§3.9).
+ <p>
+ An <span class="underline">object</span> is a region of storage (&#167;1.8)
+ and has a type (&#167;3.9).
       </p>
-<p>
+ <p>
         A <span class="underline">type</span> is a discrete set of values.
       </p>
-<p>
+ <p>
         An object of type <code class="computeroutput"><span class="identifier">T</span></code> has an
         <span class="underline">object representation</span> which is the
- sequence of bytes stored in the object (§3.9/4)
+ sequence of bytes stored in the object (&#167;3.9/4)
       </p>
-<p>
+ <p>
         An object of type <code class="computeroutput"><span class="identifier">T</span></code> has a
         <span class="underline">value representation</span> which is the set
         of bits that determine the <span class="emphasis"><em>value</em></span> of an object of that
- type (§3.9/4). For <span class="underline">POD</span> types (§3.9/10),
+ type (&#167;3.9/4). For <span class="underline">POD</span> types (&#167;3.9/10),
         this bitset is given by the object representation, but not all the bits in
         the storage need to participate in the value representation (except for character
         types): for example, some bits might be used for padding or there may be
         trap-bits.
       </p>
-<p>
+ <p>
         <span class="inlinemediaobject"><img src="../images/space.png" alt="space"></span>
       </p>
-<p>
+ <p>
         The <span class="bold"><strong>typed value</strong></span> that is held by an object
         is the value which is determined by its value representation.
       </p>
-<p>
+ <p>
         An <span class="bold"><strong>abstract value</strong></span> (untyped) is the conceptual
         information that is represented in a type (i.e. the number &#960;).
       </p>
-<p>
+ <p>
         The <span class="bold"><strong>intrinsic value</strong></span> of an object is the
         binary value of the sequence of unsigned characters which form its object
         representation.
       </p>
-<p>
+ <p>
         <span class="inlinemediaobject"><img src="../images/space.png" alt="space"></span>
       </p>
-<p>
+ <p>
         <span class="emphasis"><em>Abstract</em></span> values can be <span class="bold"><strong>represented</strong></span>
         in a given type.
       </p>
-<p>
+ <p>
         To <span class="bold"><strong>represent</strong></span> an abstract value <code class="computeroutput"><span class="identifier">V</span></code> in a type <code class="computeroutput"><span class="identifier">T</span></code>
         is to obtain a typed value <code class="computeroutput"><span class="identifier">v</span></code>
         which corresponds to the abstract value <code class="computeroutput"><span class="identifier">V</span></code>.
       </p>
-<p>
+ <p>
         The operation is denoted using the <code class="computeroutput"><span class="identifier">rep</span><span class="special">()</span></code> operator, as in: <code class="computeroutput"><span class="identifier">v</span><span class="special">=</span><span class="identifier">rep</span><span class="special">(</span><span class="identifier">V</span><span class="special">)</span></code>. <code class="computeroutput"><span class="identifier">v</span></code> is the <span class="bold"><strong>representation</strong></span>
         of <code class="computeroutput"><span class="identifier">V</span></code> in the type <code class="computeroutput"><span class="identifier">T</span></code>.
       </p>
-<p>
+ <p>
         For example, the abstract value &#960; can be represented in the type <code class="computeroutput"><span class="keyword">double</span></code> as the <code class="computeroutput"><span class="keyword">double</span>
         <span class="identifier">value</span> <span class="identifier">M_PI</span></code>
         and in the type <code class="computeroutput"><span class="keyword">int</span></code> as the
         <code class="computeroutput"><span class="keyword">int</span> <span class="identifier">value</span>
         <span class="number">3</span></code>
       </p>
-<p>
+ <p>
         <span class="inlinemediaobject"><img src="../images/space.png" alt="space"></span>
       </p>
-<p>
+ <p>
         Conversely, <span class="emphasis"><em>typed values</em></span> can be <span class="bold"><strong>abstracted</strong></span>.
       </p>
-<p>
+ <p>
         To <span class="bold"><strong>abstract</strong></span> a typed value <code class="computeroutput"><span class="identifier">v</span></code> of type <code class="computeroutput"><span class="identifier">T</span></code>
         is to obtain the abstract value <code class="computeroutput"><span class="identifier">V</span></code>
         whose representation in <code class="computeroutput"><span class="identifier">T</span></code>
         is <code class="computeroutput"><span class="identifier">v</span></code>.
       </p>
-<p>
+ <p>
         The operation is denoted using the <code class="computeroutput"><span class="identifier">abt</span><span class="special">()</span></code> operator, as in: <code class="computeroutput"><span class="identifier">V</span><span class="special">=</span><span class="identifier">abt</span><span class="special">(</span><span class="identifier">v</span><span class="special">)</span></code>.
       </p>
-<p>
+ <p>
         <code class="computeroutput"><span class="identifier">V</span></code> is the <span class="bold"><strong>abstraction</strong></span>
         of <code class="computeroutput"><span class="identifier">v</span></code> of type <code class="computeroutput"><span class="identifier">T</span></code>.
       </p>
-<p>
+ <p>
         Abstraction is just an abstract operation (you can't do it); but it is defined
         nevertheless because it will be used to give the definitions in the rest
         of this document.
       </p>
-</div>
-<div class="section" title="C++ Arithmetic Types">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.definitions.c___arithmetic_types"></a><a class="link" href="definitions.html#boost_numericconversion.definitions.c___arithmetic_types" title="C++ Arithmetic Types">C++
       Arithmetic Types</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         The C++ language defines <span class="underline">fundamental types</span>
- (§3.9.1). The following subsets of the fundamental types are intended to
+ (&#167;3.9.1). The following subsets of the fundamental types are intended to
         represent <span class="emphasis"><em>numbers</em></span>:
       </p>
-<div class="variablelist">
+ <div class="variablelist">
 <p class="title"><b></b></p>
 <dl>
-<dt><span class="term"><span class="underline">signed integer
- types</span> (§3.9.1/2):</span></dt>
-<dd><p>
- <code class="computeroutput"><span class="special">{</span><span class="keyword">signed</span>
- <span class="keyword">char</span><span class="special">,</span>
- <span class="keyword">signed</span> <span class="keyword">short</span>
- <span class="keyword">int</span><span class="special">,</span>
- <span class="keyword">signed</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">signed</span> <span class="keyword">long</span> <span class="keyword">int</span><span class="special">}</span></code> Can be used to represent general integer
- numbers (both negative and positive).
- </p></dd>
-<dt><span class="term"><span class="underline">unsigned integer
- types</span> (§3.9.1/3):</span></dt>
-<dd><p>
- <code class="computeroutput"><span class="special">{</span><span class="keyword">unsigned</span>
- <span class="keyword">char</span><span class="special">,</span>
- <span class="keyword">unsigned</span> <span class="keyword">short</span>
- <span class="keyword">int</span><span class="special">,</span>
- <span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="keyword">int</span><span class="special">}</span></code> Can be used to represent positive integer
- numbers with modulo-arithmetic.
- </p></dd>
-<dt><span class="term"><span class="underline">floating-point
- types</span> (§3.9.1/8):</span></dt>
-<dd><p>
- <code class="computeroutput"><span class="special">{</span><span class="keyword">float</span><span class="special">,</span><span class="keyword">double</span><span class="special">,</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">}</span></code>
- Can be used to represent real numbers.
- </p></dd>
-<dt><span class="term"><span class="underline">integral or
- integer types</span> (§3.9.1/7):</span></dt>
-<dd><p>
- <code class="computeroutput"><span class="special">{{</span><span class="keyword">signed</span>
- <span class="identifier">integers</span><span class="special">},{</span><span class="keyword">unsigned</span> <span class="identifier">integers</span><span class="special">},</span> <span class="keyword">bool</span><span class="special">,</span> <span class="keyword">char</span> <span class="keyword">and</span> <span class="keyword">wchar_t</span><span class="special">}</span></code>
- </p></dd>
-<dt><span class="term"><span class="underline">arithmetic
- types</span> (§3.9.1/8):</span></dt>
-<dd><p>
- <code class="computeroutput"><span class="special">{{</span><span class="identifier">integer</span>
- <span class="identifier">types</span><span class="special">},{</span><span class="identifier">floating</span> <span class="identifier">types</span><span class="special">}}</span></code>
- </p></dd>
+<dt><span class="term"><span class="underline">signed integer types</span> (&#167;3.9.1/2):</span></dt>
+<dd>
+ <p>
+ <code class="computeroutput"><span class="special">{</span><span class="keyword">signed</span>
+ <span class="keyword">char</span><span class="special">,</span>
+ <span class="keyword">signed</span> <span class="keyword">short</span>
+ <span class="keyword">int</span><span class="special">,</span>
+ <span class="keyword">signed</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">signed</span> <span class="keyword">long</span> <span class="keyword">int</span><span class="special">}</span></code> Can be used to represent general integer
+ numbers (both negative and positive).
+ </p>
+ </dd>
+<dt><span class="term"><span class="underline">unsigned integer types</span> (&#167;3.9.1/3):</span></dt>
+<dd>
+ <p>
+ <code class="computeroutput"><span class="special">{</span><span class="keyword">unsigned</span>
+ <span class="keyword">char</span><span class="special">,</span>
+ <span class="keyword">unsigned</span> <span class="keyword">short</span>
+ <span class="keyword">int</span><span class="special">,</span>
+ <span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">unsigned</span>
+ <span class="keyword">long</span> <span class="keyword">int</span><span class="special">}</span></code> Can be used to represent positive
+ integer numbers with modulo-arithmetic.
+ </p>
+ </dd>
+<dt><span class="term"><span class="underline">floating-point types</span> (&#167;3.9.1/8):</span></dt>
+<dd>
+ <p>
+ <code class="computeroutput"><span class="special">{</span><span class="keyword">float</span><span class="special">,</span><span class="keyword">double</span><span class="special">,</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">}</span></code>
+ Can be used to represent real numbers.
+ </p>
+ </dd>
+<dt><span class="term"><span class="underline">integral or integer types</span> (&#167;3.9.1/7):</span></dt>
+<dd>
+ <p>
+ <code class="computeroutput"><span class="special">{{</span><span class="keyword">signed</span>
+ <span class="identifier">integers</span><span class="special">},{</span><span class="keyword">unsigned</span> <span class="identifier">integers</span><span class="special">},</span> <span class="keyword">bool</span><span class="special">,</span> <span class="keyword">char</span> <span class="keyword">and</span> <span class="keyword">wchar_t</span><span class="special">}</span></code>
+ </p>
+ </dd>
+<dt><span class="term"><span class="underline">arithmetic types</span> (&#167;3.9.1/8):</span></dt>
+<dd>
+ <p>
+ <code class="computeroutput"><span class="special">{{</span><span class="identifier">integer</span>
+ <span class="identifier">types</span><span class="special">},{</span><span class="identifier">floating</span> <span class="identifier">types</span><span class="special">}}</span></code>
+ </p>
+ </dd>
 </dl>
 </div>
-<p>
+ <p>
         The integer types are required to have a <span class="emphasis"><em>binary</em></span> value
         representation.
       </p>
-<p>
+ <p>
         Additionally, the signed/unsigned integer types of the same base type (<code class="computeroutput"><span class="keyword">short</span></code>, <code class="computeroutput"><span class="keyword">int</span></code>
         or <code class="computeroutput"><span class="keyword">long</span></code>) are required to have
         the same value representation, that is:
       </p>
-<pre class="programlisting"> <span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="special">-</span><span class="number">3</span> <span class="special">;</span> <span class="comment">// suppose value representation is: 10011 (sign bit + 4 magnitude bits)
-</span><span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">u</span> <span class="special">=</span> <span class="identifier">i</span> <span class="special">;</span> <span class="comment">// u is required to have the same 10011 as its value representation.
-</span></pre>
-<p>
+<pre class="programlisting"> <span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="special">-</span><span class="number">3</span> <span class="special">;</span> <span class="comment">// suppose value representation is: 10011 (sign bit + 4 magnitude bits)</span>
+<span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">u</span> <span class="special">=</span> <span class="identifier">i</span> <span class="special">;</span> <span class="comment">// u is required to have the same 10011 as its value representation.</span>
+</pre>
+ <p>
         In other words, the integer types signed/unsigned X use the same value representation
         but a different <span class="emphasis"><em>interpretation</em></span> of it; that is, their
         <span class="emphasis"><em>typed values</em></span> might differ.
       </p>
-<p>
+ <p>
         Another consequence of this is that the range for signed X is always a smaller
- subset of the range of unsigned X, as required by §3.9.1/3.
+ subset of the range of unsigned X, as required by &#167;3.9.1/3.
       </p>
-<div class="note" title="Note"><table border="0" summary="Note">
+ <div class="note"><table border="0" summary="Note">
 <tr>
-<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/src/images/note.png"></td>
 <th align="left">Note</th>
 </tr>
 <tr><td align="left" valign="top">
-<p>
+ <p>
           Always remember that unsigned types, unlike signed types, have modulo-arithmetic;
           that is, they do not overflow. This means that:
         </p>
-<p>
+ <p>
           <span class="bold"><strong>-</strong></span> Always be extra careful when mixing
           signed/unsigned types
         </p>
-<p>
+ <p>
           <span class="bold"><strong>-</strong></span> Use unsigned types only when you need
           modulo arithmetic or very very large numbers. Don't use unsigned types
           just because you intend to deal with positive values only (you can do this
           with signed types as well).
         </p>
-</td></tr>
+ </td></tr>
 </table></div>
-</div>
-<div class="section" title="Numeric Types">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.definitions.numeric_types"></a><a class="link" href="definitions.html#boost_numericconversion.definitions.numeric_types" title="Numeric Types">Numeric
       Types</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         This section introduces the following definitions intended to integrate arithmetic
         types with user-defined types which behave like numbers. Some definitions
         are purposely broad in order to include a vast variety of user-defined number
         types.
       </p>
-<p>
+ <p>
         Within this library, the term <span class="emphasis"><em>number</em></span> refers to an abstract
         numeric value.
       </p>
-<p>
+ <p>
         A type is <span class="bold"><strong>numeric</strong></span> if:
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem">
- It is an arithmetic type, or,
- </li>
-<li class="listitem">
- It is a user-defined type which
- <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
- Represents numeric abstract values (i.e. numbers).
- </li>
-<li class="listitem">
- Can be converted (either implicitly or explicitly) to/from at least
- one arithmetic type.
- </li>
-<li class="listitem">
- Has <a class="link" href="definitions.html#boost_numericconversion.definitions.range_and_precision" title="Range and Precision">range</a>
- (possibly unbounded) and <a class="link" href="definitions.html#boost_numericconversion.definitions.range_and_precision" title="Range and Precision">precision</a>
- (possibly dynamic or unlimited).
- </li>
-<li class="listitem">
- Provides an specialization of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>.
- </li>
+
+ It is an arithmetic type, or,
+
+ </li>
+<li class="listitem">
+
+ It is a user-defined type which
+ <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+<li class="listitem">
+
+ Represents numeric abstract values (i.e. numbers).
+
+ </li>
+<li class="listitem">
+
+ Can be converted (either implicitly or explicitly) to/from at least
+ one arithmetic type.
+
+ </li>
+<li class="listitem">
+
+ Has <a class="link" href="definitions.html#boost_numericconversion.definitions.range_and_precision" title="Range and Precision">range</a>
+ (possibly unbounded) and <a class="link" href="definitions.html#boost_numericconversion.definitions.range_and_precision" title="Range and Precision">precision</a>
+ (possibly dynamic or unlimited).
+
+ </li>
+<li class="listitem">
+
+ Provides an specialization of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>.
+
+ </li>
 </ul></div>
-</li>
+
+ </li>
 </ul></div>
-<p>
+ <p>
         A numeric type is <span class="bold"><strong>signed</strong></span> if the abstract
         values it represent include negative numbers.
       </p>
-<p>
+ <p>
         A numeric type is <span class="bold"><strong>unsigned</strong></span> if the abstract
         values it represent exclude negative numbers.
       </p>
-<p>
+ <p>
         A numeric type is <span class="bold"><strong>modulo</strong></span> if it has modulo-arithmetic
         (does not overflow).
       </p>
-<p>
+ <p>
         A numeric type is <span class="bold"><strong>integer</strong></span> if the abstract
         values it represent are whole numbers.
       </p>
-<p>
+ <p>
         A numeric type is <span class="bold"><strong>floating</strong></span> if the abstract
         values it represent are real numbers.
       </p>
-<p>
+ <p>
         An <span class="bold"><strong>arithmetic value</strong></span> is the typed value of
         an arithmetic type
       </p>
-<p>
+ <p>
         A <span class="bold"><strong>numeric value</strong></span> is the typed value of a
         numeric type
       </p>
-<p>
+ <p>
         These definitions simply generalize the standard notions of arithmetic types
         and values by introducing a superset called <span class="underline">numeric</span>.
         All arithmetic types and values are numeric types and values, but not vice
         versa, since user-defined numeric types are not arithmetic types.
       </p>
-<p>
+ <p>
         The following examples clarify the differences between arithmetic and numeric
         types (and values):
       </p>
-<pre class="programlisting"><span class="comment">// A numeric type which is not an arithmetic type (is user-defined)
-</span><span class="comment">// and which is intended to represent integer numbers (i.e., an 'integer' numeric type)
-</span><span class="keyword">class</span> <span class="identifier">MyInt</span>
+<pre class="programlisting"><span class="comment">// A numeric type which is not an arithmetic type (is user-defined)</span>
+<span class="comment">// and which is intended to represent integer numbers (i.e., an 'integer' numeric type)</span>
+<span class="keyword">class</span> <span class="identifier">MyInt</span>
 <span class="special">{</span>
     <span class="identifier">MyInt</span> <span class="special">(</span> <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">v</span> <span class="special">)</span> <span class="special">;</span>
     <span class="keyword">long</span> <span class="keyword">long</span> <span class="identifier">to_builtin</span><span class="special">();</span>
@@ -349,68 +353,69 @@
 <span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">MyInt</span><span class="special">&gt;</span> <span class="special">{</span> <span class="special">...</span> <span class="special">}</span> <span class="special">;</span>
 <span class="special">}</span>
 
-<span class="comment">// A 'floating' numeric type (double) which is also an arithmetic type (built-in),
-</span><span class="comment">// with a float numeric value.
-</span><span class="keyword">double</span> <span class="identifier">pi</span> <span class="special">=</span> <span class="identifier">M_PI</span> <span class="special">;</span>
+<span class="comment">// A 'floating' numeric type (double) which is also an arithmetic type (built-in),</span>
+<span class="comment">// with a float numeric value.</span>
+<span class="keyword">double</span> <span class="identifier">pi</span> <span class="special">=</span> <span class="identifier">M_PI</span> <span class="special">;</span>
 
-<span class="comment">// A 'floating' numeric type with a whole numeric value.
-</span><span class="comment">// NOTE: numeric values are typed valued, hence, they are, for instance,
-</span><span class="comment">// integer or floating, despite the value itself being whole or including
-</span><span class="comment">// a fractional part.
-</span><span class="keyword">double</span> <span class="identifier">two</span> <span class="special">=</span> <span class="number">2.0</span> <span class="special">;</span>
+<span class="comment">// A 'floating' numeric type with a whole numeric value.</span>
+<span class="comment">// NOTE: numeric values are typed valued, hence, they are, for instance,</span>
+<span class="comment">// integer or floating, despite the value itself being whole or including</span>
+<span class="comment">// a fractional part.</span>
+<span class="keyword">double</span> <span class="identifier">two</span> <span class="special">=</span> <span class="number">2.0</span> <span class="special">;</span>
 
-<span class="comment">// An integer numeric type with an integer numeric value.
-</span><span class="identifier">MyInt</span> <span class="identifier">i</span><span class="special">(</span><span class="number">1234</span><span class="special">);</span>
+<span class="comment">// An integer numeric type with an integer numeric value.</span>
+<span class="identifier">MyInt</span> <span class="identifier">i</span><span class="special">(</span><span class="number">1234</span><span class="special">);</span>
 </pre>
-</div>
-<div class="section" title="Range and Precision">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.definitions.range_and_precision"></a><a class="link" href="definitions.html#boost_numericconversion.definitions.range_and_precision" title="Range and Precision">Range
       and Precision</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         Given a number set <code class="computeroutput"><span class="identifier">N</span></code>, some
         of its elements are representable in a numeric type <code class="computeroutput"><span class="identifier">T</span></code>.
       </p>
-<p>
+ <p>
         The set of representable values of type <code class="computeroutput"><span class="identifier">T</span></code>,
         or numeric set of <code class="computeroutput"><span class="identifier">T</span></code>, is a
         set of numeric values whose elements are the representation of some subset
         of <code class="computeroutput"><span class="identifier">N</span></code>.
       </p>
-<p>
+ <p>
         For example, the interval of <code class="computeroutput"><span class="keyword">int</span></code>
         values <code class="computeroutput"><span class="special">[</span><span class="identifier">INT_MIN</span><span class="special">,</span><span class="identifier">INT_MAX</span><span class="special">]</span></code> is the set of representable values of type
         <code class="computeroutput"><span class="keyword">int</span></code>, i.e. the <code class="computeroutput"><span class="keyword">int</span></code> numeric set, and corresponds to the representation
         of the elements of the interval of abstract values <code class="computeroutput"><span class="special">[</span><span class="identifier">abt</span><span class="special">(</span><span class="identifier">INT_MIN</span><span class="special">),</span><span class="identifier">abt</span><span class="special">(</span><span class="identifier">INT_MAX</span><span class="special">)]</span></code>
         from the integer numbers.
       </p>
-<p>
+ <p>
         Similarly, the interval of <code class="computeroutput"><span class="keyword">double</span></code>
         values <code class="computeroutput"><span class="special">[-</span><span class="identifier">DBL_MAX</span><span class="special">,</span><span class="identifier">DBL_MAX</span><span class="special">]</span></code> is the <code class="computeroutput"><span class="keyword">double</span></code>
         numeric set, which corresponds to the subset of the real numbers from <code class="computeroutput"><span class="identifier">abt</span><span class="special">(-</span><span class="identifier">DBL_MAX</span><span class="special">)</span></code> to <code class="computeroutput"><span class="identifier">abt</span><span class="special">(</span><span class="identifier">DBL_MAX</span><span class="special">)</span></code>.
       </p>
-<p>
+ <p>
         <span class="inlinemediaobject"><img src="../images/space.png" alt="space"></span>
       </p>
-<p>
+ <p>
         Let <span class="bold"><strong><code class="computeroutput"><span class="identifier">next</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code></strong></span>
         denote the lowest numeric value greater than x.
       </p>
-<p>
+ <p>
         Let <span class="bold"><strong><code class="computeroutput"><span class="identifier">prev</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code></strong></span>
         denote the highest numeric value lower then x.
       </p>
-<p>
+ <p>
         Let <span class="bold"><strong><code class="computeroutput"><span class="identifier">v</span><span class="special">=</span><span class="identifier">prev</span><span class="special">(</span><span class="identifier">next</span><span class="special">(</span><span class="identifier">V</span><span class="special">))</span></code></strong></span> and <span class="bold"><strong><code class="computeroutput"><span class="identifier">v</span><span class="special">=</span><span class="identifier">next</span><span class="special">(</span><span class="identifier">prev</span><span class="special">(</span><span class="identifier">V</span><span class="special">))</span></code></strong></span>
         be identities that relate a numeric typed value <code class="computeroutput"><span class="identifier">v</span></code>
         with a number <code class="computeroutput"><span class="identifier">V</span></code>.
       </p>
-<p>
+ <p>
         An ordered pair of numeric values <code class="computeroutput"><span class="identifier">x</span></code>,<code class="computeroutput"><span class="identifier">y</span></code> s.t. <code class="computeroutput"><span class="identifier">x</span><span class="special">&lt;</span><span class="identifier">y</span></code> are
         <span class="bold"><strong>consecutive</strong></span> iff <code class="computeroutput"><span class="identifier">next</span><span class="special">(</span><span class="identifier">x</span><span class="special">)==</span><span class="identifier">y</span></code>.
       </p>
-<p>
+ <p>
         The abstract distance between consecutive numeric values is usually referred
         to as a <span class="underline">Unit in the Last Place</span>, or
         <span class="bold"><strong>ulp</strong></span> for short. A ulp is a quantity whose
@@ -421,7 +426,7 @@
         <code class="computeroutput"><span class="identifier">x</span></code> might be (usually is) different
         from the magnitude of a 1ulp after the numeric value y for <code class="computeroutput"><span class="identifier">x</span><span class="special">!=</span><span class="identifier">y</span></code>.
       </p>
-<p>
+ <p>
         Since numbers are inherently ordered, a <span class="bold"><strong>numeric set</strong></span>
         of type <code class="computeroutput"><span class="identifier">T</span></code> is an ordered sequence
         of numeric values (of type <code class="computeroutput"><span class="identifier">T</span></code>)
@@ -429,22 +434,22 @@
       </p>
 <pre class="programlisting"><span class="identifier">REP</span><span class="special">(</span><span class="identifier">T</span><span class="special">)={</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">next</span><span class="special">(</span><span class="identifier">l</span><span class="special">),</span><span class="identifier">next</span><span class="special">(</span><span class="identifier">next</span><span class="special">(</span><span class="identifier">l</span><span class="special">)),...,</span><span class="identifier">prev</span><span class="special">(</span><span class="identifier">prev</span><span class="special">(</span><span class="identifier">h</span><span class="special">)),</span><span class="identifier">prev</span><span class="special">(</span><span class="identifier">h</span><span class="special">),</span><span class="identifier">h</span><span class="special">}</span>
 </pre>
-<p>
+ <p>
         where <code class="computeroutput"><span class="identifier">l</span></code> and <code class="computeroutput"><span class="identifier">h</span></code> are respectively the lowest and highest
         values of type <code class="computeroutput"><span class="identifier">T</span></code>, called
         the boundary values of type <code class="computeroutput"><span class="identifier">T</span></code>.
       </p>
-<p>
+ <p>
         <span class="inlinemediaobject"><img src="../images/space.png" alt="space"></span>
       </p>
-<p>
+ <p>
         A numeric set is discrete. It has a <span class="bold"><strong>size</strong></span>
         which is the number of numeric values in the set, a <span class="bold"><strong>width</strong></span>
         which is the abstract difference between the highest and lowest boundary
         values: <code class="computeroutput"><span class="special">[</span><span class="identifier">abt</span><span class="special">(</span><span class="identifier">h</span><span class="special">)-</span><span class="identifier">abt</span><span class="special">(</span><span class="identifier">l</span><span class="special">)]</span></code>, and a <span class="bold"><strong>density</strong></span>
         which is the relation between its size and width: <code class="computeroutput"><span class="identifier">density</span><span class="special">=</span><span class="identifier">size</span><span class="special">/</span><span class="identifier">width</span></code>.
       </p>
-<p>
+ <p>
         The integer types have density 1, which means that there are no unrepresentable
         integer numbers between <code class="computeroutput"><span class="identifier">abt</span><span class="special">(</span><span class="identifier">l</span><span class="special">)</span></code>
         and <code class="computeroutput"><span class="identifier">abt</span><span class="special">(</span><span class="identifier">h</span><span class="special">)</span></code> (i.e.
@@ -452,15 +457,15 @@
         than 1, which means that there are real numbers unrepresented between consecutive
         floating values (i.e. there are gaps).
       </p>
-<p>
+ <p>
         <span class="inlinemediaobject"><img src="../images/space.png" alt="space"></span>
       </p>
-<p>
+ <p>
         The interval of <span class="underline">abstract values</span> <code class="computeroutput"><span class="special">[</span><span class="identifier">abt</span><span class="special">(</span><span class="identifier">l</span><span class="special">),</span><span class="identifier">abt</span><span class="special">(</span><span class="identifier">h</span><span class="special">)]</span></code>
         is the range of the type <code class="computeroutput"><span class="identifier">T</span></code>,
         denoted <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code>.
       </p>
-<p>
+ <p>
         A range is a set of abstract values and not a set of numeric values. In other
         documents, such as the C++ standard, the word <code class="computeroutput"><span class="identifier">range</span></code>
         is <span class="emphasis"><em>sometimes</em></span> used as synonym for <code class="computeroutput"><span class="identifier">numeric</span>
@@ -469,51 +474,55 @@
         to <code class="computeroutput"><span class="identifier">h</span></code>. In this document, however,
         a range is an abstract interval which subtends the numeric set.
       </p>
-<p>
+ <p>
         For example, the sequence <code class="computeroutput"><span class="special">[-</span><span class="identifier">DBL_MAX</span><span class="special">,</span><span class="identifier">DBL_MAX</span><span class="special">]</span></code>
         is the numeric set of the type <code class="computeroutput"><span class="keyword">double</span></code>,
         and the real interval <code class="computeroutput"><span class="special">[</span><span class="identifier">abt</span><span class="special">(-</span><span class="identifier">DBL_MAX</span><span class="special">),</span><span class="identifier">abt</span><span class="special">(</span><span class="identifier">DBL_MAX</span><span class="special">)]</span></code>
         is its range.
       </p>
-<p>
+ <p>
         Notice, for instance, that the range of a floating-point type is <span class="emphasis"><em>continuous</em></span>
         unlike its numeric set.
       </p>
-<p>
+ <p>
         This definition was chosen because:
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
-<span class="bold"><strong>(a)</strong></span> The discrete set of numeric values
- is already given by the numeric set.
+
+ <span class="bold"><strong>(a)</strong></span> The discrete set of numeric values
+ is already given by the numeric set.
+
         </li>
 <li class="listitem">
-<span class="bold"><strong>(b)</strong></span> Abstract intervals are easier to compare
- and overlap since only boundary values need to be considered.
+
+ <span class="bold"><strong>(b)</strong></span> Abstract intervals are easier to
+ compare and overlap since only boundary values need to be considered.
+
         </li>
 </ul></div>
-<p>
+ <p>
         This definition allows for a concise definition of <code class="computeroutput"><span class="identifier">subranged</span></code>
         as given in the last section.
       </p>
-<p>
+ <p>
         The width of a numeric set, as defined, is exactly equivalent to the width
         of a range.
       </p>
-<p>
+ <p>
         <span class="inlinemediaobject"><img src="../images/space.png" alt="space"></span>
       </p>
-<p>
+ <p>
         The <span class="bold"><strong>precision</strong></span> of a type is given by the
         width or density of the numeric set.
       </p>
-<p>
+ <p>
         For integer types, which have density 1, the precision is conceptually equivalent
         to the range and is determined by the number of bits used in the value representation:
         The higher the number of bits the bigger the size of the numeric set, the
         wider the range, and the higher the precision.
       </p>
-<p>
+ <p>
         For floating types, which have density &lt;&lt;1, the precision is given
         not by the width of the range but by the density. In a typical implementation,
         the range is determined by the number of bits used in the exponent, and the
@@ -522,18 +531,19 @@
         the number of exponent bits the wider the range, while the higher the number
         of mantissa bits, the higher the precision.
       </p>
-</div>
-<div class="section" title="Exact, Correctly Rounded and Out-Of-Range Representations">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.definitions.exact__correctly_rounded_and_out_of_range_representations"></a><a class="link" href="definitions.html#boost_numericconversion.definitions.exact__correctly_rounded_and_out_of_range_representations" title="Exact, Correctly Rounded and Out-Of-Range Representations">Exact,
       Correctly Rounded and Out-Of-Range Representations</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         Given an abstract value <code class="computeroutput"><span class="identifier">V</span></code>
         and a type <code class="computeroutput"><span class="identifier">T</span></code> with its corresponding
         range <code class="computeroutput"><span class="special">[</span><span class="identifier">abt</span><span class="special">(</span><span class="identifier">l</span><span class="special">),</span><span class="identifier">abt</span><span class="special">(</span><span class="identifier">h</span><span class="special">)]</span></code>:
       </p>
-<p>
+ <p>
         If <code class="computeroutput"><span class="identifier">V</span> <span class="special">&lt;</span>
         <span class="identifier">abt</span><span class="special">(</span><span class="identifier">l</span><span class="special">)</span></code> or
         <code class="computeroutput"><span class="identifier">V</span> <span class="special">&gt;</span>
@@ -542,19 +552,23 @@
         or, equivalently, it's representation in the type <code class="computeroutput"><span class="identifier">T</span></code>
         is <span class="bold"><strong>out of range</strong></span>, or <span class="bold"><strong>overflows</strong></span>.
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
- If <code class="computeroutput"><span class="identifier">V</span> <span class="special">&lt;</span>
- <span class="identifier">abt</span><span class="special">(</span><span class="identifier">l</span><span class="special">)</span></code>, the
- <span class="bold"><strong>overflow is negative</strong></span>.
+
+ If <code class="computeroutput"><span class="identifier">V</span> <span class="special">&lt;</span>
+ <span class="identifier">abt</span><span class="special">(</span><span class="identifier">l</span><span class="special">)</span></code>,
+ the <span class="bold"><strong>overflow is negative</strong></span>.
+
         </li>
 <li class="listitem">
- If <code class="computeroutput"><span class="identifier">V</span> <span class="special">&gt;</span>
- <span class="identifier">abt</span><span class="special">(</span><span class="identifier">h</span><span class="special">)</span></code>, the
- <span class="bold"><strong>overflow is positive</strong></span>.
+
+ If <code class="computeroutput"><span class="identifier">V</span> <span class="special">&gt;</span>
+ <span class="identifier">abt</span><span class="special">(</span><span class="identifier">h</span><span class="special">)</span></code>,
+ the <span class="bold"><strong>overflow is positive</strong></span>.
+
         </li>
 </ul></div>
-<p>
+ <p>
         If <code class="computeroutput"><span class="identifier">V</span> <span class="special">&gt;=</span>
         <span class="identifier">abt</span><span class="special">(</span><span class="identifier">l</span><span class="special">)</span></code> and
         <code class="computeroutput"><span class="identifier">V</span> <span class="special">&lt;=</span>
@@ -564,7 +578,7 @@
         is <span class="bold"><strong>in range</strong></span>, or <span class="bold"><strong>does
         not overflow</strong></span>.
       </p>
-<p>
+ <p>
         Notice that a numeric type, such as a C++ unsigned type, can define that
         any <code class="computeroutput"><span class="identifier">V</span></code> does not overflow by
         always representing not <code class="computeroutput"><span class="identifier">V</span></code>
@@ -572,30 +586,34 @@
         <span class="special">=</span> <span class="special">[</span> <span class="identifier">V</span> <span class="special">%</span> <span class="special">(</span><span class="identifier">abt</span><span class="special">(</span><span class="identifier">h</span><span class="special">)+</span><span class="number">1</span><span class="special">)</span>
         <span class="special">]</span></code>, which is always in range.
       </p>
-<p>
+ <p>
         Given an abstract value <code class="computeroutput"><span class="identifier">V</span></code>
         represented in the type <code class="computeroutput"><span class="identifier">T</span></code>
         as <code class="computeroutput"><span class="identifier">v</span></code>, the <span class="bold"><strong>roundoff</strong></span>
         error of the representation is the abstract difference: <code class="computeroutput"><span class="special">(</span><span class="identifier">abt</span><span class="special">(</span><span class="identifier">v</span><span class="special">)-</span><span class="identifier">V</span><span class="special">)</span></code>.
       </p>
-<p>
+ <p>
         Notice that a representation is an <span class="emphasis"><em>operation</em></span>, hence,
         the roundoff error corresponds to the representation operation and not to
         the numeric value itself (i.e. numeric values do not have any error themselves)
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
- If the roundoff is 0, the representation is <span class="bold"><strong>exact</strong></span>,
- and <code class="computeroutput"><span class="identifier">V</span></code> is exactly representable
- in the type <code class="computeroutput"><span class="identifier">T</span></code>.
+
+ If the roundoff is 0, the representation is <span class="bold"><strong>exact</strong></span>,
+ and <code class="computeroutput"><span class="identifier">V</span></code> is exactly representable
+ in the type <code class="computeroutput"><span class="identifier">T</span></code>.
+
         </li>
 <li class="listitem">
- If the roundoff is not 0, the representation is <span class="bold"><strong>inexact</strong></span>,
- and <code class="computeroutput"><span class="identifier">V</span></code> is inexactly representable
- in the type <code class="computeroutput"><span class="identifier">T</span></code>.
+
+ If the roundoff is not 0, the representation is <span class="bold"><strong>inexact</strong></span>,
+ and <code class="computeroutput"><span class="identifier">V</span></code> is inexactly representable
+ in the type <code class="computeroutput"><span class="identifier">T</span></code>.
+
         </li>
 </ul></div>
-<p>
+ <p>
         If a representation <code class="computeroutput"><span class="identifier">v</span></code> in
         a type <code class="computeroutput"><span class="identifier">T</span></code> -either exact or
         inexact-, is any of the adjacents of <code class="computeroutput"><span class="identifier">V</span></code>
@@ -606,7 +624,7 @@
         <span class="bold"><strong>rounding direction</strong></span>, it is <span class="bold"><strong>correctly
         rounded</strong></span>.
       </p>
-<p>
+ <p>
         All exact representations are correctly rounded, but not all inexact representations
         are. In particular, C++ requires numeric conversions (described below) and
         the result of arithmetic operations (not covered by this document) to be
@@ -615,205 +633,239 @@
         of the adjacents of the abstract value <code class="computeroutput"><span class="identifier">R</span></code>
         which is the theoretical result.
       </p>
-<p>
+ <p>
         Because a correctly rounded representation is always one of adjacents of
         the abstract value being represented, the roundoff is guaranteed to be at
         most 1ulp.
       </p>
-<p>
+ <p>
         The following examples summarize the given definitions. Consider:
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem">
- A numeric type <code class="computeroutput"><span class="identifier">Int</span></code> representing
- integer numbers with a <span class="emphasis"><em>numeric set</em></span>: <code class="computeroutput"><span class="special">{-</span><span class="number">2</span><span class="special">,-</span><span class="number">1</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">1</span><span class="special">,</span><span class="number">2</span><span class="special">}</span></code> and <span class="emphasis"><em>range</em></span>:
- <code class="computeroutput"><span class="special">[-</span><span class="number">2</span><span class="special">,</span><span class="number">2</span><span class="special">]</span></code>
-</li>
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
- A numeric type <code class="computeroutput"><span class="identifier">Cardinal</span></code>
- representing integer numbers with a <span class="emphasis"><em>numeric set</em></span>:
- <code class="computeroutput"><span class="special">{</span><span class="number">0</span><span class="special">,</span><span class="number">1</span><span class="special">,</span><span class="number">2</span><span class="special">,</span><span class="number">3</span><span class="special">,</span><span class="number">4</span><span class="special">,</span><span class="number">5</span><span class="special">,</span><span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">}</span></code> and <span class="emphasis"><em>range</em></span>: <code class="computeroutput"><span class="special">[</span><span class="number">0</span><span class="special">,</span><span class="number">9</span><span class="special">]</span></code> (no modulo-arithmetic
- here)
+
+ A numeric type <code class="computeroutput"><span class="identifier">Int</span></code> representing
+ integer numbers with a <span class="emphasis"><em>numeric set</em></span>: <code class="computeroutput"><span class="special">{-</span><span class="number">2</span><span class="special">,-</span><span class="number">1</span><span class="special">,</span><span class="number">0</span><span class="special">,</span><span class="number">1</span><span class="special">,</span><span class="number">2</span><span class="special">}</span></code> and
+ <span class="emphasis"><em>range</em></span>: <code class="computeroutput"><span class="special">[-</span><span class="number">2</span><span class="special">,</span><span class="number">2</span><span class="special">]</span></code>
+
+ </li>
+<li class="listitem">
+
+ A numeric type <code class="computeroutput"><span class="identifier">Cardinal</span></code>
+ representing integer numbers with a <span class="emphasis"><em>numeric set</em></span>:
+ <code class="computeroutput"><span class="special">{</span><span class="number">0</span><span class="special">,</span><span class="number">1</span><span class="special">,</span><span class="number">2</span><span class="special">,</span><span class="number">3</span><span class="special">,</span><span class="number">4</span><span class="special">,</span><span class="number">5</span><span class="special">,</span><span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">}</span></code> and <span class="emphasis"><em>range</em></span>: <code class="computeroutput"><span class="special">[</span><span class="number">0</span><span class="special">,</span><span class="number">9</span><span class="special">]</span></code> (no
+ modulo-arithmetic here)
+
+ </li>
+<li class="listitem">
+
+ A numeric type <code class="computeroutput"><span class="identifier">Real</span></code> representing
+ real numbers with a <span class="emphasis"><em>numeric set</em></span>: <code class="computeroutput"><span class="special">{-</span><span class="number">2.0</span><span class="special">,-</span><span class="number">1.5</span><span class="special">,-</span><span class="number">1.0</span><span class="special">,-</span><span class="number">0.5</span><span class="special">,-</span><span class="number">0.0</span><span class="special">,+</span><span class="number">0.0</span><span class="special">,+</span><span class="number">0.5</span><span class="special">,+</span><span class="number">1.0</span><span class="special">,+</span><span class="number">1.5</span><span class="special">,+</span><span class="number">2.0</span><span class="special">}</span></code> and
+ <span class="emphasis"><em>range</em></span>: <code class="computeroutput"><span class="special">[-</span><span class="number">2.0</span><span class="special">,+</span><span class="number">2.0</span><span class="special">]</span></code>
+
+ </li>
+<li class="listitem">
+
+ A numeric type <code class="computeroutput"><span class="identifier">Whole</span></code>
+ representing real numbers with a <span class="emphasis"><em>numeric set</em></span>: <code class="computeroutput"><span class="special">{-</span><span class="number">2.0</span><span class="special">,-</span><span class="number">1.0</span><span class="special">,</span><span class="number">0.0</span><span class="special">,+</span><span class="number">1.0</span><span class="special">,+</span><span class="number">2.0</span><span class="special">}</span></code> and
+ <span class="emphasis"><em>range</em></span>: <code class="computeroutput"><span class="special">[-</span><span class="number">2.0</span><span class="special">,+</span><span class="number">2.0</span><span class="special">]</span></code>
+
         </li>
-<li class="listitem">
- A numeric type <code class="computeroutput"><span class="identifier">Real</span></code> representing
- real numbers with a <span class="emphasis"><em>numeric set</em></span>: <code class="computeroutput"><span class="special">{-</span><span class="number">2.0</span><span class="special">,-</span><span class="number">1.5</span><span class="special">,-</span><span class="number">1.0</span><span class="special">,-</span><span class="number">0.5</span><span class="special">,-</span><span class="number">0.0</span><span class="special">,+</span><span class="number">0.0</span><span class="special">,+</span><span class="number">0.5</span><span class="special">,+</span><span class="number">1.0</span><span class="special">,+</span><span class="number">1.5</span><span class="special">,+</span><span class="number">2.0</span><span class="special">}</span></code> and
- <span class="emphasis"><em>range</em></span>: <code class="computeroutput"><span class="special">[-</span><span class="number">2.0</span><span class="special">,+</span><span class="number">2.0</span><span class="special">]</span></code>
-</li>
-<li class="listitem">
- A numeric type <code class="computeroutput"><span class="identifier">Whole</span></code> representing
- real numbers with a <span class="emphasis"><em>numeric set</em></span>: <code class="computeroutput"><span class="special">{-</span><span class="number">2.0</span><span class="special">,-</span><span class="number">1.0</span><span class="special">,</span><span class="number">0.0</span><span class="special">,+</span><span class="number">1.0</span><span class="special">,+</span><span class="number">2.0</span><span class="special">}</span></code> and <span class="emphasis"><em>range</em></span>: <code class="computeroutput"><span class="special">[-</span><span class="number">2.0</span><span class="special">,+</span><span class="number">2.0</span><span class="special">]</span></code>
-</li>
 </ul></div>
-<p>
+ <p>
         First, notice that the types <code class="computeroutput"><span class="identifier">Real</span></code>
         and <code class="computeroutput"><span class="identifier">Whole</span></code> both represent
         real numbers, have the same range, but different precision.
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
- The integer number <code class="computeroutput"><span class="number">1</span></code> (an abstract
- value) can be exactly represented in any of these types.
- </li>
-<li class="listitem">
- The integer number <code class="computeroutput"><span class="special">-</span><span class="number">1</span></code>
- can be exactly represented in <code class="computeroutput"><span class="identifier">Int</span></code>,
- <code class="computeroutput"><span class="identifier">Real</span></code> and <code class="computeroutput"><span class="identifier">Whole</span></code>, but cannot be represented in
- <code class="computeroutput"><span class="identifier">Cardinal</span></code>, yielding negative
- overflow.
- </li>
-<li class="listitem">
- The real number <code class="computeroutput"><span class="number">1.5</span></code> can be
- exactly represented in <code class="computeroutput"><span class="identifier">Real</span></code>,
- and inexactly represented in the other types.
- </li>
-<li class="listitem">
- If <code class="computeroutput"><span class="number">1.5</span></code> is represented as either
- <code class="computeroutput"><span class="number">1</span></code> or <code class="computeroutput"><span class="number">2</span></code>
- in any of the types (except <code class="computeroutput"><span class="identifier">Real</span></code>),
- the representation is correctly rounded.
- </li>
-<li class="listitem">
- If <code class="computeroutput"><span class="number">0.5</span></code> is represented as <code class="computeroutput"><span class="special">+</span><span class="number">1.5</span></code> in the
- type <code class="computeroutput"><span class="identifier">Real</span></code>, it is incorrectly
- rounded.
- </li>
-<li class="listitem">
-<code class="computeroutput"><span class="special">(-</span><span class="number">2.0</span><span class="special">,-</span><span class="number">1.5</span><span class="special">)</span></code>
- are the <code class="computeroutput"><span class="identifier">Real</span></code> adjacents
- of any real number in the interval <code class="computeroutput"><span class="special">[-</span><span class="number">2.0</span><span class="special">,-</span><span class="number">1.5</span><span class="special">]</span></code>, yet there are no <code class="computeroutput"><span class="identifier">Real</span></code>
- adjacents for <code class="computeroutput"><span class="identifier">x</span> <span class="special">&lt;</span>
- <span class="special">-</span><span class="number">2.0</span></code>,
- nor for <code class="computeroutput"><span class="identifier">x</span> <span class="special">&gt;</span>
- <span class="special">+</span><span class="number">2.0</span></code>.
+
+ The integer number <code class="computeroutput"><span class="number">1</span></code> (an
+ abstract value) can be exactly represented in any of these types.
+
+ </li>
+<li class="listitem">
+
+ The integer number <code class="computeroutput"><span class="special">-</span><span class="number">1</span></code>
+ can be exactly represented in <code class="computeroutput"><span class="identifier">Int</span></code>,
+ <code class="computeroutput"><span class="identifier">Real</span></code> and <code class="computeroutput"><span class="identifier">Whole</span></code>, but cannot be represented in
+ <code class="computeroutput"><span class="identifier">Cardinal</span></code>, yielding negative
+ overflow.
+
+ </li>
+<li class="listitem">
+
+ The real number <code class="computeroutput"><span class="number">1.5</span></code> can be
+ exactly represented in <code class="computeroutput"><span class="identifier">Real</span></code>,
+ and inexactly represented in the other types.
+
+ </li>
+<li class="listitem">
+
+ If <code class="computeroutput"><span class="number">1.5</span></code> is represented as
+ either <code class="computeroutput"><span class="number">1</span></code> or <code class="computeroutput"><span class="number">2</span></code> in any of the types (except <code class="computeroutput"><span class="identifier">Real</span></code>), the representation is correctly
+ rounded.
+
+ </li>
+<li class="listitem">
+
+ If <code class="computeroutput"><span class="number">0.5</span></code> is represented as
+ <code class="computeroutput"><span class="special">+</span><span class="number">1.5</span></code>
+ in the type <code class="computeroutput"><span class="identifier">Real</span></code>, it
+ is incorrectly rounded.
+
+ </li>
+<li class="listitem">
+
+ <code class="computeroutput"><span class="special">(-</span><span class="number">2.0</span><span class="special">,-</span><span class="number">1.5</span><span class="special">)</span></code>
+ are the <code class="computeroutput"><span class="identifier">Real</span></code> adjacents
+ of any real number in the interval <code class="computeroutput"><span class="special">[-</span><span class="number">2.0</span><span class="special">,-</span><span class="number">1.5</span><span class="special">]</span></code>, yet there are no <code class="computeroutput"><span class="identifier">Real</span></code>
+ adjacents for <code class="computeroutput"><span class="identifier">x</span> <span class="special">&lt;</span>
+ <span class="special">-</span><span class="number">2.0</span></code>,
+ nor for <code class="computeroutput"><span class="identifier">x</span> <span class="special">&gt;</span>
+ <span class="special">+</span><span class="number">2.0</span></code>.
+
         </li>
 </ul></div>
-</div>
-<div class="section" title="Standard (numeric) Conversions">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.definitions.standard__numeric__conversions"></a><a class="link" href="definitions.html#boost_numericconversion.definitions.standard__numeric__conversions" title="Standard (numeric) Conversions">Standard
       (numeric) Conversions</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         The C++ language defines <span class="underline">Standard Conversions</span>
- (§4) some of which are conversions between arithmetic types.
+ (&#167;4) some of which are conversions between arithmetic types.
       </p>
-<p>
- These are <span class="underline">Integral promotions</span> (§4.5),
- <span class="underline">Integral conversions</span> (§4.7), <span class="underline">Floating point promotions</span> (§4.6), <span class="underline">Floating point conversions</span> (§4.8) and <span class="underline">Floating-integral conversions</span> (§4.9).
+ <p>
+ These are <span class="underline">Integral promotions</span> (&#167;4.5),
+ <span class="underline">Integral conversions</span> (&#167;4.7), <span class="underline">Floating point promotions</span> (&#167;4.6), <span class="underline">Floating point conversions</span> (&#167;4.8) and <span class="underline">Floating-integral conversions</span> (&#167;4.9).
       </p>
-<p>
+ <p>
         In the sequel, integral and floating point promotions are called <span class="bold"><strong>arithmetic promotions</strong></span>, and these plus integral, floating-point
         and floating-integral conversions are called <span class="bold"><strong>arithmetic
         conversions</strong></span> (i.e, promotions are conversions).
       </p>
-<p>
+ <p>
         Promotions, both Integral and Floating point, are <span class="emphasis"><em>value-preserving</em></span>,
         which means that the typed value is not changed with the conversion.
       </p>
-<p>
+ <p>
         In the sequel, consider a source typed value <code class="computeroutput"><span class="identifier">s</span></code>
         of type <code class="computeroutput"><span class="identifier">S</span></code>, the source abstract
         value <code class="computeroutput"><span class="identifier">N</span><span class="special">=</span><span class="identifier">abt</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>, a destination type <code class="computeroutput"><span class="identifier">T</span></code>;
         and whenever possible, a result typed value <code class="computeroutput"><span class="identifier">t</span></code>
         of type <code class="computeroutput"><span class="identifier">T</span></code>.
       </p>
-<p>
+ <p>
         Integer to integer conversions are always defined:
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
- If <code class="computeroutput"><span class="identifier">T</span></code> is unsigned, the abstract
- value which is effectively represented is not <code class="computeroutput"><span class="identifier">N</span></code>
- but <code class="computeroutput"><span class="identifier">M</span><span class="special">=[</span>
- <span class="identifier">N</span> <span class="special">%</span>
- <span class="special">(</span> <span class="identifier">abt</span><span class="special">(</span><span class="identifier">h</span><span class="special">)</span>
- <span class="special">+</span> <span class="number">1</span> <span class="special">)</span> <span class="special">]</span></code>, where
- <code class="computeroutput"><span class="identifier">h</span></code> is the highest unsigned
- typed value of type <code class="computeroutput"><span class="identifier">T</span></code>.
- </li>
-<li class="listitem">
- If <code class="computeroutput"><span class="identifier">T</span></code> is signed and <code class="computeroutput"><span class="identifier">N</span></code> is not directly representable, the
- result <code class="computeroutput"><span class="identifier">t</span></code> is <span class="underline">implementation-defined</span>,
- which means that the C++ implementation is required to produce a value
- <code class="computeroutput"><span class="identifier">t</span></code> even if it is totally
- unrelated to <code class="computeroutput"><span class="identifier">s</span></code>.
+
+ If <code class="computeroutput"><span class="identifier">T</span></code> is unsigned, the
+ abstract value which is effectively represented is not <code class="computeroutput"><span class="identifier">N</span></code> but <code class="computeroutput"><span class="identifier">M</span><span class="special">=[</span> <span class="identifier">N</span> <span class="special">%</span> <span class="special">(</span> <span class="identifier">abt</span><span class="special">(</span><span class="identifier">h</span><span class="special">)</span> <span class="special">+</span> <span class="number">1</span>
+ <span class="special">)</span> <span class="special">]</span></code>,
+ where <code class="computeroutput"><span class="identifier">h</span></code> is the highest
+ unsigned typed value of type <code class="computeroutput"><span class="identifier">T</span></code>.
+
+ </li>
+<li class="listitem">
+
+ If <code class="computeroutput"><span class="identifier">T</span></code> is signed and <code class="computeroutput"><span class="identifier">N</span></code> is not directly representable, the
+ result <code class="computeroutput"><span class="identifier">t</span></code> is <span class="underline">implementation-defined</span>, which means that
+ the C++ implementation is required to produce a value <code class="computeroutput"><span class="identifier">t</span></code>
+ even if it is totally unrelated to <code class="computeroutput"><span class="identifier">s</span></code>.
+
         </li>
 </ul></div>
-<p>
+ <p>
         Floating to Floating conversions are defined only if <code class="computeroutput"><span class="identifier">N</span></code>
         is representable; if it is not, the conversion has <span class="underline">undefined
         behavior</span>.
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
- If <code class="computeroutput"><span class="identifier">N</span></code> is exactly representable,
- <code class="computeroutput"><span class="identifier">t</span></code> is required to be the
- exact representation.
+
+ If <code class="computeroutput"><span class="identifier">N</span></code> is exactly representable,
+ <code class="computeroutput"><span class="identifier">t</span></code> is required to be the
+ exact representation.
+
         </li>
 <li class="listitem">
- If <code class="computeroutput"><span class="identifier">N</span></code> is inexactly representable,
- <code class="computeroutput"><span class="identifier">t</span></code> is required to be one
- of the two adjacents, with an implementation-defined choice of rounding
- direction; that is, the conversion is required to be correctly rounded.
+
+ If <code class="computeroutput"><span class="identifier">N</span></code> is inexactly representable,
+ <code class="computeroutput"><span class="identifier">t</span></code> is required to be one
+ of the two adjacents, with an implementation-defined choice of rounding
+ direction; that is, the conversion is required to be correctly rounded.
+
         </li>
 </ul></div>
-<p>
+ <p>
         Floating to Integer conversions represent not <code class="computeroutput"><span class="identifier">N</span></code>
         but <code class="computeroutput"><span class="identifier">M</span><span class="special">=</span><span class="identifier">trunc</span><span class="special">(</span><span class="identifier">N</span><span class="special">)</span></code>, were
         <code class="computeroutput"><span class="identifier">trunc</span><span class="special">()</span></code>
         is to truncate: i.e. to remove the fractional part, if any.
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
- If <code class="computeroutput"><span class="identifier">M</span></code> is not representable
- in <code class="computeroutput"><span class="identifier">T</span></code>, the conversion has
- <span class="underline">undefined behavior</span> (unless <code class="computeroutput"><span class="identifier">T</span></code> is <code class="computeroutput"><span class="keyword">bool</span></code>,
- see §4.12).
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+
+ If <code class="computeroutput"><span class="identifier">M</span></code> is not representable
+ in <code class="computeroutput"><span class="identifier">T</span></code>, the conversion
+ has <span class="underline">undefined behavior</span> (unless
+ <code class="computeroutput"><span class="identifier">T</span></code> is <code class="computeroutput"><span class="keyword">bool</span></code>,
+ see &#167;4.12).
+
         </li></ul></div>
-<p>
+ <p>
         Integer to Floating conversions are always defined.
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
- If <code class="computeroutput"><span class="identifier">N</span></code> is exactly representable,
- <code class="computeroutput"><span class="identifier">t</span></code> is required to be the
- exact representation.
+
+ If <code class="computeroutput"><span class="identifier">N</span></code> is exactly representable,
+ <code class="computeroutput"><span class="identifier">t</span></code> is required to be the
+ exact representation.
+
         </li>
 <li class="listitem">
- If <code class="computeroutput"><span class="identifier">N</span></code> is inexactly representable,
- <code class="computeroutput"><span class="identifier">t</span></code> is required to be one
- of the two adjacents, with an implementation-defined choice of rounding
- direction; that is, the conversion is required to be correctly rounded.
+
+ If <code class="computeroutput"><span class="identifier">N</span></code> is inexactly representable,
+ <code class="computeroutput"><span class="identifier">t</span></code> is required to be one
+ of the two adjacents, with an implementation-defined choice of rounding
+ direction; that is, the conversion is required to be correctly rounded.
+
         </li>
 </ul></div>
-</div>
-<div class="section" title="Subranged Conversion Direction, Subtype and Supertype">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.definitions.subranged_conversion_direction__subtype_and_supertype"></a><a class="link" href="definitions.html#boost_numericconversion.definitions.subranged_conversion_direction__subtype_and_supertype" title="Subranged Conversion Direction, Subtype and Supertype">Subranged
       Conversion Direction, Subtype and Supertype</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         Given a source type <code class="computeroutput"><span class="identifier">S</span></code> and
         a destination type <code class="computeroutput"><span class="identifier">T</span></code>, there
         is a <span class="bold"><strong>conversion direction</strong></span> denoted: <code class="computeroutput"><span class="identifier">S</span><span class="special">-&gt;</span><span class="identifier">T</span></code>.
       </p>
-<p>
+ <p>
         For any two ranges the following <span class="emphasis"><em>range relation</em></span> can
         be defined: A range <code class="computeroutput"><span class="identifier">X</span></code> can
         be <span class="emphasis"><em>entirely contained</em></span> in a range <code class="computeroutput"><span class="identifier">Y</span></code>,
         in which case it is said that <code class="computeroutput"><span class="identifier">X</span></code>
         is enclosed by <code class="computeroutput"><span class="identifier">Y</span></code>.
       </p>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
- </p>
-<p>
- <span class="bold"><strong>Formally:</strong></span> <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">S</span><span class="special">)</span></code> is enclosed by <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code> iif <code class="computeroutput"><span class="special">(</span><span class="identifier">R</span><span class="special">(</span><span class="identifier">S</span><span class="special">)</span> <span class="identifier">intersection</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">T</span><span class="special">))</span> <span class="special">==</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">S</span><span class="special">)</span></code>.
- </p>
-<p>
+ <div class="blockquote"><blockquote class="blockquote">
+ <p>
+ <span class="bold"><strong>Formally:</strong></span> <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">S</span><span class="special">)</span></code>
+ is enclosed by <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code> iif
+ <code class="computeroutput"><span class="special">(</span><span class="identifier">R</span><span class="special">(</span><span class="identifier">S</span><span class="special">)</span>
+ <span class="identifier">intersection</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">T</span><span class="special">))</span>
+ <span class="special">==</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">S</span><span class="special">)</span></code>.
         </p>
-</blockquote></div>
-<p>
+ </blockquote></div>
+ <p>
         If the source type range, <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">S</span><span class="special">)</span></code>,
         is not enclosed in the target type range, <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code>;
         that is, if <code class="computeroutput"><span class="special">(</span><span class="identifier">R</span><span class="special">(</span><span class="identifier">S</span><span class="special">)</span>
@@ -829,59 +881,71 @@
         because they are out of range. Notice that for <code class="computeroutput"><span class="identifier">S</span><span class="special">-&gt;</span><span class="identifier">T</span></code>,
         the adjective subranged applies to <code class="computeroutput"><span class="identifier">T</span></code>.
       </p>
-<p>
+ <p>
         Examples:
       </p>
-<p>
+ <p>
         Given the following numeric types all representing real numbers:
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
-<code class="computeroutput"><span class="identifier">X</span></code> with numeric set <code class="computeroutput"><span class="special">{-</span><span class="number">2.0</span><span class="special">,-</span><span class="number">1.0</span><span class="special">,</span><span class="number">0.0</span><span class="special">,+</span><span class="number">1.0</span><span class="special">,+</span><span class="number">2.0</span><span class="special">}</span></code> and
- range <code class="computeroutput"><span class="special">[-</span><span class="number">2.0</span><span class="special">,+</span><span class="number">2.0</span><span class="special">]</span></code>
-</li>
+
+ <code class="computeroutput"><span class="identifier">X</span></code> with numeric set <code class="computeroutput"><span class="special">{-</span><span class="number">2.0</span><span class="special">,-</span><span class="number">1.0</span><span class="special">,</span><span class="number">0.0</span><span class="special">,+</span><span class="number">1.0</span><span class="special">,+</span><span class="number">2.0</span><span class="special">}</span></code> and
+ range <code class="computeroutput"><span class="special">[-</span><span class="number">2.0</span><span class="special">,+</span><span class="number">2.0</span><span class="special">]</span></code>
+
+ </li>
 <li class="listitem">
-<code class="computeroutput"><span class="identifier">Y</span></code> with numeric set <code class="computeroutput"><span class="special">{-</span><span class="number">2.0</span><span class="special">,-</span><span class="number">1.5</span><span class="special">,-</span><span class="number">1.0</span><span class="special">,-</span><span class="number">0.5</span><span class="special">,</span><span class="number">0.0</span><span class="special">,+</span><span class="number">0.5</span><span class="special">,+</span><span class="number">1.0</span><span class="special">,+</span><span class="number">1.5</span><span class="special">,+</span><span class="number">2.0</span><span class="special">}</span></code> and range <code class="computeroutput"><span class="special">[-</span><span class="number">2.0</span><span class="special">,+</span><span class="number">2.0</span><span class="special">]</span></code>
-</li>
+
+ <code class="computeroutput"><span class="identifier">Y</span></code> with numeric set <code class="computeroutput"><span class="special">{-</span><span class="number">2.0</span><span class="special">,-</span><span class="number">1.5</span><span class="special">,-</span><span class="number">1.0</span><span class="special">,-</span><span class="number">0.5</span><span class="special">,</span><span class="number">0.0</span><span class="special">,+</span><span class="number">0.5</span><span class="special">,+</span><span class="number">1.0</span><span class="special">,+</span><span class="number">1.5</span><span class="special">,+</span><span class="number">2.0</span><span class="special">}</span></code> and range <code class="computeroutput"><span class="special">[-</span><span class="number">2.0</span><span class="special">,+</span><span class="number">2.0</span><span class="special">]</span></code>
+
+ </li>
 <li class="listitem">
-<code class="computeroutput"><span class="identifier">Z</span></code> with numeric set <code class="computeroutput"><span class="special">{-</span><span class="number">1.0</span><span class="special">,</span><span class="number">0.0</span><span class="special">,+</span><span class="number">1.0</span><span class="special">}</span></code> and range <code class="computeroutput"><span class="special">[-</span><span class="number">1.0</span><span class="special">,+</span><span class="number">1.0</span><span class="special">]</span></code>
-</li>
+
+ <code class="computeroutput"><span class="identifier">Z</span></code> with numeric set <code class="computeroutput"><span class="special">{-</span><span class="number">1.0</span><span class="special">,</span><span class="number">0.0</span><span class="special">,+</span><span class="number">1.0</span><span class="special">}</span></code> and range <code class="computeroutput"><span class="special">[-</span><span class="number">1.0</span><span class="special">,+</span><span class="number">1.0</span><span class="special">]</span></code>
+
+ </li>
 </ul></div>
-<p>
+ <p>
         For:
       </p>
-<div class="variablelist">
+ <div class="variablelist">
 <p class="title"><b></b></p>
 <dl>
 <dt><span class="term">(a) X-&gt;Y:</span></dt>
-<dd><p>
- <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span> <span class="special">&amp;</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">Y</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>,
- then <code class="computeroutput"><span class="identifier">X</span><span class="special">-&gt;</span><span class="identifier">Y</span></code> is not subranged. Thus, all values
- of type <code class="computeroutput"><span class="identifier">X</span></code> are representable
- in the type <code class="computeroutput"><span class="identifier">Y</span></code>.
- </p></dd>
+<dd>
+ <p>
+ <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span> <span class="special">&amp;</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">Y</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>,
+ then <code class="computeroutput"><span class="identifier">X</span><span class="special">-&gt;</span><span class="identifier">Y</span></code> is not subranged. Thus, all values
+ of type <code class="computeroutput"><span class="identifier">X</span></code> are representable
+ in the type <code class="computeroutput"><span class="identifier">Y</span></code>.
+ </p>
+ </dd>
 <dt><span class="term">(b) Y-&gt;X:</span></dt>
-<dd><p>
- <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">Y</span><span class="special">)</span> <span class="special">&amp;</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">Y</span><span class="special">)</span></code>,
- then <code class="computeroutput"><span class="identifier">Y</span><span class="special">-&gt;</span><span class="identifier">X</span></code> is not subranged. Thus, all values
- of type <code class="computeroutput"><span class="identifier">Y</span></code> are representable
- in the type <code class="computeroutput"><span class="identifier">X</span></code>, but in
- this case, some values are <span class="emphasis"><em>inexactly</em></span> representable
- (all the halves). (note: it is to permit this case that a range is an
- interval of abstract values and not an interval of typed values)
- </p></dd>
+<dd>
+ <p>
+ <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">Y</span><span class="special">)</span> <span class="special">&amp;</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">Y</span><span class="special">)</span></code>,
+ then <code class="computeroutput"><span class="identifier">Y</span><span class="special">-&gt;</span><span class="identifier">X</span></code> is not subranged. Thus, all values
+ of type <code class="computeroutput"><span class="identifier">Y</span></code> are representable
+ in the type <code class="computeroutput"><span class="identifier">X</span></code>, but
+ in this case, some values are <span class="emphasis"><em>inexactly</em></span> representable
+ (all the halves). (note: it is to permit this case that a range is
+ an interval of abstract values and not an interval of typed values)
+ </p>
+ </dd>
 <dt><span class="term">(b) X-&gt;Z:</span></dt>
-<dd><p>
- <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span> <span class="special">&amp;</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">Z</span><span class="special">)</span> <span class="special">!=</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>,
- then <code class="computeroutput"><span class="identifier">X</span><span class="special">-&gt;</span><span class="identifier">Z</span></code> is subranged. Thus, some values of
- type <code class="computeroutput"><span class="identifier">X</span></code> are not representable
- in the type <code class="computeroutput"><span class="identifier">Z</span></code>, they fall
- out of range <code class="computeroutput"><span class="special">(-</span><span class="number">2.0</span>
- <span class="keyword">and</span> <span class="special">+</span><span class="number">2.0</span><span class="special">)</span></code>.
- </p></dd>
+<dd>
+ <p>
+ <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span> <span class="special">&amp;</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">Z</span><span class="special">)</span> <span class="special">!=</span> <span class="identifier">R</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>,
+ then <code class="computeroutput"><span class="identifier">X</span><span class="special">-&gt;</span><span class="identifier">Z</span></code> is subranged. Thus, some values
+ of type <code class="computeroutput"><span class="identifier">X</span></code> are not representable
+ in the type <code class="computeroutput"><span class="identifier">Z</span></code>, they
+ fall out of range <code class="computeroutput"><span class="special">(-</span><span class="number">2.0</span>
+ <span class="keyword">and</span> <span class="special">+</span><span class="number">2.0</span><span class="special">)</span></code>.
+ </p>
+ </dd>
 </dl>
 </div>
-<p>
+ <p>
         It is possible that <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">S</span><span class="special">)</span></code> is not
         enclosed by <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code>, while
         neither is <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code> enclosed
@@ -892,7 +956,7 @@
         of signed/unsigned types are involved and indicates that in both directions
         there are values which can fall out of range.
       </p>
-<p>
+ <p>
         Given the range relation (subranged or not) of a conversion direction <code class="computeroutput"><span class="identifier">S</span><span class="special">-&gt;</span><span class="identifier">T</span></code>, it is possible to classify <code class="computeroutput"><span class="identifier">S</span></code> and <code class="computeroutput"><span class="identifier">T</span></code>
         as <span class="bold"><strong>supertype</strong></span> and <span class="bold"><strong>subtype</strong></span>:
         If the conversion is subranged, which means that <code class="computeroutput"><span class="identifier">T</span></code>
@@ -900,71 +964,70 @@
         <code class="computeroutput"><span class="identifier">S</span></code> is the supertype and <code class="computeroutput"><span class="identifier">T</span></code> the subtype; otherwise, <code class="computeroutput"><span class="identifier">T</span></code> is the supertype and <code class="computeroutput"><span class="identifier">S</span></code>
         the subtype.
       </p>
-<p>
+ <p>
         For example:
       </p>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
- </p>
-<p>
- <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="keyword">float</span><span class="special">)=[-</span><span class="identifier">FLT_MAX</span><span class="special">,</span><span class="identifier">FLT_MAX</span><span class="special">]</span></code>
- and <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="keyword">double</span><span class="special">)=[-</span><span class="identifier">DBL_MAX</span><span class="special">,</span><span class="identifier">DBL_MAX</span><span class="special">]</span></code>
- </p>
-<p>
+ <div class="blockquote"><blockquote class="blockquote">
+ <p>
+ <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="keyword">float</span><span class="special">)=[-</span><span class="identifier">FLT_MAX</span><span class="special">,</span><span class="identifier">FLT_MAX</span><span class="special">]</span></code>
+ and <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="keyword">double</span><span class="special">)=[-</span><span class="identifier">DBL_MAX</span><span class="special">,</span><span class="identifier">DBL_MAX</span><span class="special">]</span></code>
         </p>
-</blockquote></div>
-<p>
+ </blockquote></div>
+ <p>
         If <code class="computeroutput"><span class="identifier">FLT_MAX</span> <span class="special">&lt;</span>
         <span class="identifier">DBL_MAX</span></code>:
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
-<code class="computeroutput"><span class="keyword">double</span><span class="special">-&gt;</span><span class="keyword">float</span></code> is subranged and <code class="computeroutput"><span class="identifier">supertype</span><span class="special">=</span><span class="keyword">double</span></code>,
- <code class="computeroutput"><span class="identifier">subtype</span><span class="special">=</span><span class="keyword">float</span></code>.
+
+ <code class="computeroutput"><span class="keyword">double</span><span class="special">-&gt;</span><span class="keyword">float</span></code> is subranged and <code class="computeroutput"><span class="identifier">supertype</span><span class="special">=</span><span class="keyword">double</span></code>,
+ <code class="computeroutput"><span class="identifier">subtype</span><span class="special">=</span><span class="keyword">float</span></code>.
+
         </li>
 <li class="listitem">
-<code class="computeroutput"><span class="keyword">float</span><span class="special">-&gt;</span><span class="keyword">double</span></code> is not subranged and <code class="computeroutput"><span class="identifier">supertype</span><span class="special">=</span><span class="keyword">double</span></code>, <code class="computeroutput"><span class="identifier">subtype</span><span class="special">=</span><span class="keyword">float</span></code>.
+
+ <code class="computeroutput"><span class="keyword">float</span><span class="special">-&gt;</span><span class="keyword">double</span></code> is not subranged and <code class="computeroutput"><span class="identifier">supertype</span><span class="special">=</span><span class="keyword">double</span></code>, <code class="computeroutput"><span class="identifier">subtype</span><span class="special">=</span><span class="keyword">float</span></code>.
+
         </li>
 </ul></div>
-<p>
+ <p>
         Notice that while <code class="computeroutput"><span class="keyword">double</span><span class="special">-&gt;</span><span class="keyword">float</span></code> is subranged, <code class="computeroutput"><span class="keyword">float</span><span class="special">-&gt;</span><span class="keyword">double</span></code>
         is not, which yields the same supertype,subtype for both directions.
       </p>
-<p>
+ <p>
         Now consider:
       </p>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
- </p>
-<p>
- <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="keyword">int</span><span class="special">)=[</span><span class="identifier">INT_MIN</span><span class="special">,</span><span class="identifier">INT_MAX</span><span class="special">]</span></code>
- and <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">)=[</span><span class="number">0</span><span class="special">,</span><span class="identifier">UINT_MAX</span><span class="special">]</span></code>
- </p>
-<p>
+ <div class="blockquote"><blockquote class="blockquote">
+ <p>
+ <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="keyword">int</span><span class="special">)=[</span><span class="identifier">INT_MIN</span><span class="special">,</span><span class="identifier">INT_MAX</span><span class="special">]</span></code> and <code class="computeroutput"><span class="identifier">R</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">)=[</span><span class="number">0</span><span class="special">,</span><span class="identifier">UINT_MAX</span><span class="special">]</span></code>
         </p>
-</blockquote></div>
-<p>
+ </blockquote></div>
+ <p>
         A C++ implementation is required to have <code class="computeroutput"><span class="identifier">UINT_MAX</span>
         <span class="special">&gt;</span> <span class="identifier">INT_MAX</span></code>
- (§3.9/3), so:
+ (&#167;3.9/3), so:
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
- 'int-&gt;unsigned' is subranged (negative values fall out of range) and
- <code class="computeroutput"><span class="identifier">supertype</span><span class="special">=</span><span class="keyword">int</span></code>, <code class="computeroutput"><span class="identifier">subtype</span><span class="special">=</span><span class="keyword">unsigned</span></code>.
+
+ 'int-&gt;unsigned' is subranged (negative values fall out of range) and
+ <code class="computeroutput"><span class="identifier">supertype</span><span class="special">=</span><span class="keyword">int</span></code>, <code class="computeroutput"><span class="identifier">subtype</span><span class="special">=</span><span class="keyword">unsigned</span></code>.
+
         </li>
 <li class="listitem">
- 'unsigned-&gt;int' is <span class="emphasis"><em>also</em></span> subranged (high positive
- values fall out of range) and <code class="computeroutput"><span class="identifier">supertype</span><span class="special">=</span><span class="keyword">unsigned</span></code>,
- <code class="computeroutput"><span class="identifier">subtype</span><span class="special">=</span><span class="keyword">int</span></code>.
+
+ 'unsigned-&gt;int' is <span class="emphasis"><em>also</em></span> subranged (high positive
+ values fall out of range) and <code class="computeroutput"><span class="identifier">supertype</span><span class="special">=</span><span class="keyword">unsigned</span></code>,
+ <code class="computeroutput"><span class="identifier">subtype</span><span class="special">=</span><span class="keyword">int</span></code>.
+
         </li>
 </ul></div>
-<p>
+ <p>
         In this case, the conversion is subranged in both directions and the supertype,subtype
         pairs are not invariant (under inversion of direction). This indicates that
         none of the types can represent all the values of the other.
       </p>
-<p>
+ <p>
         When the supertype is the same for both <code class="computeroutput"><span class="identifier">S</span><span class="special">-&gt;</span><span class="identifier">T</span></code>
         and <code class="computeroutput"><span class="identifier">T</span><span class="special">-&gt;</span><span class="identifier">S</span></code>, it is effectively indicating a type
         which can represent all the values of the subtype. Consequently, if a conversion
@@ -976,19 +1039,15 @@
         correctly rounded (even if inexact). For example, all integer to floating
         conversions are correctly rounded value preserving.
       </p>
-</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 © 2004 -2007 Fernando Luis Cacciola Carballal<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../index.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="converter___function_object.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
 </body>
 </html>

Modified: branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/improved_numeric_cast__.html
==============================================================================
--- branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/improved_numeric_cast__.html (original)
+++ branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/improved_numeric_cast__.html 2011-11-21 11:46:56 EST (Mon, 21 Nov 2011)
@@ -1,64 +1,65 @@
 <html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Improved numeric_cast&lt;&gt;</title>
 <link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="up" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="prev" href="numeric_converter_policy_classes.html" title="Numeric Converter Policy Classes">
-<link rel="next" href="../numeric_conversion/history_and_acknowledgments.html" title="History and Acknowledgments">
+<meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
 </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">Home</td>
-<td align="center">Libraries</td>
+<td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="numeric_converter_policy_classes.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../numeric_conversion/history_and_acknowledgments.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
-<div class="section" title="Improved numeric_cast&lt;&gt;">
+<div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_numericconversion.improved_numeric_cast__"></a><a class="link" href="improved_numeric_cast__.html" title="Improved numeric_cast&lt;&gt;">Improved
     numeric_cast&lt;&gt;</a>
 </h2></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section">Introduction</span></dt>
-<dt><span class="section">numeric_cast</span></dt>
-<dt><span class="section">Examples</span></dt>
-</dl></div>
-<div class="section" title="Introduction">
+
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.improved_numeric_cast__.introduction"></a><a class="link" href="improved_numeric_cast__.html#boost_numericconversion.improved_numeric_cast__.introduction" title="Introduction">Introduction</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         The lack of preservation of range makes conversions between numeric types
         error prone. This is true for both implicit conversions and explicit conversions
         (through <code class="computeroutput"><span class="keyword">static_cast</span></code>). <a class="link" href="improved_numeric_cast__.html#boost_numericconversion.improved_numeric_cast__.numeric_cast" title="numeric_cast"><code class="computeroutput"><span class="identifier">numeric_cast</span></code></a> detects loss of range
         when a numeric type is converted, and throws an exception if the range cannot
         be preserved.
       </p>
-<p>
+ <p>
         There are several situations where conversions are unsafe:
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
- Conversions from an integral type with a wider range than the target integral
- type.
+
+ Conversions from an integral type with a wider range than the target
+ integral type.
+
         </li>
 <li class="listitem">
- Conversions from unsigned to signed (and vice versa) integral types.
+
+ Conversions from unsigned to signed (and vice versa) integral types.
+
         </li>
 <li class="listitem">
- Conversions from floating point types to integral types.
+
+ Conversions from floating point types to integral types.
+
         </li>
 </ul></div>
-<p>
+ <p>
         The C++ Standard does not specify the behavior when a numeric type is assigned
         a value that cannot be represented by the type, except for unsigned integral
         types [3.9.1.4], which must obey the laws of arithmetic modulo 2n (this implies
@@ -68,47 +69,84 @@
         to unsigned) makes any code that may produce positive or negative overflows
         exposed to portability issues.
       </p>
-<p>
- <code class="computeroutput"><span class="identifier">numeric_cast</span></code> adheres to the
- rules for implicit conversions mandated by the C++ Standard, such as truncating
- floating point types when converting to integral types. The implementation
- must guarantee that for a conversion to a type that can hold all possible
- values of the source type, there will be no runtime overhead.
+ <p>
+ By default <code class="computeroutput"><span class="identifier">numeric_cast</span></code> adheres
+ to the rules for implicit conversions mandated by the C++ Standard, such
+ as truncating floating point types when converting to integral types. The
+ implementation must guarantee that for a conversion to a type that can hold
+ all possible values of the source type, there will be no runtime overhead.
       </p>
-</div>
-<div class="section" title="numeric_cast">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.improved_numeric_cast__.numeric_cast"></a><a class="link" href="improved_numeric_cast__.html#boost_numericconversion.improved_numeric_cast__.numeric_cast" title="numeric_cast">numeric_cast</a>
 </h3></div></div></div>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Target</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Source</span><span class="special">&gt;</span> <span class="keyword">inline</span>
-<span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">converter</span><span class="special">&lt;</span><span class="identifier">Target</span><span class="special">,</span><span class="identifier">Source</span><span class="special">&gt;::</span><span class="identifier">result_type</span>
-<span class="identifier">numeric_cast</span> <span class="special">(</span> <span class="identifier">Source</span> <span class="identifier">arg</span> <span class="special">)</span>
+
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Target</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Source</span><span class="special">&gt;</span> <span class="keyword">inline</span>
+<span class="identifier">Target</span> <span class="identifier">numeric_cast</span><span class="special">(</span> <span class="identifier">Source</span> <span class="identifier">arg</span> <span class="special">)</span>
 <span class="special">{</span>
- <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">converter</span><span class="special">&lt;</span><span class="identifier">Target</span><span class="special">,</span><span class="identifier">Source</span><span class="special">&gt;::</span><span class="identifier">convert</span><span class="special">(</span><span class="identifier">arg</span><span class="special">);</span>
+ <span class="keyword">typedef</span> <span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="identifier">Target</span><span class="special">,</span> <span class="identifier">Source</span><span class="special">&gt;</span> <span class="identifier">conv_traits</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">numeric_cast_traits</span><span class="special">&lt;</span><span class="identifier">Target</span><span class="special">,</span> <span class="identifier">Source</span><span class="special">&gt;</span> <span class="identifier">cast_traits</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">converter</span>
+ <span class="special">&lt;</span>
+ <span class="identifier">Target</span><span class="special">,</span>
+ <span class="identifier">Source</span><span class="special">,</span>
+ <span class="identifier">conv_traits</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">cast_traits</span><span class="special">::</span><span class="identifier">overflow_policy</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">cast_traits</span><span class="special">::</span><span class="identifier">rounding_policy</span><span class="special">,</span>
+ <span class="identifier">raw_converter</span><span class="special">&lt;</span><span class="identifier">conv_traits</span><span class="special">&gt;,</span>
+ <span class="keyword">typename</span> <span class="identifier">cast_traits</span><span class="special">::</span><span class="identifier">range_checking_policy</span>
+ <span class="special">&gt;</span> <span class="identifier">converter</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">converter</span><span class="special">::</span><span class="identifier">convert</span><span class="special">(</span><span class="identifier">arg</span><span class="special">);</span>
 <span class="special">}</span>
 </pre>
-<p>
+ <p>
         <code class="computeroutput"><span class="identifier">numeric_cast</span></code> returns the
         result of converting a value of type Source to a value of type Target. If
- out-of-range is detected, an exception is thrown (see <a class="link" href="numeric_converter_policy_classes.html#numeric_conversion_bad_numeric_cast">bad_numeric_cast</a>,
+ out-of-range is detected, an overflow policy is executed whose default behavior
+ is to throw an an exception (see <a class="link" href="numeric_converter_policy_classes.html#numeric_conversion_bad_numeric_cast">bad_numeric_cast</a>,
         <a class="link" href="numeric_converter_policy_classes.html#numeric_conversion_negative_overflow">negative_overflow</a>
         and <a class="link" href="numeric_converter_policy_classes.html#numeric_conversion_possitive_overflow">positive_overflow</a>
         ).
       </p>
-</div>
-<div class="section" title="Examples">
+ </div>
+ <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_numericconversion.improved_numeric_cast__.numeric_cast_traits"></a><a class="link" href="improved_numeric_cast__.html#boost_numericconversion.improved_numeric_cast__.numeric_cast_traits" title="numeric_cast_traits">numeric_cast_traits</a>
+</h3></div></div></div>
+
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Target</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Source</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">EnableIf</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">numeric_cast_traits</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">def_overflow_handler</span> <span class="identifier">overflow_policy</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">UseInternalRangeChecker</span> <span class="identifier">range_checking_policy</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">Trunc</span><span class="special">&lt;</span><span class="identifier">Source</span><span class="special">&gt;</span> <span class="identifier">rounding_policy</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+ <p>
+ The behavior of <code class="computeroutput"><span class="identifier">numeric_cast</span></code>
+ may be tailored for custom numeric types through the specialization of <code class="computeroutput"><span class="identifier">numeric_cast_traits</span></code>. (see <a class="link" href="type_requirements_and_user_defined_types_support.html" title="Type Requirements and User-defined-types support">User
+ Defined Types</a> for details. )
+ </p>
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.improved_numeric_cast__.examples"></a><a class="link" href="improved_numeric_cast__.html#boost_numericconversion.improved_numeric_cast__.examples" title="Examples">Examples</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         The following example performs some typical conversions between numeric types:
       </p>
-<div class="orderedlist"><ol class="orderedlist" type="1">
+ <div class="orderedlist"><ol class="orderedlist" type="1">
 <li class="listitem">
- include &lt;boost/numeric/conversion/cast.hpp&gt;
+
+ include &lt;boost/numeric/conversion/cast.hpp&gt;
+
         </li>
 <li class="listitem">
- include &lt;iostream&gt;
+
+ include &lt;iostream&gt;
+
         </li>
 </ol></div>
 <pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
@@ -122,8 +160,8 @@
     <span class="keyword">try</span>
     <span class="special">{</span>
         <span class="keyword">int</span> <span class="identifier">i</span><span class="special">=</span><span class="number">42</span><span class="special">;</span>
- <span class="keyword">short</span> <span class="identifier">s</span><span class="special">=</span><span class="identifier">numeric_cast</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">&gt;(</span><span class="identifier">i</span><span class="special">);</span> <span class="comment">// This conversion succeeds (is in range)
-</span> <span class="special">}</span>
+ <span class="keyword">short</span> <span class="identifier">s</span><span class="special">=</span><span class="identifier">numeric_cast</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">&gt;(</span><span class="identifier">i</span><span class="special">);</span> <span class="comment">// This conversion succeeds (is in range)</span>
+ <span class="special">}</span>
     <span class="keyword">catch</span><span class="special">(</span><span class="identifier">negative_overflow</span><span class="special">&amp;</span> <span class="identifier">e</span><span class="special">)</span> <span class="special">{</span>
         <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">e</span><span class="special">.</span><span class="identifier">what</span><span class="special">();</span>
     <span class="special">}</span>
@@ -135,23 +173,23 @@
     <span class="special">{</span>
         <span class="keyword">float</span> <span class="identifier">f</span><span class="special">=-</span><span class="number">42.1234</span><span class="special">;</span>
 
- <span class="comment">// This will cause a boost::numeric::negative_overflow exception to be thrown
-</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">=</span><span class="identifier">numeric_cast</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">f</span><span class="special">);</span>
+ <span class="comment">// This will cause a boost::numeric::negative_overflow exception to be thrown</span>
+ <span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">=</span><span class="identifier">numeric_cast</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">f</span><span class="special">);</span>
     <span class="special">}</span>
     <span class="keyword">catch</span><span class="special">(</span><span class="identifier">bad_numeric_cast</span><span class="special">&amp;</span> <span class="identifier">e</span><span class="special">)</span> <span class="special">{</span>
         <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">e</span><span class="special">.</span><span class="identifier">what</span><span class="special">();</span>
     <span class="special">}</span>
 
- <span class="keyword">double</span> <span class="identifier">d</span><span class="special">=</span> <span class="identifier">f</span> <span class="special">+</span> <span class="identifier">numeric_cast</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="number">123</span><span class="special">);</span> <span class="comment">// int -&gt; double
-</span>
+ <span class="keyword">double</span> <span class="identifier">d</span><span class="special">=</span> <span class="identifier">f</span> <span class="special">+</span> <span class="identifier">numeric_cast</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="number">123</span><span class="special">);</span> <span class="comment">// int -&gt; double</span>
+
     <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="identifier">l</span><span class="special">=</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">long</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">();</span>
 
     <span class="keyword">try</span>
     <span class="special">{</span>
- <span class="comment">// This will cause a boost::numeric::positive_overflow exception to be thrown
-</span> <span class="comment">// NOTE: *operations* on unsigned integral types cannot cause overflow
-</span> <span class="comment">// but *conversions* to a signed type ARE range checked by numeric_cast.
-</span>
+ <span class="comment">// This will cause a boost::numeric::positive_overflow exception to be thrown</span>
+ <span class="comment">// NOTE: *operations* on unsigned integral types cannot cause overflow</span>
+ <span class="comment">// but *conversions* to a signed type ARE range checked by numeric_cast.</span>
+
         <span class="keyword">unsigned</span> <span class="keyword">char</span> <span class="identifier">c</span><span class="special">=</span><span class="identifier">numeric_cast</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">char</span><span class="special">&gt;(</span><span class="identifier">l</span><span class="special">);</span>
     <span class="special">}</span>
     <span class="keyword">catch</span><span class="special">(</span><span class="identifier">positive_overflow</span><span class="special">&amp;</span> <span class="identifier">e</span><span class="special">)</span> <span class="special">{</span>
@@ -162,19 +200,15 @@
     <span class="keyword">return</span> <span class="number">0</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 © 2004 -2007 Fernando Luis Cacciola Carballal<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="numeric_converter_policy_classes.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../numeric_conversion/history_and_acknowledgments.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
 </body>
 </html>

Modified: branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/numeric_converter_policy_classes.html
==============================================================================
--- branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/numeric_converter_policy_classes.html (original)
+++ branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/numeric_converter_policy_classes.html 2011-11-21 11:46:56 EST (Mon, 21 Nov 2011)
@@ -1,49 +1,37 @@
 <html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Numeric Converter Policy Classes</title>
 <link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="up" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="prev" href="conversion_traits___traits_class.html" title="conversion_traits&lt;&gt; traits class">
-<link rel="next" href="improved_numeric_cast__.html" title="Improved numeric_cast&lt;&gt;">
+<meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
 </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">Home</td>
-<td align="center">Libraries</td>
+<td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="conversion_traits___traits_class.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="improved_numeric_cast__.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
-<div class="section" title="Numeric Converter Policy Classes">
+<div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_numericconversion.numeric_converter_policy_classes"></a><a class="link" href="numeric_converter_policy_classes.html" title="Numeric Converter Policy Classes">Numeric
     Converter Policy Classes</a>
 </h2></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section"><a href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.enum_range_check_result">enum
- range_check_result</a></span></dt>
-<dt><span class="section"><a href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_overflowhandler">Policy
- OverflowHandler</a></span></dt>
-<dt><span class="section"><a href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_float2introunder">Policy
- Float2IntRounder</a></span></dt>
-<dt><span class="section"><a href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_rawconverter">Policy
- RawConverter</a></span></dt>
-<dt><span class="section"><a href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_userrangechecker">Policy
- UserRangeChecker</a></span></dt>
-</dl></div>
-<div class="section" title="enum range_check_result">
+
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.numeric_converter_policy_classes.enum_range_check_result"></a><a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.enum_range_check_result" title="enum range_check_result">enum
       range_check_result</a>
 </h3></div></div></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">numeric</span> <span class="special">{</span>
 
     <span class="keyword">enum</span> <span class="identifier">range_check_result</span>
@@ -55,42 +43,43 @@
 
 <span class="special">}</span> <span class="special">}</span>
 </pre>
-<p>
+ <p>
         Defines the values returned by <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">converter</span><span class="special">&lt;&gt;::</span><span class="identifier">out_of_range</span><span class="special">()</span></code>
       </p>
-</div>
-<div class="section" title="Policy OverflowHandler">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.numeric_converter_policy_classes.policy_overflowhandler"></a><a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_overflowhandler" title="Policy OverflowHandler">Policy
       OverflowHandler</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         This <span class="emphasis"><em>stateless</em></span> non-template policy class must be a
         <span class="emphasis"><em>function object</em></span> and is called to administrate the result
         of the range checking. It can throw an exception if overflow has been detected
         by the range checking as indicated by its argument. If it throws, is is recommended
         that it be <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_cast</span></code> or derived.
       </p>
-<p>
+ <p>
         It must have the following interface (it does not has to be a template class):
       </p>
 <pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">YourOverflowHandlerPolicy</span>
 <span class="special">{</span>
- <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()</span> <span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">range_check_result</span> <span class="special">)</span> <span class="special">;</span> <span class="comment">// throw bad_cast or derived
-</span><span class="special">}</span> <span class="special">;</span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()</span> <span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">range_check_result</span> <span class="special">)</span> <span class="special">;</span> <span class="comment">// throw bad_cast or derived</span>
+<span class="special">}</span> <span class="special">;</span>
 </pre>
-<p>
+ <p>
         It is called with the result of the converter's <code class="computeroutput"><span class="identifier">out_of_range</span><span class="special">()</span></code> inside <code class="computeroutput"><span class="identifier">validate_range</span><span class="special">()</span></code>.
       </p>
-<p>
+ <p>
         These are the two overflow handler classes provided by the library:
       </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">numeric</span> <span class="special">{</span>
 
     <span class="keyword">struct</span> <span class="identifier">def_overflow_handler</span>
     <span class="special">{</span>
- <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()</span> <span class="special">(</span> <span class="identifier">range_check_result</span> <span class="identifier">r</span> <span class="special">)</span> <span class="comment">// throw bad_numeric_conversion derived
-</span> <span class="special">{</span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()</span> <span class="special">(</span> <span class="identifier">range_check_result</span> <span class="identifier">r</span> <span class="special">)</span> <span class="comment">// throw bad_numeric_conversion derived</span>
+ <span class="special">{</span>
             <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">r</span> <span class="special">==</span> <span class="identifier">cNegOverflow</span> <span class="special">)</span>
                 <span class="keyword">throw</span> <span class="identifier">negative_overflow</span><span class="special">()</span> <span class="special">;</span>
             <span class="keyword">else</span> <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">r</span> <span class="special">==</span> <span class="identifier">cPosOverflow</span> <span class="special">)</span>
@@ -100,46 +89,46 @@
 
     <span class="keyword">struct</span> <span class="identifier">silent_overflow_handler</span>
     <span class="special">{</span>
- <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()</span> <span class="special">(</span> <span class="identifier">range_check_result</span> <span class="special">)</span> <span class="comment">// no-throw
-</span> <span class="special">{}</span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()</span> <span class="special">(</span> <span class="identifier">range_check_result</span> <span class="special">)</span> <span class="comment">// no-throw</span>
+ <span class="special">{}</span>
     <span class="special">}</span> <span class="special">;</span>
 
 <span class="special">}</span> <span class="special">}</span>
 </pre>
-<p>
+ <p>
         And these are the Exception Classes thrown by the default overflow handler
         <a class="link" href="numeric_converter_policy_classes.html#numeric_conversion_policy_overflow_handler_important_note">(see
         IMPORTANT note)</a>
       </p>
-<a name="numeric_conversion_bad_numeric_cast"></a><a name="numeric_conversion_negative_overflow"></a><a name="numeric_conversion_possitive_overflow"></a><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">numeric</span> <span class="special">{</span>
+<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">numeric</span> <span class="special">{</span>
 
-
+ <a name="numeric_conversion_bad_numeric_cast"></a>
     <span class="keyword">class</span> <span class="identifier">bad_numeric_cast</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_cast</span>
     <span class="special">{</span>
         <span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">what</span><span class="special">()</span> <span class="keyword">const</span> <span class="comment">// throw()
-</span> <span class="special">{</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">what</span><span class="special">()</span> <span class="keyword">const</span> <span class="comment">// throw()</span>
+ <span class="special">{</span>
             <span class="keyword">return</span> <span class="string">"bad numeric conversion: overflow"</span><span class="special">;</span>
         <span class="special">}</span>
 
     <span class="special">};</span>
 
-
+ <a name="numeric_conversion_negative_overflow"></a>
     <span class="keyword">class</span> <span class="identifier">negative_overflow</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">bad_numeric_cast</span>
     <span class="special">{</span>
         <span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">what</span><span class="special">()</span> <span class="keyword">const</span> <span class="comment">// throw()
-</span> <span class="special">{</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">what</span><span class="special">()</span> <span class="keyword">const</span> <span class="comment">// throw()</span>
+ <span class="special">{</span>
             <span class="keyword">return</span> <span class="string">"bad numeric conversion: negative overflow"</span><span class="special">;</span>
         <span class="special">}</span>
     <span class="special">};</span>
 
-
+ <a name="numeric_conversion_possitive_overflow"></a>
     <span class="keyword">class</span> <span class="identifier">positive_overflow</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">bad_numeric_cast</span>
     <span class="special">{</span>
         <span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">what</span><span class="special">()</span> <span class="keyword">const</span> <span class="comment">// throw()
-</span> <span class="special">{</span>
+ <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">what</span><span class="special">()</span> <span class="keyword">const</span> <span class="comment">// throw()</span>
+ <span class="special">{</span>
             <span class="keyword">return</span> <span class="string">"bad numeric conversion: positive overflow"</span><span class="special">;</span>
         <span class="special">}</span>
     <span class="special">};</span>
@@ -147,14 +136,14 @@
 
 <span class="special">}</span> <span class="special">}</span>
 </pre>
-<a name="numeric_conversion_policy_overflow_handler_important_note"></a><p>
- </p>
-<div class="important" title="Important"><table border="0" summary="Important">
+ <a name="numeric_conversion_policy_overflow_handler_important_note"></a>
+ <div class="important"><table border="0" summary="Important">
 <tr>
-<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../doc/html/images/important.png"></td>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../doc/src/images/important.png"></td>
 <th align="left">Important</th>
 </tr>
-<tr><td align="left" valign="top"><p>
+<tr><td align="left" valign="top">
+ <p>
           <span class="bold"><strong>RELEASE NOTE for 1.33</strong></span> Previous to boost
           version 1.33, the exception class <code class="computeroutput"><span class="identifier">bad_numeric_cast</span></code>
           was named <code class="computeroutput"><span class="identifier">bad_numeric_conversion</span></code>.
@@ -166,22 +155,24 @@
           its exception type so I decided to avoid backward compatibility problems
           by adopting it (guessing that the user base for the old code is wider than
           for the new code).
- </p></td></tr>
+ </p>
+ </td></tr>
 </table></div>
-</div>
-<div class="section" title="Policy Float2IntRounder">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.numeric_converter_policy_classes.policy_float2introunder"></a><a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_float2introunder" title="Policy Float2IntRounder">Policy
       Float2IntRounder</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         This <span class="emphasis"><em>stateless</em></span> template policy class specifies the rounding
         mode used for <span class="underline">float to integral</span> conversions.
         It supplies the <code class="computeroutput"><span class="identifier">nearbyint</span><span class="special">()</span></code> static member function exposed by the converter,
         which means that it <span class="underline">publicly inherits from this
         policy</span>.
       </p>
-<p>
+ <p>
         The policy must have the following interface:
       </p>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">S</span><span class="special">&gt;</span>
@@ -196,20 +187,22 @@
 
 <span class="special">}</span> <span class="special">;</span>
 </pre>
-<p>
+ <p>
         These are the rounder classes provided by the library (only the specific
         parts are shown, see the general policy form above)
       </p>
-<div class="note" title="Note"><table border="0" summary="Note">
+ <div class="note"><table border="0" summary="Note">
 <tr>
-<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/src/images/note.png"></td>
 <th align="left">Note</th>
 </tr>
-<tr><td align="left" valign="top"><p>
+<tr><td align="left" valign="top">
+ <p>
           These classes are not intended to be general purpose rounding functions
           but specific policies for <code class="computeroutput"><span class="identifier">converter</span><span class="special">&lt;&gt;</span></code>. This is why they are not function
           objects.
- </p></td></tr>
+ </p>
+ </td></tr>
 </table></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">numeric</span> <span class="special">{</span>
 
@@ -265,44 +258,45 @@
         <span class="keyword">typedef</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">float_round_style</span><span class="special">,</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">round_toward_neg_infinity</span><span class="special">&gt;</span> <span class="identifier">round_style</span> <span class="special">;</span>
     <span class="special">}</span> <span class="special">;</span>
 
-<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace numeric, namespace boost
-</span></pre>
-<a name="boost_numericconversion.numeric_converter_policy_classes.policy_float2introunder.math_functions_used_by_the_rounder_policies"></a><h5>
-<a name="id572764"></a>
- <a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_float2introunder.math_functions_used_by_the_rounder_policies">Math
+<span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace numeric, namespace boost</span>
+</pre>
+ <h5>
+<a name="boost_numericconversion.numeric_converter_policy_classes.policy_float2introunder.h0"></a>
+ <span><a name="boost_numericconversion.numeric_converter_policy_classes.policy_float2introunder.math_functions_used_by_the_rounder_policies"></a></span><a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_float2introunder.math_functions_used_by_the_rounder_policies">Math
         Functions used by the rounder policies</a>
       </h5>
-<p>
+ <p>
         The rounder policies supplied by this header use math functions <code class="computeroutput"><span class="identifier">floor</span><span class="special">()</span></code>
         and <code class="computeroutput"><span class="identifier">ceil</span><span class="special">()</span></code>.
         The standard versions of these functions are introduced in context by a using
         directive, so in normal conditions, the standard functions will be used.
       </p>
-<p>
+ <p>
         However, if there are other visible corresponding overloads an ambiguity
         could arise. In this case, the user can supply her own rounder policy which
         could, for instance, use a fully qualified call.
       </p>
-<p>
+ <p>
         This technique allows the default rounder policies to be used directly with
         user defined types. The user only requires that suitable overloads of <code class="computeroutput"><span class="identifier">floor</span><span class="special">()</span></code>
         and <code class="computeroutput"><span class="identifier">ceil</span><span class="special">()</span></code>
         be visible. See also <a class="link" href="type_requirements_and_user_defined_types_support.html" title="Type Requirements and User-defined-types support">User
         Defined Numeric Types</a> support.
       </p>
-</div>
-<div class="section" title="Policy RawConverter">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.numeric_converter_policy_classes.policy_rawconverter"></a><a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_rawconverter" title="Policy RawConverter">Policy
       RawConverter</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         This <span class="emphasis"><em>stateless</em></span> template policy class is used to perform
         the actual conversion from Source to Target. It supplies the <code class="computeroutput"><span class="identifier">low_level_convert</span><span class="special">()</span></code>
         static member function exposed by the converter, which means that it publicly
         inherits from this policy.
       </p>
-<p>
+ <p>
         The policy must have the following interface:
       </p>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">&gt;</span>
@@ -314,12 +308,12 @@
     <span class="keyword">static</span> <span class="identifier">result_type</span> <span class="identifier">low_level_convert</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="special">&lt;</span><span class="identifier">impl</span> <span class="identifier">defined</span><span class="special">&gt;</span> <span class="special">;</span> <span class="special">}</span>
 <span class="special">}</span> <span class="special">;</span>
 </pre>
-<p>
+ <p>
         This policy is mostly provided as a hook for user defined types which don't
         support <code class="computeroutput"><span class="keyword">static_cast</span><span class="special">&lt;&gt;</span></code>
         conversions to some types
       </p>
-<p>
+ <p>
         This is the only raw converter policy class provided by the library:
       </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">numeric</span> <span class="special">{</span>
@@ -332,27 +326,28 @@
 
         <span class="keyword">static</span> <span class="identifier">result_type</span> <span class="identifier">low_level_convert</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span>
         <span class="special">{</span>
- <span class="keyword">return</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">result_type</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">)</span> <span class="special">;</span>
+ <span class="keyword">return</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">result_type</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">)</span> <span class="special">;</span>
         <span class="special">}</span>
     <span class="special">}</span> <span class="special">;</span>
 
 <span class="special">}</span> <span class="special">}</span>
 </pre>
-</div>
-<div class="section" title="Policy UserRangeChecker">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.numeric_converter_policy_classes.policy_userrangechecker"></a><a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_userrangechecker" title="Policy UserRangeChecker">Policy
       UserRangeChecker</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         This <span class="emphasis"><em>stateless</em></span> template policy class is used <span class="underline">only if supplied</span> to <span class="bold"><strong>override</strong></span>
         the internal range checking logic.
       </p>
-<p>
+ <p>
         It supplies the <code class="computeroutput"><span class="identifier">validate_range</span><span class="special">()</span></code> static member function exposed by the converter,
         which means that it publicly inherits from this policy.
       </p>
-<p>
+ <p>
         The policy must have the following interface:
       </p>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Traits</span><span class="special">&gt;</span>
@@ -360,37 +355,33 @@
 <span class="special">{</span>
     <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">Traits</span><span class="special">::</span><span class="identifier">argument_type</span> <span class="identifier">argument_type</span> <span class="special">;</span>
 
- <span class="comment">// Determines if the value 's' fits in the range of the Target type.
-</span> <span class="keyword">static</span> <span class="identifier">range_check_result</span> <span class="identifier">out_of_range</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span> <span class="special">;</span>
+ <span class="comment">// Determines if the value 's' fits in the range of the Target type.</span>
+ <span class="keyword">static</span> <span class="identifier">range_check_result</span> <span class="identifier">out_of_range</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span> <span class="special">;</span>
 
- <span class="comment">// Checks whether the value 's' is out_of_range()
-</span> <span class="comment">// and passes the result of the check to the OverflowHandler policy.
-</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">validate_range</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span>
+ <span class="comment">// Checks whether the value 's' is out_of_range()</span>
+ <span class="comment">// and passes the result of the check to the OverflowHandler policy.</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">validate_range</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span>
     <span class="special">{</span>
         <span class="identifier">OverflowHandler</span><span class="special">()(</span> <span class="identifier">out_of_range</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span> <span class="special">)</span> <span class="special">;</span>
     <span class="special">}</span>
 <span class="special">}</span> <span class="special">;</span>
 </pre>
-<p>
+ <p>
         This policy is <span class="bold"><strong>only</strong></span> provided as a hook for
         user defined types which require range checking (which is disabled by default
         when a UDT is involved). The library provides a class: <code class="computeroutput"><span class="identifier">UseInternalRangeChecker</span><span class="special">{}</span></code>; which is a <span class="emphasis"><em>fake</em></span>
         <code class="computeroutput"><span class="identifier">RangeChecker</span></code> policy used
         to signal the converter to use its internal range checking implementation.
       </p>
-</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 © 2004 -2007 Fernando Luis Cacciola Carballal<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="conversion_traits___traits_class.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="improved_numeric_cast__.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
 </body>
 </html>

Modified: branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/type_requirements_and_user_defined_types_support.html
==============================================================================
--- branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/type_requirements_and_user_defined_types_support.html (original)
+++ branches/release/libs/numeric/conversion/doc/html/boost_numericconversion/type_requirements_and_user_defined_types_support.html 2011-11-21 11:46:56 EST (Mon, 21 Nov 2011)
@@ -1,63 +1,55 @@
 <html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Type Requirements and User-defined-types support</title>
 <link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="up" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="prev" href="converter___function_object.html" title="converter&lt;&gt; function object">
-<link rel="next" href="bounds___traits_class.html" title="bounds&lt;&gt; traits class">
+<meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
 </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">Home</td>
-<td align="center">Libraries</td>
+<td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="converter___function_object.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="bounds___traits_class.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
-<div class="section" title="Type Requirements and User-defined-types support">
+<div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_numericconversion.type_requirements_and_user_defined_types_support"></a><a class="link" href="type_requirements_and_user_defined_types_support.html" title="Type Requirements and User-defined-types support">Type
     Requirements and User-defined-types support</a>
 </h2></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section"><a href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.type_requirements">Type
- Requirements</a></span></dt>
-<dt><span class="section"><a href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics">UDT's
- special semantics</a></span></dt>
-<dt><span class="section"><a href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.special_policies">Special
- Policies</a></span></dt>
-</dl></div>
-<div class="section" title="Type Requirements">
+
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.type_requirements_and_user_defined_types_support.type_requirements"></a><a class="link" href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.type_requirements" title="Type Requirements">Type
       Requirements</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         Both arithmetic (built-in) and user-defined numeric types require proper
         specialization of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;&gt;</span></code>
         (that is, with (in-class) integral constants).
       </p>
-<p>
+ <p>
         The library uses <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_specialized</span></code> to detect whether the type
         is builtin or user defined, and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_integer</span></code>, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_signed</span></code> to detect whether the type is
         integer or floating point; and whether it is signed/unsigned.
       </p>
-<p>
+ <p>
         The default <code class="computeroutput"><span class="identifier">Float2IntRounder</span></code>
         policies uses unqualified calls to functions <code class="computeroutput"><span class="identifier">floor</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">ceil</span><span class="special">()</span></code>; but the standard functions are introduced
         in scope by a using directive:
       </p>
 <pre class="programlisting"><span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">floor</span> <span class="special">;</span> <span class="keyword">return</span> <span class="identifier">floor</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
 </pre>
-<p>
+ <p>
         Therefore, for builtin arithmetic types, the std functions will be used.
         User defined types should provide overloaded versions of these functions
         in order to use the default rounder policies. If these overloads are defined
@@ -65,25 +57,26 @@
         but if your compiler has a weak ADL you might need to put these functions
         some place else or write your own rounder policy.
       </p>
-<p>
+ <p>
         The default <code class="computeroutput"><span class="identifier">Trunc</span><span class="special">&lt;&gt;</span></code>
         rounder policy needs to determine if the source value is positive or not,
         and for this it evaluates the expression <code class="computeroutput"><span class="identifier">s</span>
         <span class="special">&lt;</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">S</span><span class="special">&gt;(</span><span class="number">0</span><span class="special">)</span></code>. Therefore,
         user defined types require a visible <code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;</span></code> in order to use the <code class="computeroutput"><span class="identifier">Trunc</span><span class="special">&lt;&gt;</span></code> policy (the default).
       </p>
-</div>
-<div class="section" title="UDT's special semantics">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics"></a><a class="link" href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics" title="UDT's special semantics">UDT's
       special semantics</a>
 </h3></div></div></div>
-<a name="boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics.conversion_traits"></a><h5>
-<a name="id564459"></a>
- <a class="link" href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics.conversion_traits">Conversion
+
+ <h5>
+<a name="boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics.h0"></a>
+ <span><a name="boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics.conversion_traits"></a></span><a class="link" href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics.conversion_traits">Conversion
         Traits</a>
       </h5>
-<p>
+ <p>
         If a User Defined Type is involved in a conversion, it is <span class="emphasis"><em>assumed</em></span>
         that the UDT has <a class="link" href="definitions.html#boost_numericconversion.definitions.range_and_precision" title="Range and Precision">wider
         range</a> than any built-in type, and consequently the values of some
@@ -91,43 +84,88 @@
         members are hardwired regardless of the reality. The following table summarizes
         this:
       </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+
+ <code class="computeroutput"><span class="identifier">Target</span><span class="special">=</span></code><span class="emphasis"><em>UDT</em></span>
+ and <code class="computeroutput"><span class="identifier">Source</span><span class="special">=</span></code><span class="emphasis"><em>built-in</em></span>
+ <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+<li class="listitem">
+
+ <code class="computeroutput"><span class="identifier">subranged</span><span class="special">=</span><span class="keyword">false</span></code>
+
+ </li>
 <li class="listitem">
-<code class="computeroutput"><span class="identifier">Target</span><span class="special">=</span></code><span class="emphasis"><em>UDT</em></span>
- and <code class="computeroutput"><span class="identifier">Source</span><span class="special">=</span></code><span class="emphasis"><em>built-in</em></span><div class="itemizedlist"><ul class="itemizedlist" type="circle">
-<li class="listitem"><code class="computeroutput"><span class="identifier">subranged</span><span class="special">=</span><span class="keyword">false</span></code></li>
-<li class="listitem"><code class="computeroutput"><span class="identifier">supertype</span><span class="special">=</span><span class="identifier">Target</span></code></li>
-<li class="listitem"><code class="computeroutput"><span class="identifier">subtype</span><span class="special">=</span><span class="identifier">Source</span></code></li>
+
+ <code class="computeroutput"><span class="identifier">supertype</span><span class="special">=</span><span class="identifier">Target</span></code>
+
+ </li>
+<li class="listitem">
+
+ <code class="computeroutput"><span class="identifier">subtype</span><span class="special">=</span><span class="identifier">Source</span></code>
+
+ </li>
 </ul></div>
-</li>
+
+ </li>
+<li class="listitem">
+
+ <code class="computeroutput"><span class="identifier">Target</span><span class="special">=</span></code><span class="emphasis"><em>built-in</em></span>
+ and <code class="computeroutput"><span class="identifier">Source</span><span class="special">=</span></code><span class="emphasis"><em>UDT</em></span>
+ <div class="itemizedlist"><ul class="itemizedlist" type="circle">
 <li class="listitem">
-<code class="computeroutput"><span class="identifier">Target</span><span class="special">=</span></code><span class="emphasis"><em>built-in</em></span>
- and <code class="computeroutput"><span class="identifier">Source</span><span class="special">=</span></code><span class="emphasis"><em>UDT</em></span><div class="itemizedlist"><ul class="itemizedlist" type="circle">
-<li class="listitem"><code class="computeroutput"><span class="identifier">subranged</span><span class="special">=</span><span class="keyword">true</span></code></li>
-<li class="listitem"><code class="computeroutput"><span class="identifier">supertype</span><span class="special">=</span><span class="identifier">Source</span></code></li>
-<li class="listitem"><code class="computeroutput"><span class="identifier">subtype</span><span class="special">=</span><span class="identifier">Target</span></code></li>
+
+ <code class="computeroutput"><span class="identifier">subranged</span><span class="special">=</span><span class="keyword">true</span></code>
+
+ </li>
+<li class="listitem">
+
+ <code class="computeroutput"><span class="identifier">supertype</span><span class="special">=</span><span class="identifier">Source</span></code>
+
+ </li>
+<li class="listitem">
+
+ <code class="computeroutput"><span class="identifier">subtype</span><span class="special">=</span><span class="identifier">Target</span></code>
+
+ </li>
 </ul></div>
-</li>
+
+ </li>
+<li class="listitem">
+
+ <code class="computeroutput"><span class="identifier">Target</span><span class="special">=</span></code><span class="emphasis"><em>UDT</em></span>
+ and <code class="computeroutput"><span class="identifier">Source</span><span class="special">=</span></code><span class="emphasis"><em>UDT</em></span>
+ <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+<li class="listitem">
+
+ <code class="computeroutput"><span class="identifier">subranged</span><span class="special">=</span><span class="keyword">false</span></code>
+
+ </li>
+<li class="listitem">
+
+ <code class="computeroutput"><span class="identifier">supertype</span><span class="special">=</span><span class="identifier">Target</span></code>
+
+ </li>
 <li class="listitem">
-<code class="computeroutput"><span class="identifier">Target</span><span class="special">=</span></code><span class="emphasis"><em>UDT</em></span>
- and <code class="computeroutput"><span class="identifier">Source</span><span class="special">=</span></code><span class="emphasis"><em>UDT</em></span><div class="itemizedlist"><ul class="itemizedlist" type="circle">
-<li class="listitem"><code class="computeroutput"><span class="identifier">subranged</span><span class="special">=</span><span class="keyword">false</span></code></li>
-<li class="listitem"><code class="computeroutput"><span class="identifier">supertype</span><span class="special">=</span><span class="identifier">Target</span></code></li>
-<li class="listitem"><code class="computeroutput"><span class="identifier">subtype</span><span class="special">=</span><span class="identifier">Source</span></code></li>
+
+ <code class="computeroutput"><span class="identifier">subtype</span><span class="special">=</span><span class="identifier">Source</span></code>
+
+ </li>
 </ul></div>
-</li>
+
+ </li>
 </ul></div>
-<p>
+ <p>
         The <code class="computeroutput"><span class="identifier">Traits</span></code> member <code class="computeroutput"><span class="identifier">udt_mixture</span></code> can be used to detect whether
         a UDT is involved and to infer the validity of the other members as shown
         above.
       </p>
-<a name="boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics.range_checking"></a><h5>
-<a name="id564867"></a>
- <a class="link" href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics.range_checking">Range
+ <h5>
+<a name="boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics.h1"></a>
+ <span><a name="boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics.range_checking"></a></span><a class="link" href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.udt_s_special_semantics.range_checking">Range
         Checking</a>
       </h5>
-<p>
+ <p>
         Because User Defined Numeric Types might have peculiar ranges (such as an
         unbounded range), this library does not attempt to supply a meaningful range
         checking logic when UDTs are involved in a conversion. Therefore, if either
@@ -137,51 +175,392 @@
         a user-defined range-checker. See <a class="link" href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.special_policies" title="Special Policies">Special
         Policies</a>
       </p>
-</div>
-<div class="section" title="Special Policies">
+ </div>
+ <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="boost_numericconversion.type_requirements_and_user_defined_types_support.special_policies"></a><a class="link" href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.special_policies" title="Special Policies">Special
       Policies</a>
 </h3></div></div></div>
-<p>
+
+ <p>
         There are two components of the <code class="computeroutput"><span class="identifier">converter</span><span class="special">&lt;&gt;</span></code> class that might require special
         behavior if User Defined Numeric Types are involved: the Range Checking and
         the Raw Conversion.
       </p>
-<p>
+ <p>
         When both Target and Source are built-in types, the converter class uses
         an internal range checking logic which is optimized and customized for the
         combined properties of the types.
       </p>
-<p>
+ <p>
         However, this internal logic is disabled when either type is User Defined.
         In this case, the user can specify an <span class="emphasis"><em>external</em></span> range
- checking policy which will be used in place of the internal code. See <a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_userrangechecker" title="Policy UserRangeChecker">UserRangeChecker</a>
- policy for details.
+ checking policy which will be used in place of the internal code. See <a class="link" href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.udts_with_numeric_cast" title="UDTs with numeric_cast">numeric_cast_traits</a>
+ for details on using UDTs with <code class="computeroutput"><span class="identifier">numeric_cast</span></code>.
       </p>
-<p>
+ <p>
         The converter class performs the actual conversion using a Raw Converter
         policy. The default raw converter simply performs a <code class="computeroutput"><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">Target</span><span class="special">&gt;(</span><span class="identifier">source</span><span class="special">)</span></code>.
       </p>
-<p>
+ <p>
         However, if the a UDT is involved, the <code class="computeroutput"><span class="keyword">static_cast</span></code>
         might not work. In this case, the user can implement and pass a different
         raw converter policy. See <a class="link" href="numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_rawconverter" title="Policy RawConverter">RawConverter</a>
- policy for details
+ policy for details.
       </p>
-</div>
-</div>
+ </div>
+ <div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_numericconversion.type_requirements_and_user_defined_types_support.udts_with_numeric_cast"></a><a class="link" href="type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.udts_with_numeric_cast" title="UDTs with numeric_cast">UDTs
+ with numeric_cast</a>
+</h3></div></div></div>
+
+ <p>
+ In order to employ UDTs with <code class="computeroutput"><span class="identifier">numeric_cast</span></code>,
+ the user should define a <code class="computeroutput"><span class="identifier">numeric_cast_traits</span></code>
+ specialization on the UDT for each conversion. Here is an example of specializations
+ for converting between the UDT and any other type:
+ </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">numeric</span> <span class="special">{</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Source</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">numeric_cast_traits</span><span class="special">&lt;</span><span class="identifier">UDT</span><span class="special">,</span> <span class="identifier">Source</span><span class="special">&gt;</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="identifier">UDT</span><span class="special">,</span> <span class="identifier">Source</span><span class="special">&gt;</span> <span class="identifier">conv_traits</span><span class="special">;</span>
+
+ <span class="comment">//! The following are required:</span>
+ <span class="keyword">typedef</span> <span class="identifier">YourOverflowHandlerPolicy</span> <span class="identifier">overflow_policy</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">YourRangeCheckerPolicy</span><span class="special">&lt;</span><span class="identifier">conv_traits</span><span class="special">&gt;</span> <span class="identifier">range_checking_policy</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">YourFloat2IntRounderPolicy</span><span class="special">&lt;</span><span class="identifier">Source</span><span class="special">&gt;</span> <span class="identifier">rounding_policy</span><span class="special">;</span>
+<span class="special">};</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Target</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">numeric_cast_traits</span><span class="special">&lt;</span><span class="identifier">Target</span><span class="special">,</span> <span class="identifier">UDT</span><span class="special">&gt;</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="identifier">Target</span><span class="special">,</span> <span class="identifier">UDT</span><span class="special">&gt;</span> <span class="identifier">conv_traits</span><span class="special">;</span>
+
+ <span class="comment">//! The following are required:</span>
+ <span class="keyword">typedef</span> <span class="identifier">YourOverflowHandlerPolicy</span> <span class="identifier">overflow_policy</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">YourRangeCheckerPolicy</span><span class="special">&lt;</span><span class="identifier">conv_traits</span><span class="special">&gt;</span> <span class="identifier">range_checking_policy</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">YourFloat2IntRounderPolicy</span><span class="special">&lt;</span><span class="identifier">UDT</span><span class="special">&gt;</span> <span class="identifier">rounding_policy</span><span class="special">;</span>
+<span class="special">};</span>
+<span class="special">}}//</span><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">;</span>
+</pre>
+ <p>
+ These specializations are already defined with default values for the built-in
+ numeric types. It is possible to disable the generation of specializations
+ for built-in types by defining <code class="computeroutput"><span class="identifier">BOOST_NUMERIC_CONVERSION_RELAX_BUILT_IN_CAST_TRAITS</span></code>.
+ For details on defining custom policies see <a class="link" href="numeric_converter_policy_classes.html" title="Numeric Converter Policy Classes">Converter
+ Policies</a>.
+ </p>
+ <p>
+ Here is a full example of how to define a custom UDT for use with <code class="computeroutput"><span class="identifier">numeric_cast</span></code>:
+ </p>
+<pre class="programlisting"><span class="comment">//! Define a simple custom number</span>
+<span class="keyword">struct</span> <span class="identifier">Double</span>
+ <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ordered_field_operators</span>
+ <span class="special">&lt;</span>
+ <span class="identifier">Double</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ordered_field_operators2</span><span class="special">&lt;</span> <span class="identifier">Double</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">double</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ordered_field_operators2</span><span class="special">&lt;</span> <span class="identifier">Double</span><span class="special">,</span> <span class="keyword">double</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ordered_field_operators2</span><span class="special">&lt;</span> <span class="identifier">Double</span><span class="special">,</span> <span class="keyword">float</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ordered_field_operators2</span><span class="special">&lt;</span> <span class="identifier">Double</span><span class="special">,</span> <span class="keyword">int</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ordered_field_operators2</span><span class="special">&lt;</span> <span class="identifier">Double</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">int</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ordered_field_operators2</span><span class="special">&lt;</span> <span class="identifier">Double</span><span class="special">,</span> <span class="keyword">long</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ordered_field_operators2</span><span class="special">&lt;</span> <span class="identifier">Double</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">long</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ordered_field_operators2</span><span class="special">&lt;</span> <span class="identifier">Double</span><span class="special">,</span> <span class="keyword">long</span> <span class="keyword">long</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ordered_field_operators2</span><span class="special">&lt;</span> <span class="identifier">Double</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="keyword">long</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ordered_field_operators2</span><span class="special">&lt;</span> <span class="identifier">Double</span><span class="special">,</span> <span class="keyword">char</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ordered_field_operators2</span><span class="special">&lt;</span> <span class="identifier">Double</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">char</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ordered_field_operators2</span><span class="special">&lt;</span> <span class="identifier">Double</span><span class="special">,</span> <span class="keyword">short</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ordered_field_operators2</span><span class="special">&lt;</span> <span class="identifier">Double</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">short</span>
+ <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
+<span class="special">{</span>
+ <span class="identifier">Double</span><span class="special">()</span>
+ <span class="special">:</span> <span class="identifier">v</span><span class="special">(</span><span class="number">0</span><span class="special">)</span>
+ <span class="special">{}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">explicit</span> <span class="identifier">Double</span><span class="special">(</span> <span class="identifier">T</span> <span class="identifier">v</span> <span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">v</span><span class="special">(</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="identifier">v</span><span class="special">))</span>
+ <span class="special">{}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">Double</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=</span> <span class="special">(</span> <span class="identifier">T</span> <span class="identifier">t</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">v</span> <span class="special">=</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="identifier">t</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="special">}</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">Double</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="keyword">return</span> <span class="identifier">v</span> <span class="special">&lt;</span> <span class="identifier">rhs</span><span class="special">.</span><span class="identifier">v</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</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="identifier">T</span> <span class="identifier">rhs</span> <span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">v</span> <span class="special">&lt;</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="identifier">rhs</span><span class="special">);</span>
+ <span class="special">}</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">Double</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="keyword">return</span> <span class="identifier">v</span> <span class="special">&gt;</span> <span class="identifier">rhs</span><span class="special">.</span><span class="identifier">v</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</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="identifier">T</span> <span class="identifier">rhs</span> <span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">v</span> <span class="special">&gt;</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="identifier">rhs</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==(</span> <span class="keyword">const</span> <span class="identifier">Double</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="keyword">return</span> <span class="identifier">v</span> <span class="special">==</span> <span class="identifier">rhs</span><span class="special">.</span><span class="identifier">v</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span> <span class="identifier">T</span> <span class="identifier">rhs</span> <span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">v</span> <span class="special">==</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="identifier">rhs</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">v</span> <span class="special">==</span> <span class="number">0</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="identifier">Double</span> <span class="keyword">operator</span> <span class="special">-()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">Double</span><span class="special">(-</span><span class="identifier">v</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">Double</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">+=(</span> <span class="keyword">const</span> <span class="identifier">Double</span><span class="special">&amp;</span> <span class="identifier">t</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">v</span> <span class="special">+=</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">v</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">Double</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">+=(</span> <span class="identifier">T</span> <span class="identifier">t</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">v</span> <span class="special">+=</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="identifier">t</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="identifier">Double</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">-=(</span> <span class="keyword">const</span> <span class="identifier">Double</span><span class="special">&amp;</span> <span class="identifier">t</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">v</span> <span class="special">-=</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">v</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">Double</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">-=(</span> <span class="identifier">T</span> <span class="identifier">t</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">v</span> <span class="special">-=</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="identifier">t</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="identifier">Double</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">*=</span> <span class="special">(</span> <span class="keyword">const</span> <span class="identifier">Double</span><span class="special">&amp;</span> <span class="identifier">factor</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">v</span> <span class="special">*=</span> <span class="identifier">factor</span><span class="special">.</span><span class="identifier">v</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">Double</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">*=(</span> <span class="identifier">T</span> <span class="identifier">t</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">v</span> <span class="special">*=</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="identifier">t</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="identifier">Double</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">/=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">Double</span><span class="special">&amp;</span> <span class="identifier">divisor</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">v</span> <span class="special">/=</span> <span class="identifier">divisor</span><span class="special">.</span><span class="identifier">v</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="identifier">Double</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">/=(</span> <span class="identifier">T</span> <span class="identifier">t</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">v</span> <span class="special">/=</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="identifier">t</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="special">(*</span><span class="keyword">this</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">double</span> <span class="identifier">v</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="comment">//! Define numeric_limits for the custom type.</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">Double</span><span class="special">&gt;</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+
+ <span class="comment">//! Limit our Double to a range of +/- 100.0</span>
+ <span class="keyword">static</span> <span class="identifier">Double</span> <span class="special">(</span><span class="identifier">min</span><span class="special">)()</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">Double</span><span class="special">(</span><span class="number">1.e-2</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">static</span> <span class="identifier">Double</span> <span class="special">(</span><span class="identifier">max</span><span class="special">)()</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">Double</span><span class="special">(</span><span class="number">1.e2</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">static</span> <span class="identifier">Double</span> <span class="identifier">epsilon</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">Double</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">epsilon</span><span class="special">()</span> <span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+<span class="special">}</span>
+
+<span class="comment">//! Define range checking and overflow policies.</span>
+<span class="keyword">namespace</span> <span class="identifier">custom</span>
+<span class="special">{</span>
+ <span class="comment">//! Define a custom range checker</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Traits</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">OverFlowHandler</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">range_checker</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">Traits</span><span class="special">::</span><span class="identifier">argument_type</span> <span class="identifier">argument_type</span> <span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">Traits</span><span class="special">::</span><span class="identifier">source_type</span> <span class="identifier">S</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">Traits</span><span class="special">::</span><span class="identifier">target_type</span> <span class="identifier">T</span><span class="special">;</span>
+
+ <span class="comment">//! Check range of integral types.</span>
+ <span class="keyword">static</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">range_check_result</span> <span class="identifier">out_of_range</span><span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">;</span>
+ <span class="keyword">if</span><span class="special">(</span> <span class="identifier">s</span> <span class="special">&gt;</span> <span class="identifier">bounds</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">highest</span><span class="special">()</span> <span class="special">)</span>
+ <span class="keyword">return</span> <span class="identifier">cPosOverflow</span><span class="special">;</span>
+ <span class="keyword">else</span> <span class="keyword">if</span><span class="special">(</span> <span class="identifier">s</span> <span class="special">&lt;</span> <span class="identifier">bounds</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">lowest</span><span class="special">()</span> <span class="special">)</span>
+ <span class="keyword">return</span> <span class="identifier">cNegOverflow</span><span class="special">;</span>
+ <span class="keyword">else</span>
+ <span class="keyword">return</span> <span class="identifier">cInRange</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">validate_range</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_bounded</span> <span class="special">);</span>
+ <span class="identifier">OverFlowHandler</span><span class="special">()(</span> <span class="identifier">out_of_range</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span> <span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+
+ <span class="comment">//! Overflow handler</span>
+ <span class="keyword">struct</span> <span class="identifier">positive_overflow</span><span class="special">{};</span>
+ <span class="keyword">struct</span> <span class="identifier">negative_overflow</span><span class="special">{};</span>
+
+ <span class="keyword">struct</span> <span class="identifier">overflow_handler</span>
+ <span class="special">{</span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()</span> <span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">range_check_result</span> <span class="identifier">r</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">;</span>
+ <span class="keyword">if</span><span class="special">(</span> <span class="identifier">r</span> <span class="special">==</span> <span class="identifier">cNegOverflow</span> <span class="special">)</span>
+ <span class="keyword">throw</span> <span class="identifier">negative_overflow</span><span class="special">()</span> <span class="special">;</span>
+ <span class="keyword">else</span> <span class="keyword">if</span><span class="special">(</span> <span class="identifier">r</span> <span class="special">==</span> <span class="identifier">cPosOverflow</span> <span class="special">)</span>
+ <span class="keyword">throw</span> <span class="identifier">positive_overflow</span><span class="special">()</span> <span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+
+ <span class="comment">//! Define a rounding policy and specialize on the custom type.</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">S</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">Ceil</span> <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">Ceil</span><span class="special">&lt;</span><span class="identifier">S</span><span class="special">&gt;{};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">Ceil</span><span class="special">&lt;</span><span class="identifier">Double</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">Double</span> <span class="identifier">source_type</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">Double</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">argument_type</span><span class="special">;</span>
+
+ <span class="keyword">static</span> <span class="identifier">source_type</span> <span class="identifier">nearbyint</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span>
+ <span class="special">{</span>
+<span class="preprocessor">#if</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_NO_STDC_NAMESPACE</span><span class="special">)</span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ceil</span> <span class="special">;</span>
+<span class="preprocessor">#endif</span>
+ <span class="keyword">return</span> <span class="identifier">Double</span><span class="special">(</span> <span class="identifier">ceil</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">v</span><span class="special">)</span> <span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span><span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">float_round_style</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">round_toward_infinity</span><span class="special">&gt;</span> <span class="identifier">round_style</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="comment">//! Define a rounding policy and specialize on the custom type.</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">S</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">Trunc</span><span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">Trunc</span><span class="special">&lt;</span><span class="identifier">S</span><span class="special">&gt;{};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">Trunc</span><span class="special">&lt;</span><span class="identifier">Double</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">Double</span> <span class="identifier">source_type</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">Double</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">argument_type</span><span class="special">;</span>
+
+ <span class="keyword">static</span> <span class="identifier">source_type</span> <span class="identifier">nearbyint</span> <span class="special">(</span> <span class="identifier">argument_type</span> <span class="identifier">s</span> <span class="special">)</span>
+ <span class="special">{</span>
+<span class="preprocessor">#if</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_NO_STDC_NAMESPACE</span><span class="special">)</span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">floor</span><span class="special">;</span>
+<span class="preprocessor">#endif</span>
+ <span class="keyword">return</span> <span class="identifier">Double</span><span class="special">(</span> <span class="identifier">floor</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">v</span><span class="special">)</span> <span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span><span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">float_round_style</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">round_toward_zero</span><span class="special">&gt;</span> <span class="identifier">round_style</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}//</span><span class="keyword">namespace</span> <span class="identifier">custom</span><span class="special">;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">numeric</span> <span class="special">{</span>
+
+ <span class="comment">//! Define the numeric_cast_traits specializations on the custom type.</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">S</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">numeric_cast_traits</span><span class="special">&lt;</span><span class="identifier">Double</span><span class="special">,</span> <span class="identifier">S</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">custom</span><span class="special">::</span><span class="identifier">overflow_handler</span> <span class="identifier">overflow_policy</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">custom</span><span class="special">::</span><span class="identifier">range_checker</span>
+ <span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="identifier">Double</span><span class="special">,</span> <span class="identifier">S</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="identifier">overflow_policy</span>
+ <span class="special">&gt;</span> <span class="identifier">range_checking_policy</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">Trunc</span><span class="special">&lt;</span><span class="identifier">S</span><span class="special">&gt;</span> <span class="identifier">rounding_policy</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">numeric_cast_traits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Double</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">custom</span><span class="special">::</span><span class="identifier">overflow_handler</span> <span class="identifier">overflow_policy</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">custom</span><span class="special">::</span><span class="identifier">range_checker</span>
+ <span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Double</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="identifier">overflow_policy</span>
+ <span class="special">&gt;</span> <span class="identifier">range_checking_policy</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">custom</span><span class="special">::</span><span class="identifier">Trunc</span><span class="special">&lt;</span><span class="identifier">Double</span><span class="special">&gt;</span> <span class="identifier">rounding_policy</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="comment">//! Define the conversion from the custom type to built-in types and vice-versa.</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">raw_converter</span><span class="special">&lt;</span> <span class="identifier">conversion_traits</span><span class="special">&lt;</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">Double</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">low_level_convert</span> <span class="special">(</span> <span class="keyword">const</span> <span class="identifier">Double</span><span class="special">&amp;</span> <span class="identifier">n</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span> <span class="identifier">n</span><span class="special">.</span><span class="identifier">v</span> <span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">S</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">raw_converter</span><span class="special">&lt;</span> <span class="identifier">conversion_traits</span><span class="special">&lt;</span> <span class="identifier">Double</span><span class="special">,</span> <span class="identifier">S</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">static</span> <span class="identifier">Double</span> <span class="identifier">low_level_convert</span> <span class="special">(</span> <span class="keyword">const</span> <span class="identifier">S</span><span class="special">&amp;</span> <span class="identifier">n</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">Double</span><span class="special">(</span><span class="identifier">n</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+<span class="special">}}//</span><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">;</span>
+</pre>
+ </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 © 2004 -2007 Fernando Luis Cacciola Carballal<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="converter___function_object.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="bounds___traits_class.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
 </body>
 </html>

Modified: branches/release/libs/numeric/conversion/doc/html/index.html
==============================================================================
--- branches/release/libs/numeric/conversion/doc/html/index.html (original)
+++ branches/release/libs/numeric/conversion/doc/html/index.html 2011-11-21 11:46:56 EST (Mon, 21 Nov 2011)
@@ -1,37 +1,38 @@
 <html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Chapter 1. Boost.NumericConversion</title>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter&#160;1.&#160;Boost.NumericConversion</title>
 <link rel="stylesheet" href="boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="next" href="boost_numericconversion/definitions.html" title="Definitions">
+<meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
 </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">Home</td>
-<td align="center">Libraries</td>
+<td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
-<div class="spirit-nav"><a accesskey="n" href="boost_numericconversion/definitions.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a></div>
-<div class="chapter" title="Chapter 1. Boost.NumericConversion">
+<div class="spirit-nav"></div>
+<div class="chapter">
 <div class="titlepage"><div>
 <div><h2 class="title">
-<a name="numeric_conversion"></a>Chapter 1. Boost.NumericConversion</h2></div>
+<a name="numeric_conversion"></a>Chapter&#160;1.&#160;Boost.NumericConversion</h2></div>
 <div><div class="author"><h3 class="author">
 <span class="firstname">Fernando Luis</span> <span class="surname">Cacciola Carballal</span>
 </h3></div></div>
-<div><p class="copyright">Copyright © 2004 -2007 Fernando Luis Cacciola Carballal</p></div>
-<div><div class="legalnotice" title="Legal Notice">
-<a name="id553943"></a><p>
+<div><p class="copyright">Copyright &#169; 2004-2007 Fernando
+ Luis Cacciola Carballal</p></div>
+<div><div class="legalnotice">
+<a name="numeric_conversion.legal"></a>
+ <p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ file LICENSE_1_0.txt or copy at <a class="ulink" href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt>)
       </p>
-</div></div>
+ </div></div>
 </div></div>
 <div class="toc">
 <p><b>Table of Contents</b></p>
@@ -76,6 +77,8 @@
       special semantics</a></span></dt>
 <dt><span class="section"><a href="boost_numericconversion/type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.special_policies">Special
       Policies</a></span></dt>
+<dt><span class="section"><a href="boost_numericconversion/type_requirements_and_user_defined_types_support.html#boost_numericconversion.type_requirements_and_user_defined_types_support.udts_with_numeric_cast">UDTs
+ with numeric_cast</a></span></dt>
 </dl></dd>
 <dt><span class="section"><a href="boost_numericconversion/bounds___traits_class.html">bounds&lt;&gt;
     traits class</a></span></dt>
@@ -110,6 +113,7 @@
 <dd><dl>
 <dt><span class="section">
Introduction</span></dt>
 <dt><span class="section">numeric_cast</span></dt>
+<dt><span class="section">numeric_cast_traits</span></dt>
 <dt><span class="section">Examples</span></dt>
 </dl></dd>
 <dt><span class="section"><a href="numeric_conversion/history_and_acknowledgments.html">History
@@ -117,61 +121,81 @@
 <dt><span class="section">Bibliography</span></dt>
 </dl>
 </div>
-<div class="section" title="Overview">
+
+
+ <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="numeric_conversion.overview"></a><a class="link" href="index.html#numeric_conversion.overview" title="Overview">Overview</a>
 </h2></div></div></div>
-<p>
+
+ <p>
       The Boost Numeric Conversion library is a collection of tools to describe and
       perform conversions between values of different <a class="link" href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.numeric_types" title="Numeric Types">numeric
       types</a>.
     </p>
-<p>
+ <p>
       The library includes a special alternative for a subset of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;&gt;</span></code>, the <a class="link" href="boost_numericconversion/bounds___traits_class.html" title="bounds&lt;&gt; traits class">bounds&lt;&gt;</a>
       traits class, which provides a consistent way to obtain the <a class="link" href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.range_and_precision" title="Range and Precision">boundary</a>
       values for the <a class="link" href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.range_and_precision" title="Range and Precision">range</a>
       of a numeric type.
     </p>
-<p>
+ <p>
       It also includes a set of <a class="link" href="boost_numericconversion/conversion_traits___traits_class.html" title="conversion_traits&lt;&gt; traits class">trait
       classes</a> which describes the compile-time properties of a conversion
       from a source to a target numeric type. Both <a class="link" href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.c___arithmetic_types" title="C++ Arithmetic Types">arithmetic</a>
       and <a class="link" href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.numeric_types" title="Numeric Types">user-defined
       numeric types</a> can be used.
     </p>
-<p>
+ <p>
       A policy-based <a class="link" href="boost_numericconversion/converter___function_object.html" title="converter&lt;&gt; function object">converter</a>
       object which uses <code class="computeroutput"><span class="identifier">conversion_traits</span></code>
       to select an optimized implementation is supplied. Such implementation uses
       an optimal range checking code suitable for the source/target combination.
     </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
- The converter's out-of-range behavior can be customized via an <a class="link" href="boost_numericconversion/numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_overflowhandler" title="Policy OverflowHandler">OverflowHandler</a>
- policy.
+
+ The converter's out-of-range behavior can be customized via an <a class="link" href="boost_numericconversion/numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_overflowhandler" title="Policy OverflowHandler">OverflowHandler</a>
+ policy.
+
       </li>
 <li class="listitem">
- For floating-point to integral conversions, the rounding mode can be selected
- via the <a class="link" href="boost_numericconversion/numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_float2introunder" title="Policy Float2IntRounder">Float2IntRounder</a>
- policy.
+
+ For floating-point to integral conversions, the rounding mode can be selected
+ via the <a class="link" href="boost_numericconversion/numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_float2introunder" title="Policy Float2IntRounder">Float2IntRounder</a>
+ policy.
+
       </li>
 <li class="listitem">
- A custom low-level conversion routine (for UDTs for instance) can be passed
- via a <a class="link" href="boost_numericconversion/numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_rawconverter" title="Policy RawConverter">RawConverter</a>
- policy.
+
+ A custom low-level conversion routine (for UDTs for instance) can be passed
+ via a <a class="link" href="boost_numericconversion/numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_rawconverter" title="Policy RawConverter">RawConverter</a>
+ policy.
+
       </li>
 <li class="listitem">
- The optimized automatic range-checking logic can be overridden via a <a class="link" href="boost_numericconversion/numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_userrangechecker" title="Policy UserRangeChecker">UserRangeChecker</a>
- policy.
+
+ The optimized automatic range-checking logic can be overridden via a <a class="link" href="boost_numericconversion/numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_userrangechecker" title="Policy UserRangeChecker">UserRangeChecker</a>
+ policy.
+
       </li>
 </ul></div>
-</div>
+ </div>
+
+
+
+
+
+
+
+
+
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: November 20, 2009 at 09:59:43 GMT</small></p></td>
+<td align="left"><p><small>Last revised: November 21, 2011 at 16:44:25 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
-<div class="spirit-nav"><a accesskey="n" href="boost_numericconversion/definitions.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="spirit-nav"></div>
 </body>
 </html>

Modified: branches/release/libs/numeric/conversion/doc/html/numeric_conversion/bibliography.html
==============================================================================
--- branches/release/libs/numeric/conversion/doc/html/numeric_conversion/bibliography.html (original)
+++ branches/release/libs/numeric/conversion/doc/html/numeric_conversion/bibliography.html 2011-11-21 11:46:56 EST (Mon, 21 Nov 2011)
@@ -1,86 +1,107 @@
 <html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>Bibliography</title>
 <link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="up" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="prev" href="history_and_acknowledgments.html" title="History and Acknowledgments">
+<meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
 </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">Home</td>
-<td align="center">Libraries</td>
+<td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="history_and_acknowledgments.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a>
+<a accesskey="u" href="../index.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>
 </div>
-<div class="section" title="Bibliography">
+<div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="numeric_conversion.bibliography"></a><a class="link" href="bibliography.html" title="Bibliography">Bibliography</a>
 </h2></div></div></div>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
- Standard Documents:
- <div class="orderedlist"><ol class="orderedlist" type="1">
-<li class="listitem">
- ISO/IEC 14882:98 (C++98 Standard)
- </li>
-<li class="listitem">
- ISO/IEC 9899:1999 (C99 Standard)
- </li>
-<li class="listitem">
- ISO/IEC 10967-1 (Language Independent Arithmetic (LIA), Part I, 1994)
- </li>
-<li class="listitem">
- ISO/IEC 2382-1:1993 (Information Technology - Vocabulary - Part I: Fundamental
- Terms)
- </li>
-<li class="listitem">
- ANSI/IEEE 754-1985 [and IEC 60559:1989] (Binary floating-point)
- </li>
-<li class="listitem">
- ANSI/IEEE 854-1988 (Radix Independent floating-point)
- </li>
-<li class="listitem">
- ANSI X3/TR-1-82 (Dictionary for Information Processing Systems)
- </li>
-<li class="listitem">
- ISO/IEC JTC1/SC22/WG14/N753 C9X Revision Proposal: LIA-1 Binding: Rationale
- </li>
+
+ Standard Documents:
+ <div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+
+ ISO/IEC 14882:98 (C++98 Standard)
+
+ </li>
+<li class="listitem">
+
+ ISO/IEC 9899:1999 (C99 Standard)
+
+ </li>
+<li class="listitem">
+
+ ISO/IEC 10967-1 (Language Independent Arithmetic (LIA), Part I, 1994)
+
+ </li>
+<li class="listitem">
+
+ ISO/IEC 2382-1:1993 (Information Technology - Vocabulary - Part I:
+ Fundamental Terms)
+
+ </li>
+<li class="listitem">
+
+ ANSI/IEEE 754-1985 [and IEC 60559:1989] (Binary floating-point)
+
+ </li>
+<li class="listitem">
+
+ ANSI/IEEE 854-1988 (Radix Independent floating-point)
+
+ </li>
+<li class="listitem">
+
+ ANSI X3/TR-1-82 (Dictionary for Information Processing Systems)
+
+ </li>
+<li class="listitem">
+
+ ISO/IEC JTC1/SC22/WG14/N753 C9X Revision Proposal: LIA-1 Binding:
+ Rationale
+
+ </li>
 </ol></div>
-</li>
-<li class="listitem">
- Papers:
- <div class="orderedlist"><ol class="orderedlist" type="1">
+
+ </li>
 <li class="listitem">
- David Goldberg What Every Computer Scientist Should Know About Floating-Point
- Arithmetic
- </li>
-<li class="listitem">
- Prof. William Kahan papers on floating-point.
- </li>
+
+ Papers:
+ <div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+
+ David Goldberg What Every Computer Scientist Should Know About Floating-Point
+ Arithmetic
+
+ </li>
+<li class="listitem">
+
+ Prof. William Kahan papers on floating-point.
+
+ </li>
 </ol></div>
-</li>
+
+ </li>
 </ul></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 © 2004 -2007 Fernando Luis Cacciola Carballal<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="history_and_acknowledgments.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a>
+<a accesskey="u" href="../index.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>
 </div>
 </body>
 </html>

Modified: branches/release/libs/numeric/conversion/doc/html/numeric_conversion/history_and_acknowledgments.html
==============================================================================
--- branches/release/libs/numeric/conversion/doc/html/numeric_conversion/history_and_acknowledgments.html (original)
+++ branches/release/libs/numeric/conversion/doc/html/numeric_conversion/history_and_acknowledgments.html 2011-11-21 11:46:56 EST (Mon, 21 Nov 2011)
@@ -1,96 +1,105 @@
 <html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>History and Acknowledgments</title>
 <link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
-<link rel="home" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="up" href="../index.html" title="Chapter 1. Boost.NumericConversion">
-<link rel="prev" href="../boost_numericconversion/improved_numeric_cast__.html" title="Improved numeric_cast&lt;&gt;">
-<link rel="next" href="bibliography.html" title="Bibliography">
+<meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
 </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">Home</td>
-<td align="center">Libraries</td>
+<td align="center">Libraries</td>
 <td align="center">People</td>
 <td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../boost_numericconversion/improved_numeric_cast__.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="bibliography.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
-<div class="section" title="History and Acknowledgments">
+<div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="numeric_conversion.history_and_acknowledgments"></a><a class="link" href="history_and_acknowledgments.html" title="History and Acknowledgments">History
     and Acknowledgments</a>
 </h2></div></div></div>
-<a name="numeric_conversion.history_and_acknowledgments.pre_formal_review"></a><h4>
-<a name="id575108"></a>
- <a class="link" href="history_and_acknowledgments.html#numeric_conversion.history_and_acknowledgments.pre_formal_review">Pre-formal
+
+ <h4>
+<a name="numeric_conversion.history_and_acknowledgments.h0"></a>
+ <span><a name="numeric_conversion.history_and_acknowledgments.pre_formal_review"></a></span><a class="link" href="history_and_acknowledgments.html#numeric_conversion.history_and_acknowledgments.pre_formal_review">Pre-formal
       review</a>
     </h4>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
- Kevlin Henney, with help from David Abrahams and Beman Dawes, originally
- contributed the previous version of <code class="computeroutput"><span class="identifier">numeric_cast</span><span class="special">&lt;&gt;</span></code> which already presented the idea
- of a runtime range check.
- </li>
-<li class="listitem">
- Later, Eric Ford, Kevin Lynch and the author spotted some genericity problems
- with that <code class="computeroutput"><span class="identifier">numeric_cast</span><span class="special">&lt;&gt;</span></code>
- which prevented it from being used in a generic layer of math functions.
- </li>
-<li class="listitem">
- An improved <code class="computeroutput"><span class="identifier">numeric_cast</span><span class="special">&lt;&gt;</span></code> which properly handled all combinations
- of arithmetic types was presented.
- </li>
-<li class="listitem">
- David Abrahams and Beman Dawes acknowledged the need of an improved version
- of <code class="computeroutput"><span class="identifier">numeric_cast</span><span class="special">&lt;&gt;</span></code>
- and supported the submission as originally laid out. Daryl Walker and Darin
- Adler made some important comments and proposed fixes to the original submission.
- </li>
-<li class="listitem">
- Special thanks go to Björn Karlsoon who helped the author considerably.
- Having found the problems with <code class="computeroutput"><span class="identifier">numeric_cast</span><span class="special">&lt;&gt;</span></code> himself, he revised very carefully
- the original submission and spot a subtle bug in the range checking implementation.
- He also wrote part of this documentation and proof-read and corrected other
- parts. And most importantly: the features now presented here in this library
- evolved from the original submission as a result of the useful private communications
- between Björn and the author.
+
+ Kevlin Henney, with help from David Abrahams and Beman Dawes, originally
+ contributed the previous version of <code class="computeroutput"><span class="identifier">numeric_cast</span><span class="special">&lt;&gt;</span></code> which already presented the idea
+ of a runtime range check.
+
+ </li>
+<li class="listitem">
+
+ Later, Eric Ford, Kevin Lynch and the author spotted some genericity problems
+ with that <code class="computeroutput"><span class="identifier">numeric_cast</span><span class="special">&lt;&gt;</span></code> which prevented it from being used
+ in a generic layer of math functions.
+
+ </li>
+<li class="listitem">
+
+ An improved <code class="computeroutput"><span class="identifier">numeric_cast</span><span class="special">&lt;&gt;</span></code> which properly handled all combinations
+ of arithmetic types was presented.
+
+ </li>
+<li class="listitem">
+
+ David Abrahams and Beman Dawes acknowledged the need of an improved version
+ of <code class="computeroutput"><span class="identifier">numeric_cast</span><span class="special">&lt;&gt;</span></code>
+ and supported the submission as originally laid out. Daryl Walker and Darin
+ Adler made some important comments and proposed fixes to the original submission.
+
+ </li>
+<li class="listitem">
+
+ Special thanks go to Bj&#246;rn Karlsoon who helped the author considerably.
+ Having found the problems with <code class="computeroutput"><span class="identifier">numeric_cast</span><span class="special">&lt;&gt;</span></code> himself, he revised very carefully
+ the original submission and spot a subtle bug in the range checking implementation.
+ He also wrote part of this documentation and proof-read and corrected other
+ parts. And most importantly: the features now presented here in this library
+ evolved from the original submission as a result of the useful private
+ communications between Bj&#246;rn and the author.
+
       </li>
 </ul></div>
-<a name="numeric_conversion.history_and_acknowledgments.post_formal_review"></a><h4>
-<a name="id575242"></a>
- <a class="link" href="history_and_acknowledgments.html#numeric_conversion.history_and_acknowledgments.post_formal_review">Post-formal
+ <h4>
+<a name="numeric_conversion.history_and_acknowledgments.h1"></a>
+ <span><a name="numeric_conversion.history_and_acknowledgments.post_formal_review"></a></span><a class="link" href="history_and_acknowledgments.html#numeric_conversion.history_and_acknowledgments.post_formal_review">Post-formal
       review</a>
     </h4>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+ <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
- Guillaume Melquiond spoted some documentation and code issues, particularly
- about rounding conversions.
+
+ Guillaume Melquiond spoted some documentation and code issues, particularly
+ about rounding conversions.
+
       </li>
 <li class="listitem">
- The following people contributed an important review of the design, documentation
- and c ode: Kevin Lynch, Thorsten Ottosen, Paul Bristow, Daryle Walker, Jhon
- Torjo, Eric Ford, Gennadiy Rozental.
+
+ The following people contributed an important review of the design, documentation
+ and c ode: Kevin Lynch, Thorsten Ottosen, Paul Bristow, Daryle Walker,
+ Jhon Torjo, Eric Ford, Gennadiy Rozental.
+
       </li>
 </ul></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 © 2004 -2007 Fernando Luis Cacciola Carballal<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- </p>
-</div></td>
+<td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../boost_numericconversion/improved_numeric_cast__.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="bibliography.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="u" href="../index.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>
 </div>
 </body>
 </html>


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk