summaryrefslogtreecommitdiff
path: root/doc/html/boost_lexical_cast
diff options
context:
space:
mode:
authorChanho Park <chanho61.park@samsung.com>2014-12-11 18:55:56 +0900
committerChanho Park <chanho61.park@samsung.com>2014-12-11 18:55:56 +0900
commit08c1e93fa36a49f49325a07fe91ff92c964c2b6c (patch)
tree7a7053ceb8874b28ec4b868d4c49b500008a102e /doc/html/boost_lexical_cast
parentbb4dd8289b351fae6b55e303f189127a394a1edd (diff)
downloadboost-08c1e93fa36a49f49325a07fe91ff92c964c2b6c.tar.gz
boost-08c1e93fa36a49f49325a07fe91ff92c964c2b6c.tar.bz2
boost-08c1e93fa36a49f49325a07fe91ff92c964c2b6c.zip
Imported Upstream version 1.57.0upstream/1.57.0
Diffstat (limited to 'doc/html/boost_lexical_cast')
-rw-r--r--doc/html/boost_lexical_cast/changes.html78
-rw-r--r--doc/html/boost_lexical_cast/examples.html220
-rw-r--r--doc/html/boost_lexical_cast/frequently_asked_questions.html54
-rw-r--r--doc/html/boost_lexical_cast/performance.html3288
-rw-r--r--doc/html/boost_lexical_cast/synopsis.html120
5 files changed, 3672 insertions, 88 deletions
diff --git a/doc/html/boost_lexical_cast/changes.html b/doc/html/boost_lexical_cast/changes.html
index d29f1b7072..d6e74dc872 100644
--- a/doc/html/boost_lexical_cast/changes.html
+++ b/doc/html/boost_lexical_cast/changes.html
@@ -3,9 +3,9 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Changes</title>
<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
-<link rel="up" href="../boost_lexical_cast.html" title="Chapter&#160;15.&#160;Boost.Lexical_Cast 1.0">
+<link rel="up" href="../boost_lexical_cast.html" title="Chapter&#160;17.&#160;Boost.Lexical_Cast 1.0">
<link rel="prev" href="frequently_asked_questions.html" title="Frequently Asked Questions">
<link rel="next" href="performance.html" title="Performance">
</head>
@@ -26,16 +26,69 @@
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_lexical_cast.changes"></a><a class="link" href="changes.html" title="Changes">Changes</a>
</h2></div></div></div>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <span class="bold"><strong>boost 1.56.0 :</strong></span>
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
+ Added <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">conversion</span><span class="special">::</span><span class="identifier">try_lexical_convert</span></code> functions.
+ </li></ul></div>
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>boost 1.54.0 :</strong></span>
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
+ Fix some issues with <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int128_type</span></code>
+ and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint128_type</span></code> conversions. Notify
+ user at compile time if the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
+ are not specialized for 128bit types and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code>
+ can not make conversions.
+ </li></ul></div>
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>boost 1.54.0 :</strong></span>
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
+<li class="listitem">
+ Added code to convert <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int128_type</span></code>
+ and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint128_type</span></code> types (requires GCC
+ 4.7 or higher).
+ </li>
+<li class="listitem">
+ Conversions to pointers will now fail to compile, instead of throwing
+ at runtime.
+ </li>
+<li class="listitem">
+ Restored ability to get pointers to <code class="computeroutput"><span class="identifier">lexical_cast</span></code>
+ function (was broken in 1.53.0).
+ </li>
+</ul></div>
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>boost 1.53.0 :</strong></span>
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
+ Much better input and output streams detection for user defined types.
+ </li></ul></div>
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>boost 1.52.0 :</strong></span>
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
+<li class="listitem">
+ Restored compilation on MSVC-2003 (was broken in 1.51.0).
+ </li>
+<li class="listitem">
+ Added <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">CharType</span><span class="special">*</span>
+ <span class="identifier">chars</span><span class="special">,</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span><span class="special">)</span></code> function overload.
+ </li>
+</ul></div>
+ </li>
<li class="listitem">
<span class="bold"><strong>boost 1.51.0 :</strong></span>
- <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
Better performance, less memory usage for <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special">&lt;</span><span class="identifier">character_type</span><span class="special">,</span> <span class="identifier">N</span><span class="special">&gt;</span></code> and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">array</span><span class="special">&lt;</span><span class="identifier">character_type</span><span class="special">,</span> <span class="identifier">N</span><span class="special">&gt;</span></code> conversions.
</li></ul></div>
</li>
<li class="listitem">
<span class="bold"><strong>boost 1.50.0 :</strong></span>
- <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
<code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bad_lexical_cast</span></code> exception is now
globaly visible and can be catched even if code is compiled with
@@ -52,7 +105,7 @@
</li>
<li class="listitem">
<span class="bold"><strong>boost 1.49.0 :</strong></span>
- <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
Restored work with typedefed wchar_t (compilation flag /Zc:wchar_t-
for Visual Studio).
@@ -65,7 +118,7 @@
</li>
<li class="listitem">
<span class="bold"><strong>boost 1.48.0 :</strong></span>
- <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
Added code to work with Inf and NaN on any platform.
</li>
@@ -77,7 +130,7 @@
</li>
<li class="listitem">
<span class="bold"><strong>boost 1.47.0 :</strong></span>
- <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
Optimizations for "C" and other locales without number
grouping.
@@ -103,7 +156,7 @@
</li>
<li class="listitem">
<span class="bold"><strong>boost 1.34.0 :</strong></span>
- <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
Better performance for many combinations of Source and Target types.
For more details refer to Alexander Nasonovs article <a href="http://accu.org/index.php/journals/1375" target="_top">Fine
Tuning for lexical_cast, Overload #74, August 2006</a> <a href="http://www.accu.org/var/uploads/journals/overload74.pdf" target="_top">(PDF)</a>.
@@ -111,7 +164,7 @@
</li>
<li class="listitem">
<span class="bold"><strong>boost 1.33.0 :</strong></span>
- <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
Call-by-const reference for the parameters. This requires partial
specialization of class templates, so it doesn't work for MSVC 6,
@@ -125,7 +178,7 @@
</li>
<li class="listitem">
<span class="bold"><strong>Earlier :</strong></span>
- <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
The previous version of lexical_cast used the default stream precision
for reading and writing floating-point numbers. For numerics that
@@ -167,7 +220,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2005 Kevlin Henney<br>Copyright &#169; 2006-2010 Alexander Nasonov<br>Copyright &#169; 2011, 2012 Antony Polukhin<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2005 Kevlin Henney<br>Copyright &#169; 2006-2010 Alexander Nasonov<br>Copyright &#169; 2011-2014 Antony
+ Polukhin<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/doc/html/boost_lexical_cast/examples.html b/doc/html/boost_lexical_cast/examples.html
index f2eee3efc1..d8d8790eeb 100644
--- a/doc/html/boost_lexical_cast/examples.html
+++ b/doc/html/boost_lexical_cast/examples.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Examples</title>
<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
-<link rel="up" href="../boost_lexical_cast.html" title="Chapter&#160;15.&#160;Boost.Lexical_Cast 1.0">
-<link rel="prev" href="../boost_lexical_cast.html" title="Chapter&#160;15.&#160;Boost.Lexical_Cast 1.0">
+<link rel="up" href="../boost_lexical_cast.html" title="Chapter&#160;17.&#160;Boost.Lexical_Cast 1.0">
+<link rel="prev" href="../boost_lexical_cast.html" title="Chapter&#160;17.&#160;Boost.Lexical_Cast 1.0">
<link rel="next" href="synopsis.html" title="Synopsis">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -26,33 +26,68 @@
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_lexical_cast.examples"></a><a class="link" href="examples.html" title="Examples">Examples</a>
</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="examples.html#boost_lexical_cast.examples.strings_to_numbers_conversion">Strings
+ to numbers conversion</a></span></dt>
+<dt><span class="section"><a href="examples.html#boost_lexical_cast.examples.numbers_to_strings_conversion">Numbers
+ to strings conversion</a></span></dt>
+<dt><span class="section"><a href="examples.html#boost_lexical_cast.examples.converting_to_string_without_dynamic_memory_allocation">Converting
+ to string without dynamic memory allocation</a></span></dt>
+<dt><span class="section"><a href="examples.html#boost_lexical_cast.examples.converting_part_of_the_string">Converting
+ part of the string</a></span></dt>
+<dt><span class="section"><a href="examples.html#boost_lexical_cast.examples.generic_programming__boost_fusion_">Generic
+ programming (Boost.Fusion)</a></span></dt>
+<dt><span class="section"><a href="examples.html#boost_lexical_cast.examples.generic_programming__boost_variant_">Generic
+ programming (Boost.Variant)</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_lexical_cast.examples.strings_to_numbers_conversion"></a><a class="link" href="examples.html#boost_lexical_cast.examples.strings_to_numbers_conversion" title="Strings to numbers conversion">Strings
+ to numbers conversion</a>
+</h3></div></div></div>
+<p>
+ The following example treats command line arguments as a sequence of numeric
+ data
+ </p>
<p>
- The following example treats command line arguments as a sequence of numeric
- data:
</p>
-<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">argv</span><span class="special">[])</span>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">lexical_cast</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="comment">/*argc*/</span><span class="special">,</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">argv</span><span class="special">[])</span>
<span class="special">{</span>
<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special">;</span>
<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">bad_lexical_cast</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">&gt;</span> <span class="identifier">args</span><span class="special">;</span>
- <span class="keyword">while</span><span class="special">(*++</span><span class="identifier">argv</span><span class="special">)</span>
+ <span class="keyword">while</span> <span class="special">(*++</span><span class="identifier">argv</span><span class="special">)</span>
<span class="special">{</span>
<span class="keyword">try</span>
<span class="special">{</span>
<span class="identifier">args</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">&gt;(*</span><span class="identifier">argv</span><span class="special">));</span>
<span class="special">}</span>
- <span class="keyword">catch</span><span class="special">(</span><span class="identifier">bad_lexical_cast</span> <span class="special">&amp;)</span>
+ <span class="keyword">catch</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">bad_lexical_cast</span> <span class="special">&amp;)</span>
<span class="special">{</span>
<span class="identifier">args</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">0</span><span class="special">);</span>
<span class="special">}</span>
<span class="special">}</span>
- <span class="special">...</span>
+
+ <span class="comment">// ...</span>
<span class="special">}</span>
</pre>
<p>
- The following example uses numeric data in a string expression:
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_lexical_cast.examples.numbers_to_strings_conversion"></a><a class="link" href="examples.html#boost_lexical_cast.examples.numbers_to_strings_conversion" title="Numbers to strings conversion">Numbers
+ to strings conversion</a>
+</h3></div></div></div>
+<p>
+ The following example uses numeric data in a string expression:
+ </p>
+<p>
</p>
<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">log_message</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&amp;);</span>
@@ -62,21 +97,168 @@
<span class="special">}</span>
</pre>
<p>
- Following example converts some number and puts it to file:
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_lexical_cast.examples.converting_to_string_without_dynamic_memory_allocation"></a><a class="link" href="examples.html#boost_lexical_cast.examples.converting_to_string_without_dynamic_memory_allocation" title="Converting to string without dynamic memory allocation">Converting
+ to string without dynamic memory allocation</a>
+</h3></div></div></div>
+<p>
+ The following example converts some number and puts it to file:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">number_to_file</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">number</span><span class="special">,</span> <span class="identifier">FILE</span><span class="special">*</span> <span class="identifier">file</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">array</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">,</span> <span class="number">50</span><span class="special">&gt;</span> <span class="identifier">buf_t</span><span class="special">;</span> <span class="comment">// You can use std::array if your compiler supports it</span>
+ <span class="identifier">buf_t</span> <span class="identifier">buffer</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="identifier">buf_t</span><span class="special">&gt;(</span><span class="identifier">number</span><span class="special">);</span> <span class="comment">// No dynamic memory allocation</span>
+ <span class="identifier">fputs</span><span class="special">(</span><span class="identifier">buffer</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">file</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_lexical_cast.examples.converting_part_of_the_string"></a><a class="link" href="examples.html#boost_lexical_cast.examples.converting_part_of_the_string" title="Converting part of the string">Converting
+ part of the string</a>
+</h3></div></div></div>
+<p>
+ The following example takes part of the string and converts it to <code class="computeroutput"><span class="keyword">int</span></code>:
+ </p>
+<p>
</p>
-<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span>
-<span class="identifier">FILE</span><span class="special">*</span> <span class="identifier">file</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">array</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">,</span> <span class="number">50</span><span class="special">&gt;</span> <span class="identifier">buf_t</span><span class="special">;</span> <span class="comment">// You can use std::array if your compiler supports it</span>
-<span class="identifier">buf_t</span> <span class="identifier">buffer</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="identifier">buf_t</span><span class="special">&gt;(</span><span class="identifier">i</span><span class="special">);</span> <span class="comment">// No dynamic memory allocation</span>
-<span class="identifier">puts</span><span class="special">(</span><span class="identifier">buffer</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">file</span><span class="special">);</span>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">convert_strings_part</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">pos</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</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">lexical_cast</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">data</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">pos</span><span class="special">,</span> <span class="identifier">n</span><span class="special">);</span>
+<span class="special">}</span>
</pre>
<p>
- </p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_lexical_cast.examples.generic_programming__boost_fusion_"></a><a class="link" href="examples.html#boost_lexical_cast.examples.generic_programming__boost_fusion_" title="Generic programming (Boost.Fusion)">Generic
+ programming (Boost.Fusion)</a>
+</h3></div></div></div>
+<p>
+ In this example we'll make a <code class="computeroutput"><span class="identifier">stringize</span></code>
+ method that accepts a sequence, converts each element of the sequence into
+ string and appends that string to the result.
+ </p>
+<p>
+ Example is based on the example from the <a href="http://www.packtpub.com/boost-cplusplus-application-development-cookbook/book" target="_top">Boost
+ C++ Application Development Cookbook</a> by Antony Polukhin, ISBN 9781849514880.
+ </p>
+<p>
+ Step 1: Making a functor that converts any type to a string and remembers
+ result:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">lexical_cast</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">struct</span> <span class="identifier">stringize_functor</span> <span class="special">{</span>
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&amp;</span> <span class="identifier">result</span><span class="special">;</span>
+
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">explicit</span> <span class="identifier">stringize_functor</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&amp;</span> <span class="identifier">res</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">result</span><span class="special">(</span><span class="identifier">res</span><span class="special">)</span>
+ <span class="special">{}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span>
+ <span class="identifier">result</span> <span class="special">+=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;(</span><span class="identifier">v</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<p>
+ Step 2: Applying <code class="computeroutput"><span class="identifier">stringize_functor</span></code>
+ to each element in sequence:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">for_each</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Sequence</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">stringize</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Sequence</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">result</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">seq</span><span class="special">,</span> <span class="identifier">stringize_functor</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+ <span class="keyword">return</span> <span class="identifier">result</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ Step 3: Using the <code class="computeroutput"><span class="identifier">stringize</span></code>
+ with different types:
+ </p>
+<p>
+</p>
+<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">fusion</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tuple</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">decim</span><span class="special">(</span><span class="char">'-'</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="char">'e'</span><span class="special">,</span> <span class="number">5</span><span class="special">);</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">stringize</span><span class="special">(</span><span class="identifier">decim</span><span class="special">)</span> <span class="special">==</span> <span class="string">"-10e5"</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;</span> <span class="identifier">value_and_type</span><span class="special">(</span><span class="number">270</span><span class="special">,</span> <span class="string">"Kelvin"</span><span class="special">);</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">stringize</span><span class="special">(</span><span class="identifier">value_and_type</span><span class="special">)</span> <span class="special">==</span> <span class="string">"270Kelvin"</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_lexical_cast.examples.generic_programming__boost_variant_"></a><a class="link" href="examples.html#boost_lexical_cast.examples.generic_programming__boost_variant_" title="Generic programming (Boost.Variant)">Generic
+ programming (Boost.Variant)</a>
+</h3></div></div></div>
+<p>
+ In this example we'll make a <code class="computeroutput"><span class="identifier">to_long_double</span></code>
+ method that converts value of the Boost.Variant to <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">double</span></code>.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">lexical_cast</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">variant</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cassert</span><span class="special">&gt;</span>
+
+<span class="keyword">struct</span> <span class="identifier">to_long_double_functor</span><span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_visitor</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;</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">&gt;</span>
+ <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span>
+ <span class="comment">// Lexical cast has many optimizations including optimizations for situations that usually </span>
+ <span class="comment">// occur in generic programming, like std::string to std::string or arithmetic type to arithmetic type conversion. </span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="keyword">long</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="special">};</span>
+
+<span class="comment">// Throws `boost::bad_lexical_cast` if value of the variant is not convertible to `long double`</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Variant</span><span class="special">&gt;</span>
+<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">to_long_double</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Variant</span><span class="special">&amp;</span> <span class="identifier">v</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">apply_visitor</span><span class="special">(</span><span class="identifier">to_long_double_functor</span><span class="special">(),</span> <span class="identifier">v</span><span class="special">);</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">int</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;</span> <span class="identifier">v1</span><span class="special">(</span><span class="char">'0'</span><span class="special">),</span> <span class="identifier">v2</span><span class="special">(</span><span class="string">"10.0001"</span><span class="special">),</span> <span class="identifier">v3</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
+
+ <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">=</span> <span class="identifier">to_long_double</span><span class="special">(</span><span class="identifier">v1</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">to_long_double</span><span class="special">(</span><span class="identifier">v2</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">to_long_double</span><span class="special">(</span><span class="identifier">v3</span><span class="special">);</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">sum</span> <span class="special">&gt;</span> <span class="number">11</span> <span class="special">&amp;&amp;</span> <span class="identifier">sum</span> <span class="special">&lt;</span> <span class="number">11.1</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2005 Kevlin Henney<br>Copyright &#169; 2006-2010 Alexander Nasonov<br>Copyright &#169; 2011, 2012 Antony Polukhin<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2005 Kevlin Henney<br>Copyright &#169; 2006-2010 Alexander Nasonov<br>Copyright &#169; 2011-2014 Antony
+ Polukhin<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/doc/html/boost_lexical_cast/frequently_asked_questions.html b/doc/html/boost_lexical_cast/frequently_asked_questions.html
index 83d560ccf1..681b9a0727 100644
--- a/doc/html/boost_lexical_cast/frequently_asked_questions.html
+++ b/doc/html/boost_lexical_cast/frequently_asked_questions.html
@@ -3,9 +3,9 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Frequently Asked Questions</title>
<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
-<link rel="up" href="../boost_lexical_cast.html" title="Chapter&#160;15.&#160;Boost.Lexical_Cast 1.0">
+<link rel="up" href="../boost_lexical_cast.html" title="Chapter&#160;17.&#160;Boost.Lexical_Cast 1.0">
<link rel="prev" href="synopsis.html" title="Synopsis">
<link rel="next" href="changes.html" title="Changes">
</head>
@@ -27,9 +27,9 @@
<a name="boost_lexical_cast.frequently_asked_questions"></a><a class="link" href="frequently_asked_questions.html" title="Frequently Asked Questions">Frequently
Asked Questions</a>
</h2></div></div></div>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<span class="bold"><strong>Question:</strong></span> Why does <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="identifier">int8_t</span><span class="special">&gt;(</span><span class="string">"127"</span><span class="special">)</span></code> throw <code class="computeroutput"><span class="identifier">bad_lexical_cast</span></code>?
- <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
<span class="bold"><strong>Answer:</strong></span> The type <code class="computeroutput"><span class="identifier">int8_t</span></code>
is a <code class="computeroutput"><span class="keyword">typedef</span></code> to <code class="computeroutput"><span class="keyword">char</span></code> or <code class="computeroutput"><span class="keyword">signed</span>
<span class="keyword">char</span></code>. Lexical conversion to
@@ -41,10 +41,10 @@
</li></ul></div>
</li></ul></div>
<pre class="programlisting"></pre>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<span class="bold"><strong>Question:</strong></span> Why does <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">char</span><span class="special">&gt;(</span><span class="string">"127"</span><span class="special">)</span></code>
throw <code class="computeroutput"><span class="identifier">bad_lexical_cast</span></code>?
- <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
<span class="bold"><strong>Answer:</strong></span> Lexical conversion to any
char type is simply reading a byte from source. But since the source
has more than one byte, the exception is thrown. Please use other
@@ -54,24 +54,24 @@
</li></ul></div>
</li></ul></div>
<pre class="programlisting"></pre>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<span class="bold"><strong>Question:</strong></span> What does <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;</span></code> of an <code class="computeroutput"><span class="identifier">int8_t</span></code>
or <code class="computeroutput"><span class="identifier">uint8_t</span></code> not do what
I expect?
- <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
<span class="bold"><strong>Answer:</strong></span> As above, note that int8_t
and uint8_t are actually chars and are formatted as such. To avoid
this, cast to an integer type first: <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;(</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">n</span><span class="special">));</span></code>
</li></ul></div>
</li></ul></div>
<pre class="programlisting"></pre>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<span class="bold"><strong>Question:</strong></span> The implementation always resets
the <code class="computeroutput"><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">skipws</span></code> flag of an underlying stream object.
It breaks my <code class="computeroutput"><span class="keyword">operator</span><span class="special">&gt;&gt;</span></code>
that works only in presence of this flag. Can you remove code that resets
the flag?
- <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
<span class="bold"><strong>Answer:</strong></span> May be in a future version.
There is no requirement in <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1973.html" target="_top">Lexical
Conversion Library Proposal for TR2, N1973 by Kevlin Henney and Beman
@@ -79,14 +79,15 @@
Conversion Library Proposal for TR2, N1973</a> is not yet accepted
by the committee. By the way, it's a great opportunity to make your
<code class="computeroutput"><span class="keyword">operator</span><span class="special">&gt;&gt;</span></code>
- conform to the standard. Read a good C++ book, study <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">sentry</span></code> and <a href="../../../libs/io/doc/ios_state.html" target="_top"><code class="computeroutput"><span class="identifier">ios_state_saver</span></code></a>.
+ more general. Read a good C++ book, study <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">sentry</span></code>
+ and <a href="../../../libs/io/doc/ios_state.html" target="_top"><code class="computeroutput"><span class="identifier">ios_state_saver</span></code></a>.
</li></ul></div>
</li></ul></div>
<pre class="programlisting"></pre>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<span class="bold"><strong>Question:</strong></span> Why <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">&gt;(</span><span class="string">"-1"</span><span class="special">);</span></code>
does not throw, but outputs 4294967295?
- <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
<span class="bold"><strong>Answer:</strong></span> <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code>
has the behavior of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span></code>,
which uses <code class="computeroutput"><span class="identifier">num_get</span></code>
@@ -100,10 +101,10 @@
</li></ul></div>
</li></ul></div>
<pre class="programlisting"></pre>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<span class="bold"><strong>Question:</strong></span> Why <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">L</span><span class="char">'A'</span><span class="special">);</span></code> outputs
65 and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="keyword">wchar_t</span><span class="special">&gt;(</span><span class="identifier">L</span><span class="string">"65"</span><span class="special">);</span></code> does not throw?
- <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
<span class="bold"><strong>Answer:</strong></span> If you are using an old
version of Visual Studio or compile code with /Zc:wchar_t- flag,
<code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code> sees single <code class="computeroutput"><span class="keyword">wchar_t</span></code> character as <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">short</span></code>.
@@ -112,9 +113,9 @@
</li></ul></div>
</li></ul></div>
<pre class="programlisting"></pre>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<span class="bold"><strong>Question:</strong></span> Why <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="string">"-1.#IND"</span><span class="special">);</span></code> throws <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bad_lexical_cast</span></code>?
- <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
<span class="bold"><strong>Answer:</strong></span> <code class="computeroutput"><span class="string">"-1.#IND"</span></code>
is a compiler extension, that violates standard. You shall input
<code class="computeroutput"><span class="string">"-nan"</span></code>, <code class="computeroutput"><span class="string">"nan"</span></code>, <code class="computeroutput"><span class="string">"inf"</span></code>
@@ -125,22 +126,25 @@
</li></ul></div>
</li></ul></div>
<pre class="programlisting"></pre>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<span class="bold"><strong>Question:</strong></span> What is the fastest way to convert
a non zero terminated string or a substring using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code>?
- <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
<span class="bold"><strong>Answer:</strong></span> Use <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_range</span></code>
- for conversion. For example, if you whant to convert to <code class="computeroutput"><span class="keyword">int</span></code> two characters from a string
- <code class="computeroutput"><span class="identifier">str</span></code>, you shall write
- <code class="computeroutput"><span class="identifier">lexacal_cast</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">make_iterator_range</span><span class="special">(</span><span class="identifier">str</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">(),</span>
- <span class="identifier">str</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">()</span>
- <span class="special">+</span> <span class="number">2</span><span class="special">));</span></code>.
+ for conversion or <code class="computeroutput"><span class="identifier">lexical_cast</span></code>
+ overload with two parameters. For example, if you whant to convert
+ to <code class="computeroutput"><span class="keyword">int</span></code> two characters
+ from a string <code class="computeroutput"><span class="identifier">str</span></code>,
+ you shall write <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">make_iterator_range</span><span class="special">(</span><span class="identifier">str</span><span class="special">.</span><span class="identifier">data</span><span class="special">(),</span> <span class="identifier">str</span><span class="special">.</span><span class="identifier">data</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">));</span></code>
+ or <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">str</span><span class="special">.</span><span class="identifier">data</span><span class="special">(),</span>
+ <span class="number">2</span><span class="special">);</span></code>.
</li></ul></div>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2005 Kevlin Henney<br>Copyright &#169; 2006-2010 Alexander Nasonov<br>Copyright &#169; 2011, 2012 Antony Polukhin<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2005 Kevlin Henney<br>Copyright &#169; 2006-2010 Alexander Nasonov<br>Copyright &#169; 2011-2014 Antony
+ Polukhin<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/doc/html/boost_lexical_cast/performance.html b/doc/html/boost_lexical_cast/performance.html
index a55a83c2fc..6954f90d70 100644
--- a/doc/html/boost_lexical_cast/performance.html
+++ b/doc/html/boost_lexical_cast/performance.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Performance</title>
<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
-<link rel="up" href="../boost_lexical_cast.html" title="Chapter&#160;15.&#160;Boost.Lexical_Cast 1.0">
+<link rel="up" href="../boost_lexical_cast.html" title="Chapter&#160;17.&#160;Boost.Lexical_Cast 1.0">
<link rel="prev" href="changes.html" title="Changes">
-<link rel="next" href="../move.html" title="Chapter&#160;16.&#160;Boost.Move">
+<link rel="next" href="../lockfree.html" title="Chapter&#160;18.&#160;Boost.Lockfree">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,13 +20,13 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="changes.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_lexical_cast.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../move.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="changes.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_lexical_cast.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../lockfree.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_lexical_cast.performance"></a><a class="link" href="performance.html" title="Performance">Performance</a>
</h2></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="performance.html#boost_lexical_cast.performance.tests_description">Tests
description</a></span></dt>
<dt><span class="section"><a href="performance.html#boost_lexical_cast.performance.clang_version_3_0__tags_release_30_final_">Clang
@@ -37,6 +37,8 @@
C++ version 4.5.3</a></span></dt>
<dt><span class="section"><a href="performance.html#boost_lexical_cast.performance.gnu_c___version_4_4_7">GNU
C++ version 4.4.7</a></span></dt>
+<dt><span class="section"><a href="performance.html#boost_lexical_cast.performance.microsoft_visual_c___version_11_0">Microsoft
+ Visual C++ version 11.0</a></span></dt>
</dl></div>
<p>
In most cases <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code> is faster than <code class="computeroutput"><span class="identifier">scanf</span></code>, <code class="computeroutput"><span class="identifier">printf</span></code>,
@@ -53,7 +55,7 @@
of the following code blocks:
</p>
<div class="table">
-<a name="boost_lexical_cast.performance.tests_description.legend"></a><p class="title"><b>Table&#160;15.1.&#160;Tests source code</b></p>
+<a name="boost_lexical_cast.performance.tests_description.legend"></a><p class="title"><b>Table&#160;17.1.&#160;Tests source code</b></p>
<div class="table-contents"><table class="table" summary="Tests source code">
<colgroup>
<col>
@@ -159,7 +161,7 @@
version 3.0 (tags/RELEASE_30/final)</a>
</h3></div></div></div>
<div class="table">
-<a name="boost_lexical_cast.performance.clang_version_3_0__tags_release_30_final_.id"></a><p class="title"><b>Table&#160;15.2.&#160;Performance Table ( Clang version 3.0 (tags/RELEASE_30/final))</b></p>
+<a name="boost_lexical_cast.performance.clang_version_3_0__tags_release_30_final_.id"></a><p class="title"><b>Table&#160;17.2.&#160;Performance Table ( Clang version 3.0 (tags/RELEASE_30/final))</b></p>
<div class="table-contents"><table class="table" summary="Performance Table ( Clang version 3.0 (tags/RELEASE_30/final))">
<colgroup>
<col>
@@ -3420,7 +3422,7 @@
C++ version 4.6.3</a>
</h3></div></div></div>
<div class="table">
-<a name="boost_lexical_cast.performance.gnu_c___version_4_6_3.id"></a><p class="title"><b>Table&#160;15.3.&#160;Performance Table ( GNU C++ version 4.6.3)</b></p>
+<a name="boost_lexical_cast.performance.gnu_c___version_4_6_3.id"></a><p class="title"><b>Table&#160;17.3.&#160;Performance Table ( GNU C++ version 4.6.3)</b></p>
<div class="table-contents"><table class="table" summary="Performance Table ( GNU C++ version 4.6.3)">
<colgroup>
<col>
@@ -6681,7 +6683,7 @@
C++ version 4.5.3</a>
</h3></div></div></div>
<div class="table">
-<a name="boost_lexical_cast.performance.gnu_c___version_4_5_3.id"></a><p class="title"><b>Table&#160;15.4.&#160;Performance Table ( GNU C++ version 4.5.3)</b></p>
+<a name="boost_lexical_cast.performance.gnu_c___version_4_5_3.id"></a><p class="title"><b>Table&#160;17.4.&#160;Performance Table ( GNU C++ version 4.5.3)</b></p>
<div class="table-contents"><table class="table" summary="Performance Table ( GNU C++ version 4.5.3)">
<colgroup>
<col>
@@ -9942,7 +9944,7 @@
C++ version 4.4.7</a>
</h3></div></div></div>
<div class="table">
-<a name="boost_lexical_cast.performance.gnu_c___version_4_4_7.id"></a><p class="title"><b>Table&#160;15.5.&#160;Performance Table ( GNU C++ version 4.4.7)</b></p>
+<a name="boost_lexical_cast.performance.gnu_c___version_4_4_7.id"></a><p class="title"><b>Table&#160;17.5.&#160;Performance Table ( GNU C++ version 4.4.7)</b></p>
<div class="table-contents"><table class="table" summary="Performance Table ( GNU C++ version 4.4.7)">
<colgroup>
<col>
@@ -13197,10 +13199,3272 @@
</div>
<br class="table-break">
</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_lexical_cast.performance.microsoft_visual_c___version_11_0"></a><a class="link" href="performance.html#boost_lexical_cast.performance.microsoft_visual_c___version_11_0" title="Microsoft Visual C++ version 11.0">Microsoft
+ Visual C++ version 11.0</a>
+</h3></div></div></div>
+<div class="table">
+<a name="boost_lexical_cast.performance.microsoft_visual_c___version_11_0.id"></a><p class="title"><b>Table&#160;17.6.&#160;Performance Table ( Microsoft Visual C++ version 11.0)</b></p>
+<div class="table-contents"><table class="table" summary="Performance Table ( Microsoft Visual C++ version 11.0)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ From-&gt;To
+ </p>
+ </th>
+<th>
+ <p>
+ lexical_cast
+ </p>
+ </th>
+<th>
+ <p>
+ std::stringstream with construction
+ </p>
+ </th>
+<th>
+ <p>
+ std::stringstream without construction
+ </p>
+ </th>
+<th>
+ <p>
+ scanf/printf
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ string-&gt;char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 43
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 7
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;signed char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 43
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;unsigned char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 42
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 71
+ </p>
+ </td>
+<td>
+ <p>
+ 49
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;short
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;long int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 71
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;long long
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 71
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;unsigned int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 46
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;unsigned short
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 71
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;unsigned long int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 70
+ </p>
+ </td>
+<td>
+ <p>
+ 45
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;unsigned long long
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 70
+ </p>
+ </td>
+<td>
+ <p>
+ 46
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;float
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>14</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 586
+ </p>
+ </td>
+<td>
+ <p>
+ 559
+ </p>
+ </td>
+<td>
+ <p>
+ 37
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;double
+ </p>
+ </td>
+<td>
+ <p>
+ 601
+ </p>
+ </td>
+<td>
+ <p>
+ 618
+ </p>
+ </td>
+<td>
+ <p>
+ 592
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>37</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;long double
+ </p>
+ </td>
+<td>
+ <p>
+ 629
+ </p>
+ </td>
+<td>
+ <p>
+ 645
+ </p>
+ </td>
+<td>
+ <p>
+ 618
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>37</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;array&lt;char, 50&gt;
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 52
+ </p>
+ </td>
+<td>
+ <p>
+ 28
+ </p>
+ </td>
+<td>
+ <p>
+ 11
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 59
+ </p>
+ </td>
+<td>
+ <p>
+ 34
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;container::string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>2</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 54
+ </p>
+ </td>
+<td>
+ <p>
+ 31
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>2</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 50
+ </p>
+ </td>
+<td>
+ <p>
+ 24
+ </p>
+ </td>
+<td>
+ <p>
+ 9
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;signed char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>2</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 50
+ </p>
+ </td>
+<td>
+ <p>
+ 24
+ </p>
+ </td>
+<td>
+ <p>
+ 13
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ string-&gt;unsigned char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>2</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 50
+ </p>
+ </td>
+<td>
+ <p>
+ 24
+ </p>
+ </td>
+<td>
+ <p>
+ 13
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ int-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>9</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 86
+ </p>
+ </td>
+<td>
+ <p>
+ 59
+ </p>
+ </td>
+<td>
+ <p>
+ 13
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ short-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>9</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 86
+ </p>
+ </td>
+<td>
+ <p>
+ 59
+ </p>
+ </td>
+<td>
+ <p>
+ 13
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ long int-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>9</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 87
+ </p>
+ </td>
+<td>
+ <p>
+ 59
+ </p>
+ </td>
+<td>
+ <p>
+ 13
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ long long-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>9</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 88
+ </p>
+ </td>
+<td>
+ <p>
+ 62
+ </p>
+ </td>
+<td>
+ <p>
+ 13
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned int-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>9</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 87
+ </p>
+ </td>
+<td>
+ <p>
+ 60
+ </p>
+ </td>
+<td>
+ <p>
+ 13
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned short-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>9</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 91
+ </p>
+ </td>
+<td>
+ <p>
+ 63
+ </p>
+ </td>
+<td>
+ <p>
+ 13
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned long int-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>9</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 91
+ </p>
+ </td>
+<td>
+ <p>
+ 62
+ </p>
+ </td>
+<td>
+ <p>
+ 13
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned long long-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>9</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 88
+ </p>
+ </td>
+<td>
+ <p>
+ 60
+ </p>
+ </td>
+<td>
+ <p>
+ 13
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ float-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ 73
+ </p>
+ </td>
+<td>
+ <p>
+ 167
+ </p>
+ </td>
+<td>
+ <p>
+ 137
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>56</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ double-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ 77
+ </p>
+ </td>
+<td>
+ <p>
+ 176
+ </p>
+ </td>
+<td>
+ <p>
+ 144
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>64</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ long double-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ 79
+ </p>
+ </td>
+<td>
+ <p>
+ 175
+ </p>
+ </td>
+<td>
+ <p>
+ 143
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>63</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 43
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 7
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;signed char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 43
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;unsigned char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 44
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 70
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;short
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 48
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;long int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;long long
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 71
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;unsigned int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 46
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;unsigned short
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;unsigned long int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 70
+ </p>
+ </td>
+<td>
+ <p>
+ 46
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;unsigned long long
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 70
+ </p>
+ </td>
+<td>
+ <p>
+ 45
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;float
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>14</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 586
+ </p>
+ </td>
+<td>
+ <p>
+ 560
+ </p>
+ </td>
+<td>
+ <p>
+ 37
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;double
+ </p>
+ </td>
+<td>
+ <p>
+ 598
+ </p>
+ </td>
+<td>
+ <p>
+ 617
+ </p>
+ </td>
+<td>
+ <p>
+ 597
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>40</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;long double
+ </p>
+ </td>
+<td>
+ <p>
+ 635
+ </p>
+ </td>
+<td>
+ <p>
+ 653
+ </p>
+ </td>
+<td>
+ <p>
+ 622
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>37</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;array&lt;char, 50&gt;
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ 28
+ </p>
+ </td>
+<td>
+ <p>
+ 11
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 59
+ </p>
+ </td>
+<td>
+ <p>
+ 35
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char*-&gt;container::string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>3</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 54
+ </p>
+ </td>
+<td>
+ <p>
+ 30
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 41
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 7
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;signed char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 42
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;unsigned char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 41
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;short
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;long int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;long long
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 11
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;unsigned int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 70
+ </p>
+ </td>
+<td>
+ <p>
+ 46
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;unsigned short
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 48
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;unsigned long int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 71
+ </p>
+ </td>
+<td>
+ <p>
+ 46
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;unsigned long long
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 70
+ </p>
+ </td>
+<td>
+ <p>
+ 45
+ </p>
+ </td>
+<td>
+ <p>
+ 11
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;float
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>14</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 589
+ </p>
+ </td>
+<td>
+ <p>
+ 564
+ </p>
+ </td>
+<td>
+ <p>
+ 38
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;double
+ </p>
+ </td>
+<td>
+ <p>
+ 601
+ </p>
+ </td>
+<td>
+ <p>
+ 615
+ </p>
+ </td>
+<td>
+ <p>
+ 588
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>37</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;long double
+ </p>
+ </td>
+<td>
+ <p>
+ 628
+ </p>
+ </td>
+<td>
+ <p>
+ 644
+ </p>
+ </td>
+<td>
+ <p>
+ 620
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>38</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;array&lt;char, 50&gt;
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 54
+ </p>
+ </td>
+<td>
+ <p>
+ 28
+ </p>
+ </td>
+<td>
+ <p>
+ 11
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>2</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 59
+ </p>
+ </td>
+<td>
+ <p>
+ 36
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ unsigned char*-&gt;container::string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>3</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 54
+ </p>
+ </td>
+<td>
+ <p>
+ 30
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 41
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 7
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;signed char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 43
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;unsigned char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 42
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 71
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;short
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 48
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;long int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 71
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;long long
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;unsigned int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 70
+ </p>
+ </td>
+<td>
+ <p>
+ 46
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;unsigned short
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;unsigned long int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 70
+ </p>
+ </td>
+<td>
+ <p>
+ 46
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;unsigned long long
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 70
+ </p>
+ </td>
+<td>
+ <p>
+ 46
+ </p>
+ </td>
+<td>
+ <p>
+ 11
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;float
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>14</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 586
+ </p>
+ </td>
+<td>
+ <p>
+ 562
+ </p>
+ </td>
+<td>
+ <p>
+ 37
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;double
+ </p>
+ </td>
+<td>
+ <p>
+ 603
+ </p>
+ </td>
+<td>
+ <p>
+ 615
+ </p>
+ </td>
+<td>
+ <p>
+ 589
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>37</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;long double
+ </p>
+ </td>
+<td>
+ <p>
+ 630
+ </p>
+ </td>
+<td>
+ <p>
+ 644
+ </p>
+ </td>
+<td>
+ <p>
+ 623
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>40</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;array&lt;char, 50&gt;
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 54
+ </p>
+ </td>
+<td>
+ <p>
+ 28
+ </p>
+ </td>
+<td>
+ <p>
+ 11
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>2</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 59
+ </p>
+ </td>
+<td>
+ <p>
+ 36
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ signed char*-&gt;container::string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>3</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 54
+ </p>
+ </td>
+<td>
+ <p>
+ 30
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 74
+ </p>
+ </td>
+<td>
+ <p>
+ 46
+ </p>
+ </td>
+<td>
+ <p>
+ 7
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;signed char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 75
+ </p>
+ </td>
+<td>
+ <p>
+ 46
+ </p>
+ </td>
+<td>
+ <p>
+ 8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;unsigned char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 74
+ </p>
+ </td>
+<td>
+ <p>
+ 46
+ </p>
+ </td>
+<td>
+ <p>
+ 8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 98
+ </p>
+ </td>
+<td>
+ <p>
+ 70
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;short
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 103
+ </p>
+ </td>
+<td>
+ <p>
+ 72
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;long int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 111
+ </p>
+ </td>
+<td>
+ <p>
+ 71
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;long long
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 98
+ </p>
+ </td>
+<td>
+ <p>
+ 70
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;unsigned int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>7</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 103
+ </p>
+ </td>
+<td>
+ <p>
+ 76
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;unsigned short
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 104
+ </p>
+ </td>
+<td>
+ <p>
+ 75
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;unsigned long int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>7</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 104
+ </p>
+ </td>
+<td>
+ <p>
+ 71
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;unsigned long long
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 99
+ </p>
+ </td>
+<td>
+ <p>
+ 71
+ </p>
+ </td>
+<td>
+ <p>
+ 11
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;float
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>13</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 123
+ </p>
+ </td>
+<td>
+ <p>
+ 93
+ </p>
+ </td>
+<td>
+ <p>
+ 37
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;double
+ </p>
+ </td>
+<td>
+ <p>
+ 603
+ </p>
+ </td>
+<td>
+ <p>
+ 111
+ </p>
+ </td>
+<td>
+ <p>
+ 82
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>38</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;long double
+ </p>
+ </td>
+<td>
+ <p>
+ 629
+ </p>
+ </td>
+<td>
+ <p>
+ 116
+ </p>
+ </td>
+<td>
+ <p>
+ 83
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>38</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;array&lt;char, 50&gt;
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 82
+ </p>
+ </td>
+<td>
+ <p>
+ 52
+ </p>
+ </td>
+<td>
+ <p>
+ 11
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>2</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 83
+ </p>
+ </td>
+<td>
+ <p>
+ 56
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iterator_range&lt;char*&gt;-&gt;container::string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>2</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 81
+ </p>
+ </td>
+<td>
+ <p>
+ 53
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 41
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 7
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;signed char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 41
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;unsigned char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 41
+ </p>
+ </td>
+<td>
+ <p>
+ 17
+ </p>
+ </td>
+<td>
+ <p>
+ 8
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 73
+ </p>
+ </td>
+<td>
+ <p>
+ 46
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;short
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 73
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;long int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 75
+ </p>
+ </td>
+<td>
+ <p>
+ 48
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;long long
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 73
+ </p>
+ </td>
+<td>
+ <p>
+ 48
+ </p>
+ </td>
+<td>
+ <p>
+ 11
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;unsigned int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 73
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;unsigned short
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 74
+ </p>
+ </td>
+<td>
+ <p>
+ 50
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;unsigned long int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 71
+ </p>
+ </td>
+<td>
+ <p>
+ 46
+ </p>
+ </td>
+<td>
+ <p>
+ 10
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;unsigned long long
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>8</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 70
+ </p>
+ </td>
+<td>
+ <p>
+ 47
+ </p>
+ </td>
+<td>
+ <p>
+ 11
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;float
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>14</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 586
+ </p>
+ </td>
+<td>
+ <p>
+ 567
+ </p>
+ </td>
+<td>
+ <p>
+ 37
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;double
+ </p>
+ </td>
+<td>
+ <p>
+ 599
+ </p>
+ </td>
+<td>
+ <p>
+ 624
+ </p>
+ </td>
+<td>
+ <p>
+ 590
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>37</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;long double
+ </p>
+ </td>
+<td>
+ <p>
+ 632
+ </p>
+ </td>
+<td>
+ <p>
+ 643
+ </p>
+ </td>
+<td>
+ <p>
+ 618
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>37</strong></span> !!!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;array&lt;char, 50&gt;
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 52
+ </p>
+ </td>
+<td>
+ <p>
+ 28
+ </p>
+ </td>
+<td>
+ <p>
+ 11
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>2</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 59
+ </p>
+ </td>
+<td>
+ <p>
+ 34
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ array&lt;char, 50&gt;-&gt;container::string
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>3</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 55
+ </p>
+ </td>
+<td>
+ <p>
+ 30
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ int-&gt;int
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 105
+ </p>
+ </td>
+<td>
+ <p>
+ 79
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ float-&gt;double
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 226
+ </p>
+ </td>
+<td>
+ <p>
+ 188
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ char-&gt;signed char
+ </p>
+ </td>
+<td>
+ <p>
+ !!! <span class="bold"><strong>&lt;1</strong></span> !!!
+ </p>
+ </td>
+<td>
+ <p>
+ 40
+ </p>
+ </td>
+<td>
+ <p>
+ 16
+ </p>
+ </td>
+<td>
+ <p>
+ ---
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2005 Kevlin Henney<br>Copyright &#169; 2006-2010 Alexander Nasonov<br>Copyright &#169; 2011, 2012 Antony Polukhin<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2005 Kevlin Henney<br>Copyright &#169; 2006-2010 Alexander Nasonov<br>Copyright &#169; 2011-2014 Antony
+ Polukhin<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -13208,7 +16472,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="changes.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_lexical_cast.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../move.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="changes.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_lexical_cast.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../lockfree.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/doc/html/boost_lexical_cast/synopsis.html b/doc/html/boost_lexical_cast/synopsis.html
index 5508b3c6a8..4cfb2d7e98 100644
--- a/doc/html/boost_lexical_cast/synopsis.html
+++ b/doc/html/boost_lexical_cast/synopsis.html
@@ -3,9 +3,9 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Synopsis</title>
<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
-<link rel="up" href="../boost_lexical_cast.html" title="Chapter&#160;15.&#160;Boost.Lexical_Cast 1.0">
+<link rel="up" href="../boost_lexical_cast.html" title="Chapter&#160;17.&#160;Boost.Lexical_Cast 1.0">
<link rel="prev" href="examples.html" title="Examples">
<link rel="next" href="frequently_asked_questions.html" title="Frequently Asked Questions">
</head>
@@ -26,9 +26,10 @@
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_lexical_cast.synopsis"></a><a class="link" href="synopsis.html" title="Synopsis">Synopsis</a>
</h2></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="synopsis.html#boost_lexical_cast.synopsis.lexical_cast">lexical_cast</a></span></dt>
<dt><span class="section"><a href="synopsis.html#boost_lexical_cast.synopsis.bad_lexical_cast">bad_lexical_cast</a></span></dt>
+<dt><span class="section"><a href="synopsis.html#boost_lexical_cast.synopsis.try_lexical_convert">try_lexical_convert</a></span></dt>
</dl></div>
<p>
Library features defined in <a href="../../../boost/lexical_cast.hpp" target="_top">boost/lexical_cast.hpp</a>:
@@ -36,9 +37,23 @@
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span>
<span class="special">{</span>
<span class="keyword">class</span> <span class="identifier">bad_lexical_cast</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">,</span> <span class="keyword">typename</span> <span class="identifier">Source</span><span class="special">&gt;</span>
<span class="identifier">Target</span> <span class="identifier">lexical_cast</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Source</span><span class="special">&amp;</span> <span class="identifier">arg</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="identifier">Target</span> <span class="identifier">lexical_cast</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">AnyCharacterType</span><span class="special">*</span> <span class="identifier">chars</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span><span class="special">);</span>
+
+ <span class="keyword">namespace</span> <span class="identifier">conversion</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">,</span> <span class="keyword">typename</span> <span class="identifier">Source</span><span class="special">&gt;</span>
+ <span class="keyword">bool</span> <span class="identifier">try_lexical_convert</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Source</span><span class="special">&amp;</span> <span class="identifier">arg</span><span class="special">,</span> <span class="identifier">Target</span><span class="special">&amp;</span> <span class="identifier">result</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">AnyCharacterType</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Target</span><span class="special">&gt;</span>
+ <span class="keyword">bool</span> <span class="identifier">try_lexical_convert</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">AnyCharacterType</span><span class="special">*</span> <span class="identifier">chars</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span><span class="special">,</span> <span class="identifier">Target</span><span class="special">&amp;</span> <span class="identifier">result</span><span class="special">);</span>
+
+ <span class="special">}</span> <span class="comment">// namespace conversion</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
</pre>
<p>
</p>
@@ -61,9 +76,21 @@
exception is thrown.
</p>
<p>
- The requirements on the argument and result types are:
+</p>
+<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">&gt;</span>
+ <span class="identifier">Target</span> <span class="identifier">lexical_cast</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">AnyCharacterType</span><span class="special">*</span> <span class="identifier">chars</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span><span class="special">);</span>
+</pre>
+<p>
+ Takes an array of <code class="computeroutput"><span class="identifier">count</span></code> characters
+ as input parameter and streams them out as a Target object. If the conversion
+ is unsuccessful, a <code class="computeroutput"><span class="identifier">bad_lexical_cast</span></code>
+ exception is thrown. This call may be useful for processing nonzero terminated
+ array of characters or processing just some part of character array.
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<p>
+ The requirements on the argument and result types for both functions are:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Source is OutputStreamable, meaning that an <code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;&lt;</span></code> is defined that takes a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span></code> or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">wostream</span></code>
object on the left hand side and an instance of the argument type on
@@ -85,24 +112,23 @@
<p>
The character type of the underlying stream is assumed to be <code class="computeroutput"><span class="keyword">char</span></code> unless either the <code class="computeroutput"><span class="identifier">Source</span></code>
or the <code class="computeroutput"><span class="identifier">Target</span></code> requires wide-character
- streaming, in which case the underlying stream uses <code class="computeroutput"><span class="keyword">wchar_t</span></code>,
- <code class="computeroutput"><span class="identifier">char16_t</span></code> or <code class="computeroutput"><span class="identifier">char32_t</span></code>. Wide-character streaming is currently
- detected for:
+ streaming, in which case the underlying stream uses <code class="computeroutput"><span class="keyword">wchar_t</span></code>.
+ Following types also can use <code class="computeroutput"><span class="keyword">char16_t</span></code>
+ or <code class="computeroutput"><span class="keyword">char32_t</span></code> for wide-character
+ streaming:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
- Single character: <code class="computeroutput"><span class="keyword">wchar_t</span></code>,
- <code class="computeroutput"><span class="identifier">char16_t</span></code>, <code class="computeroutput"><span class="identifier">char32_t</span></code>
+ Single character: <code class="computeroutput"><span class="keyword">char16_t</span></code>,
+ <code class="computeroutput"><span class="keyword">char32_t</span></code>
</li>
<li class="listitem">
- Arrays of characters: <code class="computeroutput"><span class="keyword">wchar_t</span>
- <span class="special">*</span></code>, <code class="computeroutput"><span class="identifier">char16_t</span>
- <span class="special">*</span></code>, <code class="computeroutput"><span class="identifier">char32_t</span>
- <span class="special">*</span></code>, <code class="computeroutput"><span class="keyword">const</span>
- <span class="keyword">wchar_t</span> <span class="special">*</span></code>,
- <code class="computeroutput"><span class="keyword">const</span> <span class="identifier">char16_t</span>
+ Arrays of characters: <code class="computeroutput"><span class="keyword">char16_t</span>
+ <span class="special">*</span></code>, <code class="computeroutput"><span class="keyword">char32_t</span>
<span class="special">*</span></code>, <code class="computeroutput"><span class="keyword">const</span>
- <span class="identifier">char32_t</span> <span class="special">*</span></code>
+ <span class="keyword">char16_t</span> <span class="special">*</span></code>,
+ <code class="computeroutput"><span class="keyword">const</span> <span class="keyword">char32_t</span>
+ <span class="special">*</span></code>
</li>
<li class="listitem">
Strings: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span></code>, <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">containers</span><span class="special">::</span><span class="identifier">basic_string</span></code>
@@ -161,10 +187,64 @@
Exception used to indicate runtime lexical_cast failure.
</p>
</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_lexical_cast.synopsis.try_lexical_convert"></a><a class="link" href="synopsis.html#boost_lexical_cast.synopsis.try_lexical_convert" title="try_lexical_convert">try_lexical_convert</a>
+</h3></div></div></div>
+<p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code> remains the main interface
+ for lexical conversions. It must be used by default in most cases. However
+ some developers wish to make their own conversion functions, reusing all
+ the optimizations of the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code>.
+ That's where the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">conversion</span><span class="special">::</span><span class="identifier">try_lexical_convert</span></code> function steps in.
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">try_lexical_convert</span></code> returns
+ <code class="computeroutput"><span class="keyword">true</span></code> if conversion succeeded,
+ otherwise returns <code class="computeroutput"><span class="keyword">false</span></code>. If
+ conversion failed and <code class="computeroutput"><span class="keyword">false</span></code>
+ was returned, state of <code class="computeroutput"><span class="identifier">result</span></code>
+ output variable is undefined.
+ </p>
+<p>
+ Actually, <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code> is implemented using <code class="computeroutput"><span class="identifier">try_lexical_convert</span></code>:
+</p>
+<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">lexical_cast</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Source</span> <span class="special">&amp;</span><span class="identifier">arg</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">Target</span> <span class="identifier">result</span><span class="special">;</span>
+
+ <span class="keyword">if</span> <span class="special">(!</span><span class="identifier">conversion</span><span class="special">::</span><span class="identifier">try_lexical_convert</span><span class="special">(</span><span class="identifier">arg</span><span class="special">,</span> <span class="identifier">result</span><span class="special">))</span>
+ <span class="keyword">throw</span> <span class="identifier">bad_lexical_cast</span><span class="special">();</span>
+
+ <span class="keyword">return</span> <span class="identifier">result</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">try_lexical_convert</span></code> relaxes
+ the CopyConstructible and DefaultConstructible requirements for <code class="computeroutput"><span class="identifier">Target</span></code> type. Following requirements for
+ <code class="computeroutput"><span class="identifier">Target</span></code> and <code class="computeroutput"><span class="identifier">Source</span></code> remain:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Source must be OutputStreamable, meaning that an <code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;&lt;</span></code> is defined that takes a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span></code> or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">wostream</span></code>
+ object on the left hand side and an instance of the argument type on
+ the right.
+ </li>
+<li class="listitem">
+ Target must be InputStreamable, meaning that an <code class="computeroutput"><span class="keyword">operator</span><span class="special">&gt;&gt;</span></code> is defined that takes a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span></code> or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">wistream</span></code>
+ object on the left hand side and an instance of the result type on the
+ right.
+ </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 &#169; 2000-2005 Kevlin Henney<br>Copyright &#169; 2006-2010 Alexander Nasonov<br>Copyright &#169; 2011, 2012 Antony Polukhin<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2000-2005 Kevlin Henney<br>Copyright &#169; 2006-2010 Alexander Nasonov<br>Copyright &#169; 2011-2014 Antony
+ Polukhin<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>