Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r51301 - in sandbox/libs/move_semantics/doc/html: . boost move
From: igaztanaga_at_[hidden]
Date: 2009-02-17 15:35:36


Author: igaztanaga
Date: 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
New Revision: 51301
URL: http://svn.boost.org/trac/boost/changeset/51301

Log:
Added move_semantics library
Added:
   sandbox/libs/move_semantics/doc/html/BOOST_CONSTRUCT_FWD_REF.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/BOOST_ENABLE_MOVE_EMULATION.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/BOOST_RV_REF.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/
   sandbox/libs/move_semantics/doc/html/boost/back_move_insert_iterator.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/back_move_inserter.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/forward_constructor.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/front_move_insert_iterator.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/front_move_inserter.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/is_movable.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/make_move_iterator.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/move_backward.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/move_id151589.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/move_id151748.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/move_insert_iterator.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/move_inserter.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/move_iterator.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/uninitialized_copy_or_move.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/boost/uninitialized_move.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/index.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/move/
   sandbox/libs/move_semantics/doc/html/move/construct_forwarding.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/move/implementing_movable_classes.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/move/introduction.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/move/movable_only_classes.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/move/move_algorithms.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/move/move_inserters.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/move/move_iterator.html (contents, props changed)
   sandbox/libs/move_semantics/doc/html/move/reference.html (contents, props changed)

