index.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>Chapter&#160;1.&#160;Boost.NumericConversion</title>
  5. <link rel="stylesheet" href="boostbook.css" type="text/css">
  6. <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
  7. <link rel="home" href="index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
  8. <link rel="next" href="boost_numericconversion/definitions.html" title="Definitions">
  9. </head>
  10. <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
  11. <table cellpadding="2" width="100%"><tr>
  12. <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
  13. <td align="center"><a href="../../../../../index.html">Home</a></td>
  14. <td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
  15. <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
  16. <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
  17. <td align="center"><a href="../../../../../more/index.htm">More</a></td>
  18. </tr></table>
  19. <hr>
  20. <div class="spirit-nav"><a accesskey="n" href="boost_numericconversion/definitions.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a></div>
  21. <div class="chapter">
  22. <div class="titlepage"><div>
  23. <div><h2 class="title">
  24. <a name="numeric_conversion"></a>Chapter&#160;1.&#160;Boost.NumericConversion</h2></div>
  25. <div><div class="author"><h3 class="author">
  26. <span class="firstname">Fernando Luis</span> <span class="surname">Cacciola Carballal</span>
  27. </h3></div></div>
  28. <div><p class="copyright">Copyright &#169; 2004-2007 Fernando
  29. Luis Cacciola Carballal</p></div>
  30. <div><div class="legalnotice">
  31. <a name="numeric_conversion.legal"></a><p>
  32. Distributed under the Boost Software License, Version 1.0. (See accompanying
  33. file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
  34. </p>
  35. </div></div>
  36. </div></div>
  37. <div class="toc">
  38. <p><b>Table of Contents</b></p>
  39. <dl class="toc">
  40. <dt><span class="section"><a href="index.html#numeric_conversion.overview">Overview</a></span></dt>
  41. <dt><span class="section"><a href="boost_numericconversion/definitions.html">Definitions</a></span></dt>
  42. <dd><dl>
  43. <dt><span class="section"><a href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.introduction">Introduction</a></span></dt>
  44. <dt><span class="section"><a href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.types_and_values">Types
  45. and Values</a></span></dt>
  46. <dt><span class="section"><a href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.c___arithmetic_types">C++
  47. Arithmetic Types</a></span></dt>
  48. <dt><span class="section"><a href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.numeric_types">Numeric
  49. Types</a></span></dt>
  50. <dt><span class="section"><a href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.range_and_precision">Range
  51. and Precision</a></span></dt>
  52. <dt><span class="section"><a href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.exact__correctly_rounded_and_out_of_range_representations">Exact,
  53. Correctly Rounded and Out-Of-Range Representations</a></span></dt>
  54. <dt><span class="section"><a href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.standard__numeric__conversions">Standard
  55. (numeric) Conversions</a></span></dt>
  56. <dt><span class="section"><a href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.subranged_conversion_direction__subtype_and_supertype">Subranged
  57. Conversion Direction, Subtype and Supertype</a></span></dt>
  58. </dl></dd>
  59. <dt><span class="section"><a href="boost_numericconversion/converter___function_object.html">converter&lt;&gt;
  60. function object</a></span></dt>
  61. <dd><dl>
  62. <dt><span class="section"><a href="boost_numericconversion/converter___function_object.html#boost_numericconversion.converter___function_object.synopsis">Synopsis</a></span></dt>
  63. <dt><span class="section"><a href="boost_numericconversion/converter___function_object.html#boost_numericconversion.converter___function_object.template_parameters">Template
  64. parameters</a></span></dt>
  65. <dt><span class="section"><a href="boost_numericconversion/converter___function_object.html#boost_numericconversion.converter___function_object.member_functions">Member
  66. functions</a></span></dt>
  67. <dt><span class="section"><a href="boost_numericconversion/converter___function_object.html#boost_numericconversion.converter___function_object.range_checking_logic">Range
  68. Checking Logic</a></span></dt>
  69. <dt><span class="section"><a href="boost_numericconversion/converter___function_object.html#boost_numericconversion.converter___function_object.examples">Examples</a></span></dt>
  70. </dl></dd>
  71. <dt><span class="section"><a href="boost_numericconversion/type_requirements_and_user_defined_types_support.html">Type
  72. Requirements and User-defined-types support</a></span></dt>
  73. <dd><dl>
  74. <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.type_requirements">Type
  75. Requirements</a></span></dt>
  76. <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.udt_s_special_semantics">UDT's
  77. special semantics</a></span></dt>
  78. <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
  79. Policies</a></span></dt>
  80. <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
  81. with numeric_cast</a></span></dt>
  82. </dl></dd>
  83. <dt><span class="section"><a href="boost_numericconversion/bounds___traits_class.html">bounds&lt;&gt;
  84. traits class</a></span></dt>
  85. <dd><dl>
  86. <dt><span class="section"><a href="boost_numericconversion/bounds___traits_class.html#boost_numericconversion.bounds___traits_class.introduction">Introduction</a></span></dt>
  87. <dt><span class="section"><a href="boost_numericconversion/bounds___traits_class.html#boost_numericconversion.bounds___traits_class.traits_class_bounds_n_">traits
  88. class bounds&lt;N&gt;</a></span></dt>
  89. <dt><span class="section"><a href="boost_numericconversion/bounds___traits_class.html#boost_numericconversion.bounds___traits_class.examples">Examples</a></span></dt>
  90. </dl></dd>
  91. <dt><span class="section"><a href="boost_numericconversion/conversion_traits___traits_class.html">conversion_traits&lt;&gt;
  92. traits class</a></span></dt>
  93. <dd><dl>
  94. <dt><span class="section"><a href="boost_numericconversion/conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types">Types</a></span></dt>
  95. <dt><span class="section"><a href="boost_numericconversion/conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.examples">Examples</a></span></dt>
  96. </dl></dd>
  97. <dt><span class="section"><a href="boost_numericconversion/numeric_converter_policy_classes.html">Numeric
  98. Converter Policy Classes</a></span></dt>
  99. <dd><dl>
  100. <dt><span class="section"><a href="boost_numericconversion/numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.enum_range_check_result">enum
  101. range_check_result</a></span></dt>
  102. <dt><span class="section"><a href="boost_numericconversion/numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_overflowhandler">Policy
  103. OverflowHandler</a></span></dt>
  104. <dt><span class="section"><a href="boost_numericconversion/numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_float2introunder">Policy
  105. Float2IntRounder</a></span></dt>
  106. <dt><span class="section"><a href="boost_numericconversion/numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_rawconverter">Policy
  107. RawConverter</a></span></dt>
  108. <dt><span class="section"><a href="boost_numericconversion/numeric_converter_policy_classes.html#boost_numericconversion.numeric_converter_policy_classes.policy_userrangechecker">Policy
  109. UserRangeChecker</a></span></dt>
  110. </dl></dd>
  111. <dt><span class="section"><a href="boost_numericconversion/improved_numeric_cast__.html">Improved
  112. numeric_cast&lt;&gt;</a></span></dt>
  113. <dd><dl>
  114. <dt><span class="section"><a href="boost_numericconversion/improved_numeric_cast__.html#boost_numericconversion.improved_numeric_cast__.introduction">Introduction</a></span></dt>
  115. <dt><span class="section"><a href="boost_numericconversion/improved_numeric_cast__.html#boost_numericconversion.improved_numeric_cast__.numeric_cast">numeric_cast</a></span></dt>
  116. <dt><span class="section"><a href="boost_numericconversion/improved_numeric_cast__.html#boost_numericconversion.improved_numeric_cast__.numeric_cast_traits">numeric_cast_traits</a></span></dt>
  117. <dt><span class="section"><a href="boost_numericconversion/improved_numeric_cast__.html#boost_numericconversion.improved_numeric_cast__.examples">Examples</a></span></dt>
  118. </dl></dd>
  119. <dt><span class="section"><a href="numeric_conversion/history_and_acknowledgments.html">History
  120. and Acknowledgments</a></span></dt>
  121. <dt><span class="section"><a href="numeric_conversion/bibliography.html">Bibliography</a></span></dt>
  122. </dl>
  123. </div>
  124. <div class="section">
  125. <div class="titlepage"><div><div><h2 class="title" style="clear: both">
  126. <a name="numeric_conversion.overview"></a><a class="link" href="index.html#numeric_conversion.overview" title="Overview">Overview</a>
  127. </h2></div></div></div>
  128. <p>
  129. The Boost Numeric Conversion library is a collection of tools to describe and
  130. perform conversions between values of different <a class="link" href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.numeric_types" title="Numeric Types">numeric
  131. types</a>.
  132. </p>
  133. <p>
  134. 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>
  135. 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>
  136. values for the <a class="link" href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.range_and_precision" title="Range and Precision">range</a>
  137. of a numeric type.
  138. </p>
  139. <p>
  140. 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
  141. classes</a> which describes the compile-time properties of a conversion
  142. 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>
  143. and <a class="link" href="boost_numericconversion/definitions.html#boost_numericconversion.definitions.numeric_types" title="Numeric Types">user-defined
  144. numeric types</a> can be used.
  145. </p>
  146. <p>
  147. A policy-based <a class="link" href="boost_numericconversion/converter___function_object.html" title="converter&lt;&gt; function object">converter</a>
  148. object which uses <code class="computeroutput"><span class="identifier">conversion_traits</span></code>
  149. to select an optimized implementation is supplied. Such implementation uses
  150. an optimal range checking code suitable for the source/target combination.
  151. </p>
  152. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  153. <li class="listitem">
  154. 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>
  155. policy.
  156. </li>
  157. <li class="listitem">
  158. For floating-point to integral conversions, the rounding mode can be selected
  159. 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>
  160. policy.
  161. </li>
  162. <li class="listitem">
  163. A custom low-level conversion routine (for UDTs for instance) can be passed
  164. 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>
  165. policy.
  166. </li>
  167. <li class="listitem">
  168. 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>
  169. policy.
  170. </li>
  171. </ul></div>
  172. </div>
  173. </div>
  174. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  175. <td align="left"><p><small>Last revised: December 10, 2019 at 00:22:19 GMT</small></p></td>
  176. <td align="right"><div class="copyright-footer"></div></td>
  177. </tr></table>
  178. <hr>
  179. <div class="spirit-nav"><a accesskey="n" href="boost_numericconversion/definitions.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a></div>
  180. </body>
  181. </html>