Added: sandbox/libs/move_semantics/doc/html/BOOST_CONSTRUCT_FWD_REF.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/BOOST_CONSTRUCT_FWD_REF.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Macro BOOST_CONSTRUCT_FWD_REF</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="BOOST_RV_REF.html" title="Macro BOOST_RV_REF">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="BOOST_RV_REF.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="BOOST_CONSTRUCT_FWD_REF"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro BOOST_CONSTRUCT_FWD_REF</span></h2>
+<p>BOOST_CONSTRUCT_FWD_REF &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">BOOST_CONSTRUCT_FWD_REF(TYPE)</pre></div>
+<div class="refsect1" lang="en">
+<a name="id487536"></a><h2>Description</h2>
+<p>This macro expands to T&amp;&amp; for compilers with rvalue references. Otherwise expands to const T &amp;. </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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="BOOST_RV_REF.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/BOOST_ENABLE_MOVE_EMULATION.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/BOOST_ENABLE_MOVE_EMULATION.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Macro BOOST_ENABLE_MOVE_EMULATION</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="boost/uninitialized_copy_or_move.html" title="Function template uninitialized_copy_or_move">
+<link rel="next" href="BOOST_RV_REF.html" title="Macro BOOST_RV_REF">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost/uninitialized_copy_or_move.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_RV_REF.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="BOOST_ENABLE_MOVE_EMULATION"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro BOOST_ENABLE_MOVE_EMULATION</span></h2>
+<p>BOOST_ENABLE_MOVE_EMULATION &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">BOOST_ENABLE_MOVE_EMULATION(TYPE)</pre></div>
+<div class="refsect1" lang="en">
+<a name="id487456"></a><h2>Description</h2>
+<p>This macro expands to nothing for compilers with rvalue references. Otherwise expands to: </p>
+<pre class="programlisting"> operator boost::rv&lt;TYPE&gt;&amp;()
+ { return static_cast&lt;boost::rv&lt;TYPE&gt;&amp; &gt;(*this); }
+</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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost/uninitialized_copy_or_move.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_RV_REF.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/BOOST_RV_REF.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/BOOST_RV_REF.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Macro BOOST_RV_REF</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="BOOST_ENABLE_MOVE_EMULATION.html" title="Macro BOOST_ENABLE_MOVE_EMULATION">
+<link rel="next" href="BOOST_CONSTRUCT_FWD_REF.html" title="Macro BOOST_CONSTRUCT_FWD_REF">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="BOOST_ENABLE_MOVE_EMULATION.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_CONSTRUCT_FWD_REF.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="BOOST_RV_REF"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro BOOST_RV_REF</span></h2>
+<p>BOOST_RV_REF &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">BOOST_RV_REF(TYPE)</pre></div>
+<div class="refsect1" lang="en">
+<a name="id487499"></a><h2>Description</h2>
+<p>This macro expands to T&amp;&amp; for compilers with rvalue references. Otherwise expands to boost::rv&lt;T&gt; &amp;. </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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="BOOST_ENABLE_MOVE_EMULATION.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_CONSTRUCT_FWD_REF.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/back_move_insert_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/back_move_insert_iterator.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,84 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template back_move_insert_iterator</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="move_iterator.html" title="Class template move_iterator">
+<link rel="next" href="front_move_insert_iterator.html" title="Class template front_move_insert_iterator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_iterator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="front_move_insert_iterator.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.back_move_insert_iterator"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template back_move_insert_iterator</span></h2>
+<p>boost::back_move_insert_iterator &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> C&gt;
+<span class="bold"><strong>class</strong></span> back_move_insert_iterator {
+<span class="bold"><strong>public</strong></span>:
+ <span class="emphasis"><em>// types</em></span>
+ <span class="bold"><strong>typedef</strong></span> C <a name="boost.back_move_insert_iterator.container_type"></a>container_type;
+
+ <span class="emphasis"><em>// construct/copy/destruct</em></span>
+ back_move_insert_iterator(C &amp;);
+ back_move_insert_iterator&amp; operator=(<span class="bold"><strong>typename</strong></span> C::reference);
+
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type">back_move_insert_iterator &amp;</span> operator *() ;
+ <span class="type">back_move_insert_iterator &amp;</span> operator++() ;
+ <span class="type">back_move_insert_iterator &amp;</span> operator++(<span class="bold"><strong>int</strong></span>) ;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id485574"></a><h2>Description</h2>
+<p>A move insert iterator that move constructs elements at the back of a container </p>
+<div class="refsect2" lang="en">
+<a name="id485583"></a><h3>
+<a name="boost.back_move_insert_iteratorconstruct-copy-destruct"></a><code class="computeroutput">back_move_insert_iterator</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol type="1">
+<li><pre class="literallayout"><a name="id151459-bb"></a>back_move_insert_iterator(C &amp; x);</pre></li>
+<li><pre class="literallayout">back_move_insert_iterator&amp; <a name="id151465-bb"></a><span class="bold"><strong>operator</strong></span>=(<span class="bold"><strong>typename</strong></span> C::reference x);</pre></li>
+</ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id485663"></a><h3>
+<a name="id151426-bb"></a><code class="computeroutput">back_move_insert_iterator</code> public member functions</h3>
+<div class="orderedlist"><ol type="1">
+<li><pre class="literallayout"><span class="type">back_move_insert_iterator &amp;</span> <a name="id151429-bb"></a><span class="bold"><strong>operator</strong></span> *() ;</pre></li>
+<li><pre class="literallayout"><span class="type">back_move_insert_iterator &amp;</span> <a name="id151437-bb"></a><span class="bold"><strong>operator</strong></span>++() ;</pre></li>
+<li><pre class="literallayout"><span class="type">back_move_insert_iterator &amp;</span> <a name="id151446-bb"></a><span class="bold"><strong>operator</strong></span>++(<span class="bold"><strong>int</strong></span>) ;</pre></li>
+</ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_iterator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="front_move_insert_iterator.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/back_move_inserter.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/back_move_inserter.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Function template back_move_inserter</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="make_move_iterator.html" title="Function template make_move_iterator">
+<link rel="next" href="front_move_inserter.html" title="Function template front_move_inserter">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="make_move_iterator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="front_move_inserter.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.back_move_inserter"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template back_move_inserter</span></h2>
+<p>boost::back_move_inserter &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> C&gt; <span class="type">back_move_insert_iterator&lt; C &gt;</span> back_move_inserter(C &amp; x);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id486931"></a><h2>Description</h2>
+<p><span class="bold"><strong>Returns</strong></span>: back_move_insert_iterator&lt;C&gt;(x). </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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="make_move_iterator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="front_move_inserter.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/forward_constructor.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/forward_constructor.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Function template forward_constructor</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="move_id151589.html" title="Function template move">
+<link rel="next" href="make_move_iterator.html" title="Function template make_move_iterator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_id151589.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="make_move_iterator.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.forward_constructor"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template forward_constructor</span></h2>
+<p>boost::forward_constructor &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="type">output_reference</span> forward_constructor(input_reference);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id486784"></a><h2>Description</h2>
+<p>This function provides limited form of forwarding that is usually enough for in-place construction and avoids the exponential overloading necessary for perfect forwarding in C++03.</p>
+<p>For compilers with rvalue references this function provides perfect forwarding.</p>
+<p>Otherwise: If input_reference binds to const boost::rv&lt;T&gt; &amp; then it output_reference is boost::rev&lt;T&gt; &amp;</p>
+<p>Else, input_reference is equal to output_reference is equal to input_reference. </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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_id151589.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="make_move_iterator.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/front_move_insert_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/front_move_insert_iterator.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,84 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template front_move_insert_iterator</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="back_move_insert_iterator.html" title="Class template back_move_insert_iterator">
+<link rel="next" href="move_insert_iterator.html" title="Class template move_insert_iterator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="back_move_insert_iterator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_insert_iterator.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.front_move_insert_iterator"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template front_move_insert_iterator</span></h2>
+<p>boost::front_move_insert_iterator &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> C&gt;
+<span class="bold"><strong>class</strong></span> front_move_insert_iterator {
+<span class="bold"><strong>public</strong></span>:
+ <span class="emphasis"><em>// types</em></span>
+ <span class="bold"><strong>typedef</strong></span> C <a name="boost.front_move_insert_iterator.container_type"></a>container_type;
+
+ <span class="emphasis"><em>// construct/copy/destruct</em></span>
+ front_move_insert_iterator(C &amp;);
+ front_move_insert_iterator&amp; operator=(<span class="bold"><strong>typename</strong></span> C::reference);
+
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type">front_move_insert_iterator &amp;</span> operator *() ;
+ <span class="type">front_move_insert_iterator &amp;</span> operator++() ;
+ <span class="type">front_move_insert_iterator &amp;</span> operator++(<span class="bold"><strong>int</strong></span>) ;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id486038"></a><h2>Description</h2>
+<p>A move insert iterator that move constructs elements int the front of a container </p>
+<div class="refsect2" lang="en">
+<a name="id486047"></a><h3>
+<a name="boost.front_move_insert_iteratorconstruct-copy-destruct"></a><code class="computeroutput">front_move_insert_iterator</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol type="1">
+<li><pre class="literallayout"><a name="id151522-bb"></a>front_move_insert_iterator(C &amp; x);</pre></li>
+<li><pre class="literallayout">front_move_insert_iterator&amp; <a name="id151528-bb"></a><span class="bold"><strong>operator</strong></span>=(<span class="bold"><strong>typename</strong></span> C::reference x);</pre></li>
+</ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id486126"></a><h3>
+<a name="id151489-bb"></a><code class="computeroutput">front_move_insert_iterator</code> public member functions</h3>
+<div class="orderedlist"><ol type="1">
+<li><pre class="literallayout"><span class="type">front_move_insert_iterator &amp;</span> <a name="id151492-bb"></a><span class="bold"><strong>operator</strong></span> *() ;</pre></li>
+<li><pre class="literallayout"><span class="type">front_move_insert_iterator &amp;</span> <a name="id151500-bb"></a><span class="bold"><strong>operator</strong></span>++() ;</pre></li>
+<li><pre class="literallayout"><span class="type">front_move_insert_iterator &amp;</span> <a name="id151508-bb"></a><span class="bold"><strong>operator</strong></span>++(<span class="bold"><strong>int</strong></span>) ;</pre></li>
+</ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="back_move_insert_iterator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_insert_iterator.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/front_move_inserter.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/front_move_inserter.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Function template front_move_inserter</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="back_move_inserter.html" title="Function template back_move_inserter">
+<link rel="next" href="move_inserter.html" title="Function template move_inserter">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="back_move_inserter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_inserter.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.front_move_inserter"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template front_move_inserter</span></h2>
+<p>boost::front_move_inserter &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> C&gt;
+ <span class="type">front_move_insert_iterator&lt; C &gt;</span> front_move_inserter(C &amp; x);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id486998"></a><h2>Description</h2>
+<p><span class="bold"><strong>Returns</strong></span>: front_move_insert_iterator&lt;C&gt;(x). </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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="back_move_inserter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_inserter.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/is_movable.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/is_movable.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template is_movable</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="../move/reference.html" title="Reference">
+<link rel="next" href="move_iterator.html" title="Class template move_iterator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../move/reference.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_iterator.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.is_movable"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template is_movable</span></h2>
+<p>boost::is_movable &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt;
+<span class="bold"><strong>class</strong></span> is_movable {
+<span class="bold"><strong>public</strong></span>:
+ <span class="bold"><strong>static</strong></span> <span class="type"><span class="bold"><strong>const</strong></span> <span class="bold"><strong>bool</strong></span></span> value;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id484113"></a><h2>Description</h2>
+<p>For compilers with rvalue references, this traits class returns true if T &amp;&amp; is convertible to T.</p>
+<p>For other compilers returns true if T is convertible to boost::rv&lt;T&gt;&amp; </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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../move/reference.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_iterator.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/make_move_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/make_move_iterator.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Function template make_move_iterator</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="forward_constructor.html" title="Function template forward_constructor">
+<link rel="next" href="back_move_inserter.html" title="Function template back_move_inserter">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="forward_constructor.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="back_move_inserter.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.make_move_iterator"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template make_move_iterator</span></h2>
+<p>boost::make_move_iterator &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> It&gt; <span class="type">move_iterator&lt; It &gt;</span> make_move_iterator(<span class="bold"><strong>const</strong></span> It &amp; it);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id486866"></a><h2>Description</h2>
+<p><span class="bold"><strong>Returns</strong></span>: move_iterator&lt;It&gt;(i). </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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="forward_constructor.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="back_move_inserter.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/move_backward.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/move_backward.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Function template move_backward</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="move_id151748.html" title="Function template move">
+<link rel="next" href="uninitialized_move.html" title="Function template uninitialized_move">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_id151748.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="uninitialized_move.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.move_backward"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template move_backward</span></h2>
+<p>boost::move_backward &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> O&gt; <span class="type">O</span> move_backward(I f, I l, O result);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id487213"></a><h2>Description</h2>
+<p><span class="bold"><strong>Effects</strong></span>: Moves elements in the range [first,last) into the range [result - (last-first),result) starting from last - 1 and proceeding to first. For each positive integer n &lt;= (last - first), performs *(result - n) = boost::move(*(last - n)).</p>
+<p><span class="bold"><strong>Requires</strong></span>: result shall not be in the range [first,last).</p>
+<p><span class="bold"><strong>Returns</strong></span>: result - (last - first).</p>
+<p><span class="bold"><strong>Complexity</strong></span>: Exactly last - first assignments. </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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_id151748.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="uninitialized_move.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/move_id151589.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/move_id151589.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Function template move</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="move_insert_iterator.html" title="Class template move_insert_iterator">
+<link rel="next" href="forward_constructor.html" title="Function template forward_constructor">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_insert_iterator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="forward_constructor.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.move_id151589"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template move</span></h2>
+<p>boost::move &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="type">rvalue_reference</span> move(input_reference);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id486730"></a><h2>Description</h2>
+<p>This function provides a way to convert a reference into a rvalue reference in compilers with rvalue reference. For other compilers converts T &amp; into boost::rv&lt;T&gt; &amp; so that move emulation is activated. </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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_insert_iterator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="forward_constructor.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/move_id151748.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/move_id151748.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Function template move</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="move_inserter.html" title="Function template move_inserter">
+<link rel="next" href="move_backward.html" title="Function template move_backward">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_inserter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_backward.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.move_id151748"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template move</span></h2>
+<p>boost::move &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> O&gt; <span class="type">O</span> move(I f, I l, O result);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id487123"></a><h2>Description</h2>
+<p><span class="bold"><strong>Effects</strong></span>: Moves elements in the range [first,last) into the range [result,result + (last - first)) starting from first and proceeding to last. For each non-negative integer n &lt; (last-first), performs *(result + n) = boost::move (*(first + n)).</p>
+<p><span class="bold"><strong>Effects</strong></span>: result + (last - first).</p>
+<p><span class="bold"><strong>Requires</strong></span>: result shall not be in the range [first,last).</p>
+<p><span class="bold"><strong>Complexity</strong></span>: Exactly last - first move assignments. </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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_inserter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_backward.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/move_insert_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/move_insert_iterator.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,83 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template move_insert_iterator</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="front_move_insert_iterator.html" title="Class template front_move_insert_iterator">
+<link rel="next" href="move_id151589.html" title="Function template move">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="front_move_insert_iterator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_id151589.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.move_insert_iterator"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template move_insert_iterator</span></h2>
+<p>boost::move_insert_iterator &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> C&gt;
+<span class="bold"><strong>class</strong></span> move_insert_iterator {
+<span class="bold"><strong>public</strong></span>:
+ <span class="emphasis"><em>// types</em></span>
+ <span class="bold"><strong>typedef</strong></span> C <a name="boost.move_insert_iterator.container_type"></a>container_type;
+
+ <span class="emphasis"><em>// construct/copy/destruct</em></span>
+ move_insert_iterator(C &amp;, <span class="bold"><strong>typename</strong></span> C::iterator);
+ move_insert_iterator&amp; operator=(<span class="bold"><strong>typename</strong></span> C::reference);
+
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type">move_insert_iterator &amp;</span> operator *() ;
+ <span class="type">move_insert_iterator &amp;</span> operator++() ;
+ <span class="type">move_insert_iterator &amp;</span> operator++(<span class="bold"><strong>int</strong></span>) ;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id486483"></a><h2>Description</h2>
+<div class="refsect2" lang="en">
+<a name="id486488"></a><h3>
+<a name="boost.move_insert_iteratorconstruct-copy-destruct"></a><code class="computeroutput">move_insert_iterator</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol type="1">
+<li><pre class="literallayout"><a name="id151572-bb"></a>move_insert_iterator(C &amp; x, <span class="bold"><strong>typename</strong></span> C::iterator pos);</pre></li>
+<li><pre class="literallayout">move_insert_iterator&amp; <a name="id151583-bb"></a><span class="bold"><strong>operator</strong></span>=(<span class="bold"><strong>typename</strong></span> C::reference x);</pre></li>
+</ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id486573"></a><h3>
+<a name="id151547-bb"></a><code class="computeroutput">move_insert_iterator</code> public member functions</h3>
+<div class="orderedlist"><ol type="1">
+<li><pre class="literallayout"><span class="type">move_insert_iterator &amp;</span> <a name="id151549-bb"></a><span class="bold"><strong>operator</strong></span> *() ;</pre></li>
+<li><pre class="literallayout"><span class="type">move_insert_iterator &amp;</span> <a name="id151555-bb"></a><span class="bold"><strong>operator</strong></span>++() ;</pre></li>
+<li><pre class="literallayout"><span class="type">move_insert_iterator &amp;</span> <a name="id151561-bb"></a><span class="bold"><strong>operator</strong></span>++(<span class="bold"><strong>int</strong></span>) ;</pre></li>
+</ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="front_move_insert_iterator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_id151589.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/move_inserter.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/move_inserter.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Function template move_inserter</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="front_move_inserter.html" title="Function template front_move_inserter">
+<link rel="next" href="move_id151748.html" title="Function template move">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="front_move_inserter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_id151748.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.move_inserter"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template move_inserter</span></h2>
+<p>boost::move_inserter &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> C&gt;
+ <span class="type">move_insert_iterator&lt; C &gt;</span> move_inserter(C &amp; x, <span class="bold"><strong>typename</strong></span> C::iterator it);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id487061"></a><h2>Description</h2>
+<p><span class="bold"><strong>Returns</strong></span>: move_insert_iterator&lt;C&gt;(x, it). </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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="front_move_inserter.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_id151748.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/move_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/move_iterator.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,109 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template move_iterator</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="is_movable.html" title="Class template is_movable">
+<link rel="next" href="back_move_insert_iterator.html" title="Class template back_move_insert_iterator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_movable.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="back_move_insert_iterator.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.move_iterator"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template move_iterator</span></h2>
+<p>boost::move_iterator &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> It&gt;
+<span class="bold"><strong>class</strong></span> move_iterator {
+<span class="bold"><strong>public</strong></span>:
+ <span class="emphasis"><em>// types</em></span>
+ <span class="bold"><strong>typedef</strong></span> It <a name="boost.move_iterator.iterator_type"></a>iterator_type;
+ <span class="bold"><strong>typedef</strong></span> std::iterator_traits&lt; iterator_type &gt;::value_type <a name="boost.move_iterator.value_type"></a>value_type;
+ <span class="bold"><strong>typedef</strong></span> value_type &amp;&amp; <a name="boost.move_iterator.reference"></a>reference;
+ <span class="bold"><strong>typedef</strong></span> std::iterator_traits&lt; iterator_type &gt;::pointer <a name="boost.move_iterator.pointer"></a>pointer;
+ <span class="bold"><strong>typedef</strong></span> std::iterator_traits&lt; iterator_type &gt;::difference_type <a name="boost.move_iterator.difference_type"></a>difference_type;
+ <span class="bold"><strong>typedef</strong></span> std::iterator_traits&lt; iterator_type &gt;::iterator_category <a name="boost.move_iterator.iterator_category"></a>iterator_category;
+
+ <span class="emphasis"><em>// construct/copy/destruct</em></span>
+ move_iterator();
+ move_iterator(It);
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> U&gt; move_iterator(<span class="bold"><strong>const</strong></span> move_iterator&lt; U &gt; &amp;);
+
+ <span class="emphasis"><em>// public member functions</em></span>
+ <span class="type">iterator_type</span> base() <span class="bold"><strong>const</strong></span>;
+ <span class="type">reference</span> operator *() <span class="bold"><strong>const</strong></span>;
+ <span class="type">pointer</span> operator->() <span class="bold"><strong>const</strong></span>;
+ <span class="type">move_iterator &amp;</span> operator++() ;
+ <span class="type">move_iterator&lt; iterator_type &gt;</span> operator++(<span class="bold"><strong>int</strong></span>) ;
+ <span class="type">move_iterator &amp;</span> operator--() ;
+ <span class="type">move_iterator&lt; iterator_type &gt;</span> operator--(<span class="bold"><strong>int</strong></span>) ;
+ <span class="type">move_iterator&lt; iterator_type &gt;</span> operator+(difference_type) <span class="bold"><strong>const</strong></span>;
+ <span class="type">move_iterator &amp;</span> operator+=(difference_type) ;
+ <span class="type">move_iterator&lt; iterator_type &gt;</span> operator-(difference_type) <span class="bold"><strong>const</strong></span>;
+ <span class="type">move_iterator &amp;</span> operator-=(difference_type) ;
+ <span class="type">reference</span> operator[](difference_type) <span class="bold"><strong>const</strong></span>;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id484740"></a><h2>Description</h2>
+<p>Class template move_iterator is an iterator adaptor with the same behavior as the underlying iterator except that its dereference operator implicitly converts the value returned by the underlying iterator's dereference operator to an rvalue reference. Some generic algorithms can be called with move iterators to replace copying with moving. </p>
+<div class="refsect2" lang="en">
+<a name="id484753"></a><h3>
+<a name="boost.move_iteratorconstruct-copy-destruct"></a><code class="computeroutput">move_iterator</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol type="1">
+<li><pre class="literallayout"><a name="id151936-bb"></a>move_iterator();</pre></li>
+<li><pre class="literallayout"><a name="id151937-bb"></a>move_iterator(It i);</pre></li>
+<li><pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> U&gt; <a name="id151943-bb"></a>move_iterator(<span class="bold"><strong>const</strong></span> move_iterator&lt; U &gt; &amp; u);</pre></li>
+</ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id484870"></a><h3>
+<a name="id250771-bb"></a><code class="computeroutput">move_iterator</code> public member functions</h3>
+<div class="orderedlist"><ol type="1">
+<li><pre class="literallayout"><span class="type">iterator_type</span> <a name="id250774-bb"></a>base() <span class="bold"><strong>const</strong></span>;</pre></li>
+<li><pre class="literallayout"><span class="type">reference</span> <a name="id250780-bb"></a><span class="bold"><strong>operator</strong></span> *() <span class="bold"><strong>const</strong></span>;</pre></li>
+<li><pre class="literallayout"><span class="type">pointer</span> <a name="id250786-bb"></a><span class="bold"><strong>operator</strong></span>-&gt;() <span class="bold"><strong>const</strong></span>;</pre></li>
+<li><pre class="literallayout"><span class="type">move_iterator &amp;</span> <a name="id250792-bb"></a><span class="bold"><strong>operator</strong></span>++() ;</pre></li>
+<li><pre class="literallayout"><span class="type">move_iterator&lt; iterator_type &gt;</span> <a name="id250800-bb"></a><span class="bold"><strong>operator</strong></span>++(<span class="bold"><strong>int</strong></span>) ;</pre></li>
+<li><pre class="literallayout"><span class="type">move_iterator &amp;</span> <a name="id151367-bb"></a><span class="bold"><strong>operator</strong></span>--() ;</pre></li>
+<li><pre class="literallayout"><span class="type">move_iterator&lt; iterator_type &gt;</span> <a name="id151376-bb"></a><span class="bold"><strong>operator</strong></span>--(<span class="bold"><strong>int</strong></span>) ;</pre></li>
+<li><pre class="literallayout"><span class="type">move_iterator&lt; iterator_type &gt;</span> <a name="id151389-bb"></a><span class="bold"><strong>operator</strong></span>+(difference_type n) <span class="bold"><strong>const</strong></span>;</pre></li>
+<li><pre class="literallayout"><span class="type">move_iterator &amp;</span> <a name="id151402-bb"></a><span class="bold"><strong>operator</strong></span>+=(difference_type n) ;</pre></li>
+<li><pre class="literallayout"><span class="type">move_iterator&lt; iterator_type &gt;</span> <a name="id151898-bb"></a><span class="bold"><strong>operator</strong></span>-(difference_type n) <span class="bold"><strong>const</strong></span>;</pre></li>
+<li><pre class="literallayout"><span class="type">move_iterator &amp;</span> <a name="id151912-bb"></a><span class="bold"><strong>operator</strong></span>-=(difference_type n) ;</pre></li>
+<li><pre class="literallayout"><span class="type">reference</span> <a name="id151925-bb"></a><span class="bold"><strong>operator</strong></span>[](difference_type n) <span class="bold"><strong>const</strong></span>;</pre></li>
+</ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_movable.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="back_move_insert_iterator.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/uninitialized_copy_or_move.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/uninitialized_copy_or_move.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,58 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Function template uninitialized_copy_or_move</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="uninitialized_move.html" title="Function template uninitialized_move">
+<link rel="next" href="../BOOST_ENABLE_MOVE_EMULATION.html" title="Macro BOOST_ENABLE_MOVE_EMULATION">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="uninitialized_move.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../BOOST_ENABLE_MOVE_EMULATION.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.uninitialized_copy_or_move"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template uninitialized_copy_or_move</span></h2>
+<p>boost::uninitialized_copy_or_move &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> F&gt; <span class="type">F</span> uninitialized_copy_or_move(I f, I l, F r);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id487389"></a><h2>Description</h2>
+<p><span class="bold"><strong>Effects</strong></span>: </p>
+<pre class="programlisting"> for (; first != last; ++result, ++first)
+ new (static_cast&lt;void*&gt;(&amp;*result))
+ typename iterator_traits&lt;ForwardIterator&gt;::value_type(*first);
+</pre>
+<p><span class="bold"><strong>Returns</strong></span>: result</p>
+<p><span class="bold"><strong>Note</strong></span>: This function is provided because std::uninitialized_copy from some STL implementations is not compatible with move_iterator </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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="uninitialized_move.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../BOOST_ENABLE_MOVE_EMULATION.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/boost/uninitialized_move.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/boost/uninitialized_move.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,57 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Function template uninitialized_move</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../move/reference.html#header.boost.move_semantics.move_hpp" title="Header &lt;boost/move_semantics/move.hpp&gt;">
+<link rel="prev" href="move_backward.html" title="Function template move_backward">
+<link rel="next" href="uninitialized_copy_or_move.html" title="Function template uninitialized_copy_or_move">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_backward.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="uninitialized_copy_or_move.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.uninitialized_move"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template uninitialized_move</span></h2>
+<p>boost::uninitialized_move &#8212; </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> F&gt; <span class="type">F</span> uninitialized_move(I f, I l, F r);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id487306"></a><h2>Description</h2>
+<p><span class="bold"><strong>Effects</strong></span>: </p>
+<pre class="programlisting"> for (; first != last; ++result, ++first)
+ new (static_cast&lt;void*&gt;(&amp;*result))
+ typename iterator_traits&lt;ForwardIterator&gt;::value_type(boost::move(*first));
+</pre>
+<p><span class="bold"><strong>Returns</strong></span>: result </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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_backward.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move_semantics.move_hpp"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="uninitialized_copy_or_move.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/index.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/index.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,78 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 1. Boost.Move</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="index.html" title="Chapter 1. Boost.Move">
+<link rel="next" href="move/introduction.html" title=" Introduction">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="move/introduction.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="move"></a>Chapter 1. Boost.Move</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Ion</span> <span class="surname">Gaztañaga</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2008 -2009 Ion Gaztañaga</p></div>
+<div><div class="legalnotice">
+<a name="id394183"></a><p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"> Introduction</span></dt>
+<dt><span class="section"><a href="move/implementing_movable_classes.html"> Implementing movable
+ classes</a></span></dt>
+<dt><span class="section"> Movable but Non-Copyable Types</span></dt>
+<dt><span class="section"> Constructor Forwarding</span></dt>
+<dt><span class="section"> Move iterators</span></dt>
+<dt><span class="section"> Move inserters</span></dt>
+<dt><span class="section"> Move algorithms</span></dt>
+<dt><span class="section">Reference</span></dt>
+<dd><dl><dt><span class="section">Header <boost/move_semantics/move.hpp></span></dt></dl></dd>
+</dl>
+</div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../doc/html/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ This library is NOT an official Boost library
+ </p></td></tr>
+</table></div>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../doc/html/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ To be able to use containers of movable values you will need an special version
+ of <span class="bold"><strong>Boost.Interprocess</strong></span> bundled with this library
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: February 17, 2009 at 18:24:14 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="move/introduction.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/move/construct_forwarding.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/move/construct_forwarding.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,187 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Constructor Forwarding</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="prev" href="movable_only_classes.html" title=" Movable but Non-Copyable Types">
+<link rel="next" href="move_iterator.html" title=" Move iterators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="movable_only_classes.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_iterator.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="move.construct_forwarding"></a> Constructor Forwarding</h2></div></div></div>
+<p>
+ Consider writing a generic factory function that returns an object for a newly
+ constructed generic type. Factory functions such as this are valuable for encapsulating
+ and localizing the allocation of resources. Obviously, the factory function
+ must accept exactly the same sets of arguments as the constructors of the type
+ of objects constructed:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><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="identifier">T</span><span class="special">*</span> <span class="identifier">factory_new</span><span class="special">()</span>
+<span class="special">{</span> <span class="keyword">return</span> <span class="keyword">new</span> <span class="identifier">T</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="identifier">T</span><span class="special">*</span> <span class="identifier">factory_new</span><span class="special">(</span><span class="identifier">a1</span><span class="special">)</span>
+<span class="special">{</span> <span class="keyword">return</span> <span class="keyword">new</span> <span class="identifier">T</span><span class="special">(</span><span class="identifier">a1</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="identifier">T</span><span class="special">*</span> <span class="identifier">factory_new</span><span class="special">(</span><span class="identifier">a1</span><span class="special">,</span> <span class="identifier">a2</span><span class="special">)</span>
+<span class="special">{</span> <span class="keyword">return</span> <span class="keyword">new</span> <span class="identifier">T</span><span class="special">(</span><span class="identifier">a1</span><span class="special">,</span> <span class="identifier">a2</span><span class="special">);</span> <span class="special">}</span>
+</pre>
+<p>
+ Unfortunately, in C++03 the much bigger issue with this approach is that the
+ N-argument case would require 2^N overloads, immediately discounting this as
+ a general solution. Fortunately, most constructors take arguments by value,
+ by const-reference or by rvalue reference. If these limitations are accepted,
+ the forwarding emulation of a N-argument case requires just N overloads. This
+ library makes this emulation easy with the help of <code class="computeroutput"><span class="identifier">BOOST_CONSTRUCT_FWD_REF</span></code>
+ and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_constructor</span></code>:
+ </p>
+<p>
+ </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">move_semantics</span><span class="special">/</span><span class="identifier">move</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">iostream</span><span class="special">&gt;</span>
+
+<span class="keyword">class</span> <span class="identifier">non_movable_test</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">non_movable_test</span><span class="special">()</span>
+ <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"non_movable_test()"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="identifier">non_movable_test</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">non_movable_test</span><span class="special">&amp;)</span>
+ <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"non_movable_test(const non_movable_test&amp;)"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="identifier">non_movable_test</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span>
+ <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"non_movable_test(int)"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="identifier">non_movable_test</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">double</span><span class="special">)</span>
+ <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"non_movable_test(int, double)"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">class</span> <span class="identifier">movable_test</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">BOOST_ENABLE_MOVE_EMULATION</span><span class="special">(</span><span class="identifier">movable_test</span><span class="special">)</span>
+
+ <span class="identifier">movable_test</span><span class="special">()</span>
+ <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"movable_test()"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="identifier">movable_test</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span>
+ <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"movable_test(int)"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="identifier">movable_test</span><span class="special">(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">movable_test</span><span class="special">))</span>
+ <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"movable_test(BOOST_RV_REF(movable_test))"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="identifier">movable_test</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">movable_test</span> <span class="special">&amp;)</span>
+ <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"movable_test(const movable_test &amp;)"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="identifier">movable_test</span><span class="special">(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">movable_test</span><span class="special">),</span> <span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">movable_test</span><span class="special">))</span>
+ <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"movable_test(BOOST_RV_REF(movable_test), BOOST_RV_REF(movable_test))"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="comment">//1 argument
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">MaybeMovable</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">MaybeRv</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">function_construct</span><span class="special">(</span><span class="identifier">BOOST_CONSTRUCT_FWD_REF</span><span class="special">(</span><span class="identifier">MaybeRv</span><span class="special">)</span> <span class="identifier">x</span><span class="special">)</span>
+<span class="special">{</span> <span class="identifier">MaybeMovable</span> <span class="identifier">m</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_constructor</span><span class="special">&lt;</span><span class="identifier">MaybeRv</span><span class="special">&gt;(</span><span class="identifier">x</span><span class="special">));</span> <span class="special">}</span>
+
+<span class="comment">//2 argument
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">MaybeMovable</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">MaybeRv</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">MaybeRv2</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">function_construct</span><span class="special">(</span> <span class="identifier">BOOST_CONSTRUCT_FWD_REF</span><span class="special">(</span><span class="identifier">MaybeRv</span><span class="special">)</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">BOOST_CONSTRUCT_FWD_REF</span><span class="special">(</span><span class="identifier">MaybeRv2</span><span class="special">)</span> <span class="identifier">x2</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">MaybeMovable</span> <span class="identifier">m</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_constructor</span><span class="special">&lt;</span><span class="identifier">MaybeRv</span><span class="special">&gt;(</span><span class="identifier">x</span><span class="special">),</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_constructor</span><span class="special">&lt;</span><span class="identifier">MaybeRv2</span><span class="special">&gt;(</span><span class="identifier">x2</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">movable_test</span> <span class="identifier">m</span><span class="special">;</span>
+ <span class="comment">//move constructor
+</span> <span class="identifier">function_construct</span><span class="special">&lt;</span><span class="identifier">movable_test</span><span class="special">&gt;(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">m</span><span class="special">));</span>
+ <span class="comment">//copy constructor
+</span> <span class="identifier">function_construct</span><span class="special">&lt;</span><span class="identifier">movable_test</span><span class="special">&gt;(</span><span class="identifier">movable_test</span><span class="special">());</span>
+ <span class="comment">//two rvalue constructor
+</span> <span class="identifier">function_construct</span><span class="special">&lt;</span><span class="identifier">movable_test</span><span class="special">&gt;(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">m</span><span class="special">),</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">m</span><span class="special">));</span>
+
+ <span class="identifier">non_movable_test</span> <span class="identifier">nm</span><span class="special">;</span>
+ <span class="comment">//copy constructor (non_movable_test has no move ctor.)
+</span> <span class="identifier">function_construct</span><span class="special">&lt;</span><span class="identifier">non_movable_test</span><span class="special">&gt;(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">nm</span><span class="special">));</span>
+ <span class="comment">//copy constructor
+</span> <span class="identifier">function_construct</span><span class="special">&lt;</span><span class="identifier">non_movable_test</span><span class="special">&gt;(</span><span class="identifier">nm</span><span class="special">);</span>
+ <span class="comment">//int constructor
+</span> <span class="identifier">function_construct</span><span class="special">&lt;</span><span class="identifier">non_movable_test</span><span class="special">&gt;(</span><span class="keyword">int</span><span class="special">(</span><span class="number">0</span><span class="special">));</span>
+ <span class="comment">//int, double constructor
+</span> <span class="identifier">function_construct</span><span class="special">&lt;</span><span class="identifier">non_movable_test</span><span class="special">&gt;(</span><span class="keyword">int</span><span class="special">(</span><span class="number">0</span><span class="special">),</span> <span class="keyword">double</span><span class="special">(</span><span class="number">0.0</span><span class="special">));</span>
+
+ <span class="comment">//Output is:
+</span> <span class="comment">//movable_test()
+</span> <span class="comment">//movable_test(BOOST_RV_REF(movable_test))
+</span> <span class="comment">//movable_test()
+</span> <span class="comment">//movable_test(const movable_test &amp;)
+</span> <span class="comment">//movable_test(BOOST_RV_REF(movable_test), BOOST_RV_REF(movable_test))
+</span> <span class="comment">//non_movable_test()
+</span> <span class="comment">//non_movable_test(const non_movable_test&amp;)
+</span> <span class="comment">//non_movable_test(const non_movable_test&amp;)
+</span> <span class="comment">//non_movable_test(int)
+</span> <span class="comment">//non_movable_test(int, double)
+</span> <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ In compilers wit rvalue references <code class="computeroutput"><span class="identifier">BOOST_CONSTRUCT_FWD_REF</span><span class="special">(</span><span class="identifier">TYPE</span><span class="special">)</span></code>
+ expands to <code class="computeroutput"><span class="identifier">TYPE</span> <span class="special">&amp;&amp;</span></code>
+ and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_constructor</span></code> implements perfect forwarding.
+ Otherwise <code class="computeroutput"><span class="identifier">BOOST_CONSTRUCT_FWD_REF</span><span class="special">(</span><span class="identifier">TYPE</span><span class="special">)</span></code>
+ expands to <code class="computeroutput"><span class="keyword">const</span> <span class="identifier">TYPE</span>
+ <span class="special">&amp;</span></code> and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_constructor</span></code>
+ behaviour depends on the argument type:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ If TYPE is boost::rv&lt;T&gt;, then return a non-const reference <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&amp;</span></code>.
+ </li>
+<li>
+ Otherwise, just returns the input const reference.
+ </li>
+</ul></div>
+<p>
+ Constructor forwarding comes handful to implement placement insertion in containers
+ with just N overloads if the implementor accepts the limitations of this type
+ of forwarding for C++03 compilers. In compilers with rvalue references perfect
+ forwarding is achieved.
+ </p>
+</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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="movable_only_classes.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_iterator.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/move/implementing_movable_classes.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/move/implementing_movable_classes.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,327 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Implementing movable
+ classes</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="prev" href="introduction.html" title=" Introduction">
+<link rel="next" href="movable_only_classes.html" title=" Movable but Non-Copyable Types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="movable_only_classes.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="move.implementing_movable_classes"></a><a href="implementing_movable_classes.html" title=" Implementing movable
+ classes"> Implementing movable
+ classes</a></h2></div></div></div>
+<p>
+ Consider a simple handle class that owns a resource and also provides copy
+ semantics (copy constructor and assignment). For example a <code class="computeroutput"><span class="identifier">clone_ptr</span></code>
+ might own a pointer, and call <code class="computeroutput"><span class="identifier">clone</span><span class="special">()</span></code> on it for copying purposes:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><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">class</span> <span class="identifier">clone_ptr</span>
+<span class="special">{</span>
+ <span class="keyword">private</span><span class="special">:</span>
+ <span class="identifier">T</span><span class="special">*</span> <span class="identifier">ptr</span><span class="special">;</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// construction
+</span> <span class="keyword">explicit</span> <span class="identifier">clone_ptr</span><span class="special">(</span><span class="identifier">T</span><span class="special">*</span> <span class="identifier">p</span> <span class="special">=</span> <span class="number">0</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">ptr</span><span class="special">(</span><span class="identifier">p</span><span class="special">)</span> <span class="special">{}</span>
+
+ <span class="comment">// destruction
+</span> <span class="special">~</span><span class="identifier">clone_ptr</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">delete</span> <span class="identifier">ptr</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="comment">// copy semantics
+</span> <span class="identifier">clone_ptr</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">clone_ptr</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">ptr</span><span class="special">(</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">ptr</span> <span class="special">?</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">ptr</span><span class="special">-&gt;</span><span class="identifier">clone</span><span class="special">()</span> <span class="special">:</span> <span class="number">0</span><span class="special">)</span> <span class="special">{}</span>
+
+ <span class="identifier">clone_ptr</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="keyword">const</span> <span class="identifier">clone_ptr</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="keyword">this</span> <span class="special">!=</span> <span class="special">&amp;</span><span class="identifier">p</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">delete</span> <span class="identifier">ptr</span><span class="special">;</span>
+ <span class="identifier">ptr</span> <span class="special">=</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">ptr</span> <span class="special">?</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">ptr</span><span class="special">-&gt;</span><span class="identifier">clone</span><span class="special">()</span> <span class="special">:</span> <span class="number">0</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="comment">// move semantics
+</span> <span class="identifier">clone_ptr</span><span class="special">(</span><span class="identifier">clone_ptr</span><span class="special">&amp;&amp;</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">ptr</span><span class="special">(</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">ptr</span><span class="special">)</span> <span class="special">{</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">ptr</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="identifier">clone_ptr</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">clone_ptr</span><span class="special">&amp;&amp;</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">swap</span><span class="special">(</span><span class="identifier">ptr</span><span class="special">,</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">delete</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">ptr</span><span class="special">;</span>
+ <span class="identifier">p</span><span class="special">.</span><span class="identifier">ptr</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="comment">// Other operations...
+</span><span class="special">};</span>
+</pre>
+<p>
+ <code class="computeroutput"><span class="identifier">clone_ptr</span></code> has expected copy
+ constructor and assignment semantics, duplicating resources when copying. Note
+ that copy constructing or assigning a <code class="computeroutput"><span class="identifier">clone_ptr</span></code>
+ is a relatively expensive operation:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">clone_ptr</span><span class="special">&lt;</span><span class="identifier">Base</span><span class="special">&gt;</span> <span class="identifier">p1</span><span class="special">(</span><span class="keyword">new</span> <span class="identifier">Derived</span><span class="special">());</span>
+<span class="comment">// ...
+</span><span class="identifier">clone_ptr</span><span class="special">&lt;</span><span class="identifier">Base</span><span class="special">&gt;</span> <span class="identifier">p2</span> <span class="special">=</span> <span class="identifier">p1</span><span class="special">;</span> <span class="comment">// p2 and p1 each own their own pointer
+</span></pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">clone_ptr</span></code> is code that you
+ might find in today's books on C++, except for the part marked as <code class="computeroutput"><span class="identifier">move</span> <span class="identifier">semantics</span></code>.
+ That part is implemented in terms of C++0x <code class="computeroutput"><span class="identifier">rvalue</span>
+ <span class="identifier">references</span></code>. You can find some good
+ introduction and tutorials on rvalue references in these papers:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li><a href="http://www.artima.com/cppsource/rvalue.html" target="_top"><span class="emphasis"><em>A Brief
+ Introduction to Rvalue References</em></span></a></li>
+<li><a href="http://blogs.msdn.com/vcblog/archive/2009/02/03/rvalue-references-c-0x-features-in-vc10-part-2.aspx" target="_top"><span class="emphasis"><em>Rvalue
+ References: C++0x Features in VC10, Part 2</em></span></a></li>
+</ul></div>
+<p>
+ When the source of the copy is known to be an <code class="computeroutput"><span class="identifier">rvalue</span></code>
+ (e.g.: a temporary object), one can avoid the potentially expensive <code class="computeroutput"><span class="identifier">clone</span><span class="special">()</span></code> operation
+ by pilfering source's pointer (no one will notice!). The move constructor above
+ does exactly that, leaving the rvalue in a default constructed state. The move
+ assignment operator simply does the same freeing old resources.
+ </p>
+<p>
+ Now when code tries to copy an rvalue <code class="computeroutput"><span class="identifier">clone_ptr</span></code>,
+ or if that code explicitly gives permission to consider the source of the copy
+ an rvalue (using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span></code>), the operation will execute much faster.
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">clone_ptr</span><span class="special">&lt;</span><span class="identifier">Base</span><span class="special">&gt;</span> <span class="identifier">p1</span><span class="special">(</span><span class="keyword">new</span> <span class="identifier">Derived</span><span class="special">());</span>
+<span class="comment">// ...
+</span><span class="identifier">clone_ptr</span><span class="special">&lt;</span><span class="identifier">Base</span><span class="special">&gt;</span> <span class="identifier">p2</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">p1</span><span class="special">);</span> <span class="comment">// p2 now owns the pointer instead of p1
+</span><span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Many aspects of move semantics can be emulated for compilers not supporting
+ <code class="computeroutput"><span class="identifier">rvalue</span> <span class="identifier">references</span></code>
+ and <span class="bold"><strong>Boost.Move</strong></span> offers tools for that purpose.
+ With <span class="bold"><strong>Boost.Move</strong></span> we can write code that will
+ work both in compilers with rvalue references and those who conform to C++03:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><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">class</span> <span class="identifier">clone_ptr</span>
+<span class="special">{</span>
+ <span class="comment">// Same as before ...
+</span>
+ <span class="comment">// move semantics
+</span> <span class="identifier">BOOST_ENABLE_MOVE_EMULATION</span><span class="special">(</span><span class="identifier">clone_ptr</span><span class="special">)</span>
+
+ <span class="identifier">clone_ptr</span><span class="special">(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">clone_ptr</span><span class="special">)</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">ptr</span><span class="special">(</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">ptr</span><span class="special">)</span> <span class="special">{</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">ptr</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="identifier">clone_ptr</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">clone_ptr</span><span class="special">)</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">swap</span><span class="special">(</span><span class="identifier">ptr</span><span class="special">,</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">ptr</span><span class="special">);</span>
+ <span class="keyword">delete</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">ptr</span><span class="special">;</span>
+ <span class="identifier">p</span><span class="special">.</span><span class="identifier">ptr</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ For compilers with rvalue references <code class="computeroutput"><span class="identifier">BOOST_ENABLE_MOVE_EMULATION</span><span class="special">(</span><span class="identifier">TYPE</span><span class="special">)</span></code>
+ macro is expanded to nothing and <code class="computeroutput"><span class="identifier">BOOST_RV_REF</span></code>
+ to <code class="computeroutput"><span class="identifier">TYPE</span> <span class="special">&amp;&amp;</span></code>
+ so we obtain exactly the same code we've presented in the beginning of this
+ chapter.
+ </p>
+<p>
+ For compilers without rvalue references, <code class="computeroutput"><span class="identifier">BOOST_ENABLE_MOVE_EMULATION</span><span class="special">(</span><span class="identifier">TYPE</span><span class="special">)</span></code>
+ is expaded to a conversion operator that will allow <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span></code> to
+ work:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="keyword">operator</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special">&lt;</span><span class="identifier">TYPE</span><span class="special">&gt;&amp;()</span>
+<span class="special">{</span> <span class="keyword">return</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special">&lt;</span><span class="identifier">TYPE</span><span class="special">&gt;&amp;</span> <span class="special">&gt;(*</span><span class="keyword">this</span><span class="special">);</span> <span class="special">}</span>
+</pre>
+<p>
+ and <code class="computeroutput"><span class="identifier">BOOST_RV_REF</span></code> is expanded
+ to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special">&lt;</span><span class="identifier">TYPE</span><span class="special">&gt;</span> <span class="special">&amp;</span></code>,
+ a non-instantiable type derived from T, and thus, it's similar to a reference
+ to that class:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><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">class</span> <span class="identifier">rv</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">T</span>
+<span class="special">{</span>
+ <span class="comment">//Non-instantiable...
+</span> <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">T</span> <span class="special">&amp;</span><span class="identifier">get</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ For classes made up of other classes (via either containment or inheritance),
+ the move constructor and move assignment can be easily coded using the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span></code>
+ function:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">Base</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// Compiler-generated copy constructor and assignment
+</span>
+ <span class="identifier">Base</span><span class="special">(){}</span>
+
+ <span class="comment">// move semantics
+</span> <span class="identifier">BOOST_ENABLE_MOVE_EMULATION</span><span class="special">(</span><span class="identifier">Base</span><span class="special">)</span>
+
+ <span class="identifier">Base</span><span class="special">(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">Base</span><span class="special">)</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">{/**/}</span> <span class="comment">// Move ctor
+</span>
+ <span class="identifier">Base</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">Base</span><span class="special">)</span> <span class="identifier">x</span><span class="special">)</span>
+ <span class="special">{/**/</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;}</span> <span class="comment">// Move assign
+</span>
+ <span class="keyword">virtual</span> <span class="identifier">Base</span> <span class="special">*</span><span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="special">{</span> <span class="keyword">return</span> <span class="keyword">new</span> <span class="identifier">Base</span><span class="special">(*</span><span class="keyword">this</span><span class="special">);</span> <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">class</span> <span class="identifier">Member</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">Member</span><span class="special">(){}</span>
+
+ <span class="comment">// Compiler-generated copy constructor and assignment
+</span>
+ <span class="comment">// move semantics
+</span> <span class="identifier">BOOST_ENABLE_MOVE_EMULATION</span><span class="special">(</span><span class="identifier">Member</span><span class="special">)</span>
+
+ <span class="identifier">Member</span><span class="special">(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">Member</span><span class="special">))</span> <span class="special">{/**/}</span> <span class="comment">// Move ctor
+</span>
+ <span class="identifier">Member</span> <span class="special">&amp;</span><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">Member</span><span class="special">))</span> <span class="comment">// Move assign
+</span> <span class="special">{/**/</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">class</span> <span class="identifier">Derived</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">Base</span>
+<span class="special">{</span>
+ <span class="identifier">Member</span> <span class="identifier">mem_</span><span class="special">;</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="comment">// Compiler-generated copy constructor and assignment
+</span>
+ <span class="identifier">Derived</span><span class="special">(){}</span>
+
+ <span class="comment">// move semantics
+</span> <span class="identifier">BOOST_ENABLE_MOVE_EMULATION</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">)</span>
+
+ <span class="identifier">Derived</span><span class="special">(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">)</span> <span class="identifier">x</span><span class="special">)</span> <span class="comment">// Move ctor
+</span> <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">Base</span><span class="special">&amp;&gt;(</span><span class="identifier">x</span><span class="special">))),</span>
+ <span class="identifier">mem_</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">x</span><span class="special">.</span><span class="identifier">mem_</span><span class="special">))</span> <span class="special">{</span> <span class="special">}</span>
+
+ <span class="identifier">Derived</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">)</span> <span class="identifier">x</span><span class="special">)</span> <span class="comment">// Move assign
+</span> <span class="special">{</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">x</span><span class="special">));</span>
+ <span class="identifier">mem_</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">x</span><span class="special">.</span><span class="identifier">mem_</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="comment">// ...
+</span><span class="special">};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Each subobject will now be treated individually, calling move to bind to the
+ subobject's move constructors and move assignment operators. <code class="computeroutput"><span class="identifier">Member</span></code> has move operations coded (just like
+ our earlier <code class="computeroutput"><span class="identifier">clone_ptr</span></code> example)
+ which will completely avoid the tremendously more expensive copy operations:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">Derived</span> <span class="identifier">d</span><span class="special">;</span>
+<span class="identifier">Derived</span> <span class="identifier">d2</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">d</span><span class="special">));</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Note above that the argument x is treated as a lvalue reference. That's why
+ it is necessary to say <code class="computeroutput"><span class="identifier">move</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code>
+ instead of just x when passing down to the base class. This is a key safety
+ feature of move semantics designed to prevent accidently moving twice from
+ some named variable. All moves occur explicitly.
+ </p>
+<p>
+ <span class="bold"><strong>Question</strong></span>: What about types that don't own
+ resources? (E.g. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span></code>?)
+ </p>
+<p>
+ No work needs to be done in that case. The copy constructor is already optimal.
+ </p>
+</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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="movable_only_classes.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/move/introduction.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/move/introduction.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,110 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Introduction</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="prev" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="next" href="implementing_movable_classes.html" title=" Implementing movable
+ classes">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="implementing_movable_classes.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="move.introduction"></a> Introduction</h2></div></div></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top">
+<p>
+ </p>
+<p>
+ The first 3 chapters are the adapted from the article <a href="http://www.artima.com/cppsource/rvalue.html" target="_top"><span class="emphasis"><em>A
+ Brief Introduction to Rvalue References</em></span></a> by Howard E. Hinnant,
+ Bjarne Stroustrup, and Bronek Kozicki
+ </p>
+<p>
+ </p>
+</td></tr>
+</table></div>
+<p>
+ Copying can be expensive. For example, for vectors <code class="computeroutput"><span class="identifier">v2</span><span class="special">=</span><span class="identifier">v1</span></code> typically
+ involves a function call, a memory allocation, and a loop. This is of course
+ acceptable where we actually need two copies of a vector, but in many cases,
+ we don't: We often copy a <code class="computeroutput"><span class="identifier">vector</span></code>
+ from one place to another, just to proceed to overwrite the old copy. Consider:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><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="identifier">swap</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">b</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">T</span> <span class="identifier">tmp</span><span class="special">(</span><span class="identifier">a</span><span class="special">);</span> <span class="comment">// now we have two copies of a
+</span> <span class="identifier">a</span> <span class="special">=</span> <span class="identifier">b</span><span class="special">;</span> <span class="comment">// now we have two copies of b
+</span> <span class="identifier">b</span> <span class="special">=</span> <span class="identifier">tmp</span><span class="special">;</span> <span class="comment">// now we have two copies of tmp (aka a)
+</span><span class="special">}</span>
+</pre>
+<p>
+ But, we didn't want to have any copies of a or b, we just wanted to swap them.
+ Let's try again:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><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="identifier">swap</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">b</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">T</span> <span class="identifier">tmp</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">a</span><span class="special">));</span>
+ <span class="identifier">a</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">b</span><span class="special">);</span>
+ <span class="identifier">b</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">tmp</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ This <code class="computeroutput"><span class="identifier">move</span><span class="special">()</span></code>
+ gives its target the value of its argument, but is not obliged to preserve
+ the value of its source. So, for a <code class="computeroutput"><span class="identifier">vector</span></code>,
+ <code class="computeroutput"><span class="identifier">move</span><span class="special">()</span></code>
+ could reasonably be expected to leave its argument as a zero-capacity vector
+ to avoid having to copy all the elements. In other words, <span class="bold"><strong>move
+ is a potentially destructive copy</strong></span>.
+ </p>
+<p>
+ In this particular case, we could have optimized swap by a specialization.
+ However, we can't specialize every function that copies a large object just
+ before it deletes or overwrites it. That would be unmanageable.
+ </p>
+<p>
+ In C++0x, move semantics are implemented with the introduction of rvalue references.
+ They allow us to implement <code class="computeroutput"><span class="identifier">move</span><span class="special">()</span></code> without verbosity or runtime overhead. <span class="bold"><strong>Boost.Move</strong></span> is a library that offers tools to implement
+ those move semantics not only in compilers with <code class="computeroutput"><span class="identifier">rvalue</span>
+ <span class="identifier">references</span></code> but also in compilers
+ conforming to C++03.
+ </p>
+</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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="implementing_movable_classes.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/move/movable_only_classes.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/move/movable_only_classes.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,166 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Movable but Non-Copyable Types</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="prev" href="implementing_movable_classes.html" title=" Implementing movable
+ classes">
+<link rel="next" href="construct_forwarding.html" title=" Constructor Forwarding">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="implementing_movable_classes.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="construct_forwarding.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="move.movable_only_classes"></a> Movable but Non-Copyable Types</h2></div></div></div>
+<p>
+ Some types are not amenable to copy semantics but can still be made movable.
+ For example:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<code class="computeroutput"><span class="identifier">unique_ptr</span></code> (non-shared, non-copyable
+ ownership)
+ </li>
+<li>
+ A type representing a thread of execution
+ </li>
+<li>
+ A type representing a file descriptor
+ </li>
+</ul></div>
+<p>
+ By making such types movable (though still non-copyable) their utility is tremendously
+ increased. Movable but non-copyable types can be returned by value from factory
+ functions:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="identifier">file_descriptor</span> <span class="identifier">create_file</span><span class="special">(/*</span> <span class="special">...</span> <span class="special">*/);</span>
+<span class="comment">//...
+</span><span class="identifier">file_descriptor</span> <span class="identifier">data_file</span> <span class="special">=</span> <span class="identifier">create_file</span><span class="special">(/*</span> <span class="special">...</span> <span class="special">*/);</span> <span class="comment">// No copies!
+</span></pre>
+<p>
+ In the above example, the underlying file handle is passed from object to object,
+ as long as the source <code class="computeroutput"><span class="identifier">file_descriptor</span></code>
+ is an rvalue. At all times, there is still only one underlying file handle,
+ and only one <code class="computeroutput"><span class="identifier">file_descriptor</span></code>
+ owns it at a time. Here's the definition of <code class="computeroutput"><span class="identifier">file</span>
+ <span class="identifier">descriptor</span></code>:
+ </p>
+<p>
+ </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">move_semantics</span><span class="special">/</span><span class="identifier">move</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">stdexcept</span><span class="special">&gt;</span>
+
+<span class="keyword">class</span> <span class="identifier">file_descriptor</span>
+<span class="special">{</span>
+ <span class="keyword">int</span> <span class="identifier">os_descr_</span><span class="special">;</span>
+
+ <span class="identifier">file_descriptor</span><span class="special">(</span><span class="identifier">file_descriptor</span> <span class="special">&amp;);</span>
+ <span class="identifier">file_descriptor</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">file_descriptor</span> <span class="special">&amp;);</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">explicit</span> <span class="identifier">file_descriptor</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">filename</span> <span class="special">=</span> <span class="number">0</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">os_descr_</span><span class="special">(</span><span class="identifier">filename</span> <span class="special">?</span> <span class="identifier">operating_system_open_file</span><span class="special">(</span><span class="identifier">filename</span><span class="special">)</span> <span class="special">:</span> <span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span> <span class="keyword">if</span><span class="special">(!</span><span class="identifier">os_descr_</span><span class="special">)</span> <span class="keyword">throw</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span><span class="special">(</span><span class="string">"file not found"</span><span class="special">);</span> <span class="special">}</span>
+
+ <span class="special">~</span><span class="identifier">file_descriptor</span><span class="special">()</span>
+ <span class="special">{</span> <span class="keyword">if</span><span class="special">(!</span><span class="identifier">os_descr_</span><span class="special">)</span> <span class="identifier">operating_system_close_file</span><span class="special">(</span><span class="identifier">os_descr_</span><span class="special">);</span> <span class="special">}</span>
+
+ <span class="comment">// move semantics
+</span> <span class="identifier">BOOST_ENABLE_MOVE_EMULATION</span><span class="special">(</span><span class="identifier">file_descriptor</span><span class="special">)</span>
+
+ <span class="identifier">file_descriptor</span><span class="special">(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">file_descriptor</span><span class="special">)</span> <span class="identifier">x</span><span class="special">)</span> <span class="comment">// Move ctor
+</span> <span class="special">:</span> <span class="identifier">os_descr_</span><span class="special">(</span><span class="identifier">x</span><span class="special">.</span><span class="identifier">os_descr_</span><span class="special">)</span>
+ <span class="special">{</span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">os_descr_</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="identifier">file_descriptor</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">file_descriptor</span><span class="special">)</span> <span class="identifier">x</span><span class="special">)</span> <span class="comment">// Move assign
+</span> <span class="special">{</span>
+ <span class="keyword">if</span><span class="special">(!</span><span class="identifier">os_descr_</span><span class="special">)</span> <span class="identifier">operating_system_close_file</span><span class="special">(</span><span class="identifier">os_descr_</span><span class="special">);</span>
+ <span class="identifier">os_descr_</span> <span class="special">=</span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">os_descr_</span><span class="special">;</span>
+ <span class="identifier">x</span><span class="special">.</span><span class="identifier">os_descr_</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">os_descr_</span> <span class="special">==</span> <span class="number">0</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">};</span>
+
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Movable but non-copyable types can also safely be put into containers if those
+ containers are aware of move semantics. If the container needs to "copy"
+ an element internally (e.g. vector reallocation) it will move the element instead
+ of copying it. <span class="bold"><strong>Boost.Interprocess</strong></span> containers
+ are move-aware:
+ </p>
+<p>
+ </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">interprocess</span><span class="special">/</span><span class="identifier">containers</span><span class="special">/</span><span class="identifier">vector</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="identifier">file_descriptor</span> <span class="identifier">create_file_descriptor</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">filename</span><span class="special">)</span>
+<span class="special">{</span> <span class="keyword">return</span> <span class="identifier">file_descriptor</span><span class="special">(</span><span class="identifier">filename</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="comment">//Open a file obtaining its descriptor. The file_descriptor
+</span> <span class="comment">//can be returned from factory functions without any copy
+</span> <span class="identifier">file_descriptor</span> <span class="identifier">fd</span> <span class="special">=</span> <span class="identifier">create_file_descriptor</span><span class="special">(</span><span class="string">"filename"</span><span class="special">);</span>
+ <span class="identifier">assert</span><span class="special">(!</span><span class="identifier">fd</span><span class="special">.</span><span class="identifier">empty</span><span class="special">());</span>
+
+ <span class="comment">//Move into a vector
+</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">interprocess</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">file_descriptor</span><span class="special">&gt;</span> <span class="identifier">v</span><span class="special">;</span>
+ <span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">fd</span><span class="special">));</span>
+
+ <span class="comment">//Check ownership has been transferred
+</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">fd</span><span class="special">.</span><span class="identifier">empty</span><span class="special">());</span>
+ <span class="identifier">assert</span><span class="special">(!</span><span class="identifier">v</span><span class="special">[</span><span class="number">0</span><span class="special">].</span><span class="identifier">empty</span><span class="special">());</span>
+
+ <span class="comment">//Compilation error if uncommented, file_descriptor is not copyable:
+</span> <span class="comment">//boost::interprocess::vector&lt;file_descriptor&gt; v2(v);
+</span> <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+</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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="implementing_movable_classes.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="construct_forwarding.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/move/move_algorithms.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/move/move_algorithms.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,101 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Move algorithms</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="prev" href="move_inserters.html" title=" Move inserters">
+<link rel="next" href="reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_inserters.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="move.move_algorithms"></a> Move algorithms</h2></div></div></div>
+<p>
+ The standard library offers several copy-based algorithms. Some of them, like
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">copy</span></code> or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">uninitialized_copy</span></code>
+ are basic building blocks for containers and other data structures. This library
+ offers move-based functions for those purposes:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">I</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">O</span><span class="special">&gt;</span> <span class="identifier">O</span> <span class="identifier">move</span><span class="special">(</span><span class="identifier">I</span><span class="special">,</span> <span class="identifier">I</span><span class="special">,</span> <span class="identifier">O</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">I</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">O</span><span class="special">&gt;</span> <span class="identifier">O</span> <span class="identifier">move_backward</span><span class="special">(</span><span class="identifier">I</span><span class="special">,</span> <span class="identifier">I</span><span class="special">,</span> <span class="identifier">O</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">I</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">&gt;</span> <span class="identifier">F</span> <span class="identifier">uninitialized_move</span><span class="special">(</span><span class="identifier">I</span><span class="special">,</span> <span class="identifier">I</span><span class="special">,</span> <span class="identifier">F</span><span class="special">);</span>
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">I</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">&gt;</span> <span class="identifier">F</span> <span class="identifier">uninitialized_copy_or_move</span><span class="special">(</span><span class="identifier">I</span><span class="special">,</span> <span class="identifier">I</span><span class="special">,</span> <span class="identifier">F</span><span class="special">);</span>
+</pre>
+<p>
+ The first 3 are move variations of their equivalent copy algorithms, but copy
+ assignment and copy construction are replaced with move assignment and construction.
+ The last one has the same behaviour as <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">uninitialized_copy</span></code>
+ but since several standand library implementations don't play very well with
+ <code class="computeroutput"><span class="identifier">move_iterator</span></code>s, this version
+ is a portable version for those willing to use move iterators.
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="string">"movable.hpp"</span>
+<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">aligned_storage</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="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">ArraySize</span> <span class="special">=</span> <span class="number">10</span><span class="special">;</span>
+ <span class="identifier">movable</span> <span class="identifier">movable_array</span><span class="special">[</span><span class="identifier">ArraySize</span><span class="special">];</span>
+ <span class="identifier">movable</span> <span class="identifier">movable_array2</span><span class="special">[</span><span class="identifier">ArraySize</span><span class="special">];</span>
+ <span class="comment">//move
+</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(&amp;</span><span class="identifier">movable_array2</span><span class="special">[</span><span class="number">0</span><span class="special">],</span> <span class="special">&amp;</span><span class="identifier">movable_array2</span><span class="special">[</span><span class="identifier">ArraySize</span><span class="special">],</span> <span class="special">&amp;</span><span class="identifier">movable_array</span><span class="special">[</span><span class="number">0</span><span class="special">]);</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">movable_array2</span><span class="special">[</span><span class="number">0</span><span class="special">].</span><span class="identifier">moved</span><span class="special">());</span>
+ <span class="identifier">assert</span><span class="special">(!</span><span class="identifier">movable_array</span><span class="special">[</span><span class="number">0</span><span class="special">].</span><span class="identifier">moved</span><span class="special">());</span>
+
+ <span class="comment">//move backward
+</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">move_backward</span><span class="special">(&amp;</span><span class="identifier">movable_array</span><span class="special">[</span><span class="number">0</span><span class="special">],</span> <span class="special">&amp;</span><span class="identifier">movable_array</span><span class="special">[</span><span class="identifier">ArraySize</span><span class="special">],</span> <span class="special">&amp;</span><span class="identifier">movable_array2</span><span class="special">[</span><span class="identifier">ArraySize</span><span class="special">]);</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">movable_array</span><span class="special">[</span><span class="number">0</span><span class="special">].</span><span class="identifier">moved</span><span class="special">());</span>
+ <span class="identifier">assert</span><span class="special">(!</span><span class="identifier">movable_array2</span><span class="special">[</span><span class="number">0</span><span class="special">].</span><span class="identifier">moved</span><span class="special">());</span>
+
+ <span class="comment">//uninitialized_move
+</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">aligned_storage</span><span class="special">&lt;</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">movable</span><span class="special">)*</span><span class="identifier">ArraySize</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">alignment_of</span><span class="special">&lt;</span><span class="identifier">movable</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">storage</span><span class="special">;</span>
+ <span class="identifier">movable</span> <span class="special">*</span><span class="identifier">raw_movable</span> <span class="special">=</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">movable</span><span class="special">*&gt;(</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">*&gt;(&amp;</span><span class="identifier">storage</span><span class="special">));</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uninitialized_move</span><span class="special">(&amp;</span><span class="identifier">movable_array2</span><span class="special">[</span><span class="number">0</span><span class="special">],</span> <span class="special">&amp;</span><span class="identifier">movable_array2</span><span class="special">[</span><span class="identifier">ArraySize</span><span class="special">],</span> <span class="identifier">raw_movable</span><span class="special">);</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">movable_array2</span><span class="special">[</span><span class="number">0</span><span class="special">].</span><span class="identifier">moved</span><span class="special">());</span>
+ <span class="identifier">assert</span><span class="special">(!</span><span class="identifier">raw_movable</span><span class="special">[</span><span class="number">0</span><span class="special">].</span><span class="identifier">moved</span><span class="special">());</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+</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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_inserters.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/move/move_inserters.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/move/move_inserters.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,141 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Move inserters</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="prev" href="move_iterator.html" title=" Move iterators">
+<link rel="next" href="move_algorithms.html" title=" Move algorithms">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_iterator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_algorithms.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="move.move_inserters"></a> Move inserters</h2></div></div></div>
+<p>
+ Similar to standard insert iterators, it's possible to deal with move insertion
+ in the same way as writing into an array. A special kind of iterator adaptors,
+ called move insert iterators, are provided with this library. With regular
+ iterator classes,
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="keyword">while</span> <span class="special">(</span><span class="identifier">first</span> <span class="special">!=</span> <span class="identifier">last</span><span class="special">)</span> <span class="special">*</span><span class="identifier">result</span><span class="special">++</span> <span class="special">=</span> <span class="special">*</span><span class="identifier">first</span><span class="special">++;</span>
+</pre>
+<p>
+ causes a range [first,last) to be copied into a range starting with result.
+ The same code with result being an move insert iterator will move insert corresponding
+ elements into the container. This device allows all of the copying algorithms
+ in the library to work in the move insert mode instead of the regular overwrite
+ mode. This library offers 3 move insert iterators and their helper functions:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="comment">// Note: C models Container
+</span><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">back_move_insert_iterator</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">&gt;</span>
+<span class="identifier">back_move_insert_iterator</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;</span> <span class="identifier">back_move_inserter</span><span class="special">(</span><span class="identifier">C</span><span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">front_move_insert_iterator</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">&gt;</span>
+<span class="identifier">front_move_insert_iterator</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;</span> <span class="identifier">front_move_inserter</span><span class="special">(</span><span class="identifier">C</span><span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">move_insert_iterator</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">&gt;</span>
+<span class="identifier">move_insert_iterator</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;</span> <span class="identifier">move_inserter</span><span class="special">(</span><span class="identifier">C</span><span class="special">&amp;</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">C</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">it</span><span class="special">);</span>
+</pre>
+<p>
+ A move insert iterator is constructed from a container and possibly one of
+ its iterators pointing to where insertion takes place if it is neither at the
+ beginning nor at the end of the container. Insert iterators satisfy the requirements
+ of output iterators. <code class="computeroutput"><span class="keyword">operator</span><span class="special">*</span></code> returns the move insert iterator itself. The
+ assignment <code class="computeroutput"><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">x</span><span class="special">)</span></code> is defined on insert iterators to allow writing
+ into them, it inserts x right before where the insert iterator is pointing.
+ In other words, an <code class="computeroutput"><span class="identifier">insert</span> <span class="identifier">iterator</span></code> is like a cursor pointing into the
+ container where the insertion takes place. <code class="computeroutput"><span class="identifier">back_move_iterator</span></code>
+ move inserts elements at the end of a container, <code class="computeroutput"><span class="identifier">front_insert_iterator</span></code>
+ move inserts elements at the beginning of a container, and <code class="computeroutput"><span class="identifier">move_insert_iterator</span></code>
+ move inserts elements where the iterator points to in a container. <code class="computeroutput"><span class="identifier">back_move_inserter</span></code>, <code class="computeroutput"><span class="identifier">front_move_inserter</span></code>,
+ and <code class="computeroutput"><span class="identifier">move_inserter</span></code> are three
+ functions making the insert iterators out of a container. Here's an example
+ of how to use them:
+ </p>
+<p>
+ </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">interprocess</span><span class="special">/</span><span class="identifier">containers</span><span class="special">/</span><span class="identifier">list</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="string">"movable.hpp"</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cassert</span><span class="special">&gt;</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">interprocess</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">list</span><span class="special">&lt;</span><span class="identifier">movable</span><span class="special">&gt;</span> <span class="identifier">list_t</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">list_t</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">l_iterator</span><span class="special">;</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">MoveInsertIterator</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">test_move_inserter</span><span class="special">(</span><span class="identifier">list_t</span> <span class="special">&amp;</span><span class="identifier">l2</span><span class="special">,</span> <span class="identifier">MoveInsertIterator</span> <span class="identifier">mit</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">//Create a list with 10 default constructed objects
+</span> <span class="identifier">list</span><span class="special">&lt;</span><span class="identifier">movable</span><span class="special">&gt;</span> <span class="identifier">l</span><span class="special">(</span><span class="number">10</span><span class="special">);</span>
+ <span class="identifier">assert</span><span class="special">(!</span><span class="identifier">l</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()-&gt;</span><span class="identifier">moved</span><span class="special">());</span>
+ <span class="identifier">l2</span><span class="special">.</span><span class="identifier">clear</span><span class="special">();</span>
+
+ <span class="comment">//Move construct
+</span> <span class="keyword">for</span><span class="special">(</span><span class="identifier">l_iterator</span> <span class="identifier">itbeg</span> <span class="special">=</span> <span class="identifier">l</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">itend</span> <span class="special">=</span> <span class="identifier">l</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span> <span class="identifier">itbeg</span> <span class="special">!=</span> <span class="identifier">itend</span><span class="special">;</span> <span class="special">++</span><span class="identifier">itbeg</span><span class="special">){</span>
+ <span class="special">*</span><span class="identifier">mit</span> <span class="special">=</span> <span class="special">*</span><span class="identifier">itbeg</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="comment">//Check size and status
+</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">l2</span><span class="special">.</span><span class="identifier">size</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">l</span><span class="special">.</span><span class="identifier">size</span><span class="special">());</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">l</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()-&gt;</span><span class="identifier">moved</span><span class="special">());</span>
+ <span class="identifier">assert</span><span class="special">(!</span><span class="identifier">l2</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()-&gt;</span><span class="identifier">moved</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">list_t</span> <span class="identifier">l2</span><span class="special">;</span>
+ <span class="identifier">test_move_inserter</span><span class="special">(</span><span class="identifier">l2</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">back_move_inserter</span><span class="special">(</span><span class="identifier">l2</span><span class="special">));</span>
+ <span class="identifier">test_move_inserter</span><span class="special">(</span><span class="identifier">l2</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">front_move_inserter</span><span class="special">(</span><span class="identifier">l2</span><span class="special">));</span>
+ <span class="identifier">test_move_inserter</span><span class="special">(</span><span class="identifier">l2</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">move_inserter</span><span class="special">(</span><span class="identifier">l2</span><span class="special">,</span> <span class="identifier">l2</span><span class="special">.</span><span class="identifier">end</span><span class="special">()));</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+</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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_iterator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_algorithms.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/move/move_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/move/move_iterator.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,141 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Move iterators</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="prev" href="construct_forwarding.html" title=" Constructor Forwarding">
+<link rel="next" href="move_inserters.html" title=" Move inserters">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="construct_forwarding.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_inserters.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="move.move_iterator"></a> Move iterators</h2></div></div></div>
+<p>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Iterator</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">move_iterator</span><span class="special">;</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">It</span><span class="special">&gt;</span>
+<span class="identifier">move_iterator</span><span class="special">&lt;</span><span class="identifier">It</span><span class="special">&gt;</span> <span class="identifier">make_move_iterator</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">It</span> <span class="special">&amp;</span><span class="identifier">it</span><span class="special">);</span>
+</pre>
+<p>
+ <code class="computeroutput">move_iterator</code> is an iterator
+ adaptor with the same behavior as the underlying iterator except that its dereference
+ operator implicitly converts the value returned by the underlying iterator's
+ dereference operator to an rvalue reference: <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(*</span><span class="identifier">underlying_iterator</span><span class="special">)</span></code>
+ It is a read-once iterator, but can have up to random access traversal characteristics.
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">move_iterator</span></code> is very useful
+ because some generic algorithms and container insertion functions can be called
+ with move iterators to replace copying with moving. For example:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="comment">//header file "movable.hpp"
+</span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">move_semantics</span><span class="special">/</span><span class="identifier">move</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="comment">//A movable class
+</span><span class="keyword">class</span> <span class="identifier">movable</span>
+<span class="special">{</span>
+ <span class="comment">//Non-copyable
+</span> <span class="identifier">movable</span><span class="special">(</span><span class="identifier">movable</span> <span class="special">&amp;);</span>
+ <span class="identifier">movable</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">movable</span> <span class="special">&amp;);</span>
+
+ <span class="keyword">int</span> <span class="identifier">value_</span><span class="special">;</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">BOOST_ENABLE_MOVE_EMULATION</span><span class="special">(</span><span class="identifier">movable</span><span class="special">)</span>
+
+ <span class="identifier">movable</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">value_</span><span class="special">(</span><span class="number">1</span><span class="special">){}</span>
+
+ <span class="comment">//Move constructor and assignment
+</span> <span class="identifier">movable</span><span class="special">(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">movable</span><span class="special">)</span> <span class="identifier">m</span><span class="special">)</span>
+ <span class="special">{</span> <span class="identifier">value_</span> <span class="special">=</span> <span class="identifier">m</span><span class="special">.</span><span class="identifier">value_</span><span class="special">;</span> <span class="identifier">m</span><span class="special">.</span><span class="identifier">value_</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="identifier">movable</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">movable</span><span class="special">)</span> <span class="identifier">m</span><span class="special">)</span>
+ <span class="special">{</span> <span class="identifier">value_</span> <span class="special">=</span> <span class="identifier">m</span><span class="special">.</span><span class="identifier">value_</span><span class="special">;</span> <span class="identifier">m</span><span class="special">.</span><span class="identifier">value_</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="keyword">bool</span> <span class="identifier">moved</span><span class="special">()</span> <span class="keyword">const</span> <span class="comment">//Observer
+</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">value_</span> <span class="special">==</span> <span class="number">0</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">};</span>
+
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">movable</span></code> objects can be moved
+ from one container to another using move iterators and insertion and assignment
+ operations.w
+ </p>
+<p>
+ </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">interprocess</span><span class="special">/</span><span class="identifier">containers</span><span class="special">/</span><span class="identifier">vector</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="string">"movable.hpp"</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cassert</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="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">interprocess</span><span class="special">;</span>
+
+ <span class="comment">//Create a vector with 10 default constructed objects
+</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">movable</span><span class="special">&gt;</span> <span class="identifier">v</span><span class="special">(</span><span class="number">10</span><span class="special">);</span>
+ <span class="identifier">assert</span><span class="special">(!</span><span class="identifier">v</span><span class="special">[</span><span class="number">0</span><span class="special">].</span><span class="identifier">moved</span><span class="special">());</span>
+
+ <span class="comment">//Move construct all elements in v into v2
+</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">movable</span><span class="special">&gt;</span> <span class="identifier">v2</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">make_move_iterator</span><span class="special">(</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">begin</span><span class="special">())</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">make_move_iterator</span><span class="special">(</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">end</span><span class="special">()));</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">v</span><span class="special">[</span><span class="number">0</span><span class="special">].</span><span class="identifier">moved</span><span class="special">());</span>
+ <span class="identifier">assert</span><span class="special">(!</span><span class="identifier">v2</span><span class="special">[</span><span class="number">0</span><span class="special">].</span><span class="identifier">moved</span><span class="special">());</span>
+
+ <span class="comment">//Now move assign all elements from in v2 back into v
+</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">make_move_iterator</span><span class="special">(</span><span class="identifier">v2</span><span class="special">.</span><span class="identifier">begin</span><span class="special">())</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">make_move_iterator</span><span class="special">(</span><span class="identifier">v2</span><span class="special">.</span><span class="identifier">end</span><span class="special">()));</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">v2</span><span class="special">[</span><span class="number">0</span><span class="special">].</span><span class="identifier">moved</span><span class="special">());</span>
+ <span class="identifier">assert</span><span class="special">(!</span><span class="identifier">v</span><span class="special">[</span><span class="number">0</span><span class="special">].</span><span class="identifier">moved</span><span class="special">());</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+</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 © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="construct_forwarding.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="move_inserters.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/libs/move_semantics/doc/html/move/reference.html
==============================================================================
--- (empty file)
+++ sandbox/libs/move_semantics/doc/html/move/reference.html 2009-02-17 15:35:33 EST (Tue, 17 Feb 2009)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Reference</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.67.0">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.Move">
+<link rel="prev" href="move_algorithms.html" title=" Move algorithms">
+<link rel="next" href="../boost/is_movable.html" title="Class template is_movable">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_algorithms.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/is_movable.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="move.reference"></a>Reference</h2></div></div></div>
+<div class="toc"><dl><dt><span class="section">Header <boost/move_semantics/move.hpp></span></dt></dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.move_semantics.move_hpp"></a>Header &lt;boost/move_semantics/move.hpp&gt;</h3></div></div></div>
+<pre class="synopsis">
+
+BOOST_ENABLE_MOVE_EMULATION(TYPE)
+BOOST_RV_REF(TYPE)
+BOOST_CONSTRUCT_FWD_REF(TYPE)</pre>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="bold"><strong>class</strong></span> is_movable;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> It&gt; <span class="bold"><strong>class</strong></span> move_iterator;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> C&gt; <span class="bold"><strong>class</strong></span> back_move_insert_iterator;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> C&gt; <span class="bold"><strong>class</strong></span> front_move_insert_iterator;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> C&gt; <span class="bold"><strong>class</strong></span> move_insert_iterator;
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="type">rvalue_reference</span> move(input_reference);
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T&gt; <span class="type">output_reference</span> forward_constructor(input_reference);
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> It&gt; <span class="type">move_iterator&lt; It &gt;</span> make_move_iterator(<span class="bold"><strong>const</strong></span> It &amp;);
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> C&gt; <span class="type">back_move_insert_iterator&lt; C &gt;</span> back_move_inserter(C &amp;);
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> C&gt;
+ <span class="type">front_move_insert_iterator&lt; C &gt;</span> front_move_inserter(C &amp;);
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> C&gt;
+ <span class="type">move_insert_iterator&lt; C &gt;</span> move_inserter(C &amp;, <span class="bold"><strong>typename</strong></span> C::iterator);
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> O&gt; <span class="type">O</span> move(I, I, O);
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> O&gt; <span class="type">O</span> move_backward(I, I, O);
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> F&gt; <span class="type">F</span> uninitialized_move(I, I, F);
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> F&gt; <span class="type">F</span> uninitialized_copy_or_move(I, I, F);
+}</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2009 Ion Gaztañaga<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="move_algorithms.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/is_movable.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>


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