|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r61839 - in sandbox/move/libs/move/doc/html: . boost images move
From: igaztanaga_at_[hidden]
Date: 2010-05-07 11:59:41
Author: igaztanaga
Date: 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
New Revision: 61839
URL: http://svn.boost.org/trac/boost/changeset/61839
Log:
Added documentation for review
Added:
sandbox/move/libs/move/doc/html/
sandbox/move/libs/move/doc/html/BOOST_COPYABLE_AND_MOVABLE.html (contents, props changed)
sandbox/move/libs/move/doc/html/BOOST_COPY_ASSIGN_REF.html (contents, props changed)
sandbox/move/libs/move/doc/html/BOOST_FWD_REF.html (contents, props changed)
sandbox/move/libs/move/doc/html/BOOST_MOVABLE_BUT_NOT_COPYABLE.html (contents, props changed)
sandbox/move/libs/move/doc/html/BOOST_MOVE_OPTIMIZED_EMULATION.html (contents, props changed)
sandbox/move/libs/move/doc/html/BOOST_RV_REF.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/
sandbox/move/libs/move/doc/html/boost/back_move_insert_iterator.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/back_move_inserter.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/forward.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/front_move_insert_iterator.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/front_move_inserter.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/has_nothrow_move.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/has_trivial_destructor__id336849.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/has_trivial_destructor__id339034.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/is_movable.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/make_move_iterator.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/move_backward.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/move_id336863.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/move_id337012.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/move_id339048.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/move_id339197.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/move_insert_iterator.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/move_inserter.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/move_iterator.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/uninitialized_copy_or_move.html (contents, props changed)
sandbox/move/libs/move/doc/html/boost/uninitialized_move.html (contents, props changed)
sandbox/move/libs/move/doc/html/boostbook.css (contents, props changed)
sandbox/move/libs/move/doc/html/images/
sandbox/move/libs/move/doc/html/images/blank.png (contents, props changed)
sandbox/move/libs/move/doc/html/images/caution.png (contents, props changed)
sandbox/move/libs/move/doc/html/images/draft.png (contents, props changed)
sandbox/move/libs/move/doc/html/images/home.png (contents, props changed)
sandbox/move/libs/move/doc/html/images/important.png (contents, props changed)
sandbox/move/libs/move/doc/html/images/next.png (contents, props changed)
sandbox/move/libs/move/doc/html/images/note.png (contents, props changed)
sandbox/move/libs/move/doc/html/images/prev.png (contents, props changed)
sandbox/move/libs/move/doc/html/images/tip.png (contents, props changed)
sandbox/move/libs/move/doc/html/images/toc-blank.png (contents, props changed)
sandbox/move/libs/move/doc/html/images/toc-minus.png (contents, props changed)
sandbox/move/libs/move/doc/html/images/toc-plus.png (contents, props changed)
sandbox/move/libs/move/doc/html/images/up.png (contents, props changed)
sandbox/move/libs/move/doc/html/images/warning.png (contents, props changed)
sandbox/move/libs/move/doc/html/index.html (contents, props changed)
sandbox/move/libs/move/doc/html/move/
sandbox/move/libs/move/doc/html/move/composition_inheritance.html (contents, props changed)
sandbox/move/libs/move/doc/html/move/construct_forwarding.html (contents, props changed)
sandbox/move/libs/move/doc/html/move/emulation_limitations.html (contents, props changed)
sandbox/move/libs/move/doc/html/move/how_the_emulation_works.html (contents, props changed)
sandbox/move/libs/move/doc/html/move/implementing_movable_classes.html (contents, props changed)
sandbox/move/libs/move/doc/html/move/introduction.html (contents, props changed)
sandbox/move/libs/move/doc/html/move/movable_only_classes.html (contents, props changed)
sandbox/move/libs/move/doc/html/move/move_algorithms.html (contents, props changed)
sandbox/move/libs/move/doc/html/move/move_and_containers.html (contents, props changed)
sandbox/move/libs/move/doc/html/move/move_inserters.html (contents, props changed)
sandbox/move/libs/move/doc/html/move/move_iterator.html (contents, props changed)
sandbox/move/libs/move/doc/html/move/reference.html (contents, props changed)
sandbox/move/libs/move/doc/html/move/thanks_to.html (contents, props changed)
sandbox/move/libs/move/doc/html/move/two_emulation_modes.html (contents, props changed)
sandbox/move/libs/move/doc/html/reference.css (contents, props changed)
Added: sandbox/move/libs/move/doc/html/BOOST_COPYABLE_AND_MOVABLE.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/BOOST_COPYABLE_AND_MOVABLE.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Macro BOOST_COPYABLE_AND_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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="BOOST_MOVABLE_BUT_NOT_COPYABLE.html" title="Macro BOOST_MOVABLE_BUT_NOT_COPYABLE">
+<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_MOVABLE_BUT_NOT_COPYABLE.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move.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_COPYABLE_AND_MOVABLE"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro BOOST_COPYABLE_AND_MOVABLE</span></h2>
+<p>BOOST_COPYABLE_AND_MOVABLE — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>BOOST_COPYABLE_AND_MOVABLE(TYPE)</pre></div>
+<div class="refsect1" lang="en">
+<a name="id586436"></a><h2>Description</h2>
+<p>This macro marks a type as copyable and movable. The user will need to write a move constructor/assignment and a copy assignment as explained in the documentation to fully write a copyable and movable class. </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 -2010 Ion Gaztanaga<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_MOVABLE_BUT_NOT_COPYABLE.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move.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/move/libs/move/doc/html/BOOST_COPY_ASSIGN_REF.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/BOOST_COPY_ASSIGN_REF.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Macro BOOST_COPY_ASSIGN_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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="BOOST_RV_REF.html" title="Macro BOOST_RV_REF">
+<link rel="next" href="BOOST_FWD_REF.html" title="Macro BOOST_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_RV_REF.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move.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_FWD_REF.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="BOOST_COPY_ASSIGN_REF"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro BOOST_COPY_ASSIGN_REF</span></h2>
+<p>BOOST_COPY_ASSIGN_REF — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>BOOST_COPY_ASSIGN_REF(TYPE)</pre></div>
+<div class="refsect1" lang="en">
+<a name="id586499"></a><h2>Description</h2>
+<p>This macro is used to achieve portable syntax in copy assignment for classes marked as BOOST_COPYABLE_AND_MOVABLE. </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 -2010 Ion Gaztanaga<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.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_FWD_REF.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/BOOST_FWD_REF.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/BOOST_FWD_REF.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Macro BOOST_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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="BOOST_COPY_ASSIGN_REF.html" title="Macro BOOST_COPY_ASSIGN_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_COPY_ASSIGN_REF.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move.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_FWD_REF"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro BOOST_FWD_REF</span></h2>
+<p>BOOST_FWD_REF — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>BOOST_FWD_REF(TYPE)</pre></div>
+<div class="refsect1" lang="en">
+<a name="id586530"></a><h2>Description</h2>
+<p>This macro is used to implement portable perfect forwarding as explained in the documentation. </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 -2010 Ion Gaztanaga<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_COPY_ASSIGN_REF.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move.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/move/libs/move/doc/html/BOOST_MOVABLE_BUT_NOT_COPYABLE.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/BOOST_MOVABLE_BUT_NOT_COPYABLE.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Macro BOOST_MOVABLE_BUT_NOT_COPYABLE</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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="BOOST_MOVE_OPTIMIZED_EMULATION.html" title="Macro BOOST_MOVE_OPTIMIZED_EMULATION">
+<link rel="next" href="BOOST_COPYABLE_AND_MOVABLE.html" title="Macro BOOST_COPYABLE_AND_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="BOOST_MOVE_OPTIMIZED_EMULATION.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move.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_COPYABLE_AND_MOVABLE.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="BOOST_MOVABLE_BUT_NOT_COPYABLE"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro BOOST_MOVABLE_BUT_NOT_COPYABLE</span></h2>
+<p>BOOST_MOVABLE_BUT_NOT_COPYABLE — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>BOOST_MOVABLE_BUT_NOT_COPYABLE(TYPE)</pre></div>
+<div class="refsect1" lang="en">
+<a name="id586405"></a><h2>Description</h2>
+<p>This macro marks a type as movable but not copyable, disabling copy construction and assignment. The user will need to write a move constructor/assignment as explained in the documentation to fully write a movable but not copyable class. </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 -2010 Ion Gaztanaga<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_MOVE_OPTIMIZED_EMULATION.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move.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_COPYABLE_AND_MOVABLE.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/BOOST_MOVE_OPTIMIZED_EMULATION.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/BOOST_MOVE_OPTIMIZED_EMULATION.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Macro BOOST_MOVE_OPTIMIZED_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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="boost/uninitialized_copy_or_move.html" title="Function template uninitialized_copy_or_move">
+<link rel="next" href="BOOST_MOVABLE_BUT_NOT_COPYABLE.html" title="Macro BOOST_MOVABLE_BUT_NOT_COPYABLE">
+</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.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_MOVABLE_BUT_NOT_COPYABLE.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="BOOST_MOVE_OPTIMIZED_EMULATION"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro BOOST_MOVE_OPTIMIZED_EMULATION</span></h2>
+<p>BOOST_MOVE_OPTIMIZED_EMULATION — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>BOOST_MOVE_OPTIMIZED_EMULATION</pre></div>
+<div class="refsect1" lang="en">
+<a name="id586360"></a><h2>Description</h2>
+<p>Defining or undefining this macro will change Boost.Move behaviour for copyable and movable classes when assigning from non-const rvalues: </p>
+<pre class="programlisting"> copyable_and_movable produce(){ return copyable_and_movable(); }
+</pre>
+<p> If the macro is NOT defined: </p>
+<pre class="programlisting"> copyable_and_movable cm;
+ cm = copyable_and_movable(); //object is COPIED (missed optimization)
+</pre>
+<p> If the macro IS defined: </p>
+<pre class="programlisting"> copyable_and_movable cm;
+ cm = copyable_and_movable(); //object is MOVED
+</pre>
+<p> However, the second option has also some downsides. See documentation for more details. </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 -2010 Ion Gaztanaga<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.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_MOVABLE_BUT_NOT_COPYABLE.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/BOOST_RV_REF.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/BOOST_RV_REF.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,53 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="BOOST_COPYABLE_AND_MOVABLE.html" title="Macro BOOST_COPYABLE_AND_MOVABLE">
+<link rel="next" href="BOOST_COPY_ASSIGN_REF.html" title="Macro BOOST_COPY_ASSIGN_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_COPYABLE_AND_MOVABLE.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move.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_COPY_ASSIGN_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 — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>BOOST_RV_REF(TYPE)</pre></div>
+<div class="refsect1" lang="en">
+<a name="id586468"></a><h2>Description</h2>
+<p>This macro is used to achieve portable syntax in move constructors and assignments for classes marked as BOOST_COPYABLE_AND_MOVABLE or BOOST_MOVABLE_BUT_NOT_COPYABLE </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 -2010 Ion Gaztanaga<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_COPYABLE_AND_MOVABLE.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="move/reference.html#header.boost.move.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_COPY_ASSIGN_REF.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/boost/back_move_insert_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/back_move_insert_iterator.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,86 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<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.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 — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span><span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> C>
+<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 &);
+ back_move_insert_iterator& 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 &</span> operator*() ;
+ <span class="type">back_move_insert_iterator &</span> operator++() ;
+ <span class="type">back_move_insert_iterator &</span> operator++(<span class="bold"><strong>int</strong></span>) ;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id585042"></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="id585048"></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="id338905-bb"></a>back_move_insert_iterator(C & x);</pre></li>
+<li><pre class="literallayout">back_move_insert_iterator& <a name="id338911-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="id585091"></a><h3>
+<a name="id338873-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 &</span> <a name="id338875-bb"></a><span class="bold"><strong>operator</strong></span>*() ;</pre></li>
+<li><pre class="literallayout"><span class="type">back_move_insert_iterator &</span> <a name="id338884-bb"></a><span class="bold"><strong>operator</strong></span>++() ;</pre></li>
+<li><pre class="literallayout"><span class="type">back_move_insert_iterator &</span> <a name="id338892-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 -2010 Ion Gaztanaga<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.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/move/libs/move/doc/html/boost/back_move_inserter.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/back_move_inserter.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,54 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<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.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 — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>
+<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> C> <span class="type">back_move_insert_iterator< C ></span> back_move_inserter(C & x);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id585946"></a><h2>Description</h2>
+<p><span class="bold"><strong>Returns</strong></span>: back_move_insert_iterator<C>(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 -2010 Ion Gaztanaga<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.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/move/libs/move/doc/html/boost/forward.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/forward.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,57 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Function template forward</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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="move_id339048.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_id339048.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template forward</span></h2>
+<p>boost::forward — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>
+<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> T> <span class="type">output_reference</span> forward(input_reference);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id585834"></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<T> & then it output_reference is boost::rev<T> &</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 -2010 Ion Gaztanaga<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_id339048.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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/move/libs/move/doc/html/boost/front_move_insert_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/front_move_insert_iterator.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,86 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<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.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 — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span><span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> C>
+<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 &);
+ front_move_insert_iterator& 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 &</span> operator*() ;
+ <span class="type">front_move_insert_iterator &</span> operator++() ;
+ <span class="type">front_move_insert_iterator &</span> operator++(<span class="bold"><strong>int</strong></span>) ;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id585314"></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="id585320"></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="id338966-bb"></a>front_move_insert_iterator(C & x);</pre></li>
+<li><pre class="literallayout">front_move_insert_iterator& <a name="id338972-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="id585364"></a><h3>
+<a name="id338934-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 &</span> <a name="id338936-bb"></a><span class="bold"><strong>operator</strong></span>*() ;</pre></li>
+<li><pre class="literallayout"><span class="type">front_move_insert_iterator &</span> <a name="id338945-bb"></a><span class="bold"><strong>operator</strong></span>++() ;</pre></li>
+<li><pre class="literallayout"><span class="type">front_move_insert_iterator &</span> <a name="id338953-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 -2010 Ion Gaztanaga<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.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/move/libs/move/doc/html/boost/front_move_inserter.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/front_move_inserter.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,55 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<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.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 — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>
+<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> C>
+ <span class="type">front_move_insert_iterator< C ></span> front_move_inserter(C & x);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id585998"></a><h2>Description</h2>
+<p><span class="bold"><strong>Returns</strong></span>: front_move_insert_iterator<C>(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 -2010 Ion Gaztanaga<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.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/move/libs/move/doc/html/boost/has_nothrow_move.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/has_nothrow_move.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Struct template has_nothrow_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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="is_movable.html" title="Struct template is_movable">
+<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="is_movable.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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.has_nothrow_move"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template has_nothrow_move</span></h2>
+<p>boost::has_nothrow_move — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span><span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> T>
+<span class="bold"><strong>struct</strong></span> has_nothrow_move {
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id583910"></a><h2>Description</h2>
+<p>By default this traits returns false. Classes with non-thworing move construction and assignment should specialize this trait to obtain some performance improvements. </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 -2010 Ion Gaztanaga<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.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/move/libs/move/doc/html/boost/has_trivial_destructor__id336849.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/has_trivial_destructor__id336849.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Struct template has_trivial_destructor_after_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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="move_insert_iterator.html" title="Class template move_insert_iterator">
+<link rel="next" href="move_id336863.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="move_insert_iterator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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_id336863.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.has_trivial_destructor__id336849"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template has_trivial_destructor_after_move</span></h2>
+<p>boost::has_trivial_destructor_after_move — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span><span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> T>
+<span class="bold"><strong>struct</strong></span> has_trivial_destructor_after_move {
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id563898"></a><h2>Description</h2>
+<p>If this trait yields to true (has_trivial_destructor_after_move <T>value == true) means that if T is used as argument of a move construction/assignment, there is no need to call T's destructor. This optimization tipically is used to improve containers' performance.</p>
+<p>By default this trait is true if the type has trivial destructor, every class should specialize this trait if it wants to improve performance when inserted in containers. </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 -2010 Ion Gaztanaga<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.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_id336863.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/boost/has_trivial_destructor__id339034.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/has_trivial_destructor__id339034.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Struct template has_trivial_destructor_after_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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="move_insert_iterator.html" title="Class template move_insert_iterator">
+<link rel="next" href="move_id339048.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="move_insert_iterator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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_id339048.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.has_trivial_destructor__id339034"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template has_trivial_destructor_after_move</span></h2>
+<p>boost::has_trivial_destructor_after_move — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span><span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> T>
+<span class="bold"><strong>struct</strong></span> has_trivial_destructor_after_move {
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id585743"></a><h2>Description</h2>
+<p>If this trait yields to true (has_trivial_destructor_after_move <T>value == true) means that if T is used as argument of a move construction/assignment, there is no need to call T's destructor. This optimization tipically is used to improve containers' performance.</p>
+<p>By default this trait is true if the type has trivial destructor, every class should specialize this trait if it wants to improve performance when inserted in containers. </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 -2010 Ion Gaztanaga<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.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_id339048.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/boost/is_movable.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/is_movable.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Struct 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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="../move/reference.html" title="Reference">
+<link rel="next" href="has_nothrow_move.html" title="Struct template has_nothrow_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/reference.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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="has_nothrow_move.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">Struct template is_movable</span></h2>
+<p>boost::is_movable — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span><span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> T>
+<span class="bold"><strong>struct</strong></span> is_movable {
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id583858"></a><h2>Description</h2>
+<p>For compilers with rvalue references, this traits class returns true if BOOST_ENABLE_MOVE_EMULATION is activated.</p>
+<p>For other compilers returns true if T is convertible to boost::rv<T>& </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 -2010 Ion Gaztanaga<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.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="has_nothrow_move.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/boost/make_move_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/make_move_iterator.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,54 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="forward.html" title="Function template forward">
+<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.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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 — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>
+<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> It> <span class="type">move_iterator< It ></span> make_move_iterator(<span class="bold"><strong>const</strong></span> It & it);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id585894"></a><h2>Description</h2>
+<p><span class="bold"><strong>Returns</strong></span>: move_iterator<It>(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 -2010 Ion Gaztanaga<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.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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/move/libs/move/doc/html/boost/move_backward.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/move_backward.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,57 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="move_id339197.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_id339197.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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 — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>
+<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> O> <span class="type">O</span> move_backward(I f, I l, O result);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id586176"></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 <= (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 -2010 Ion Gaztanaga<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_id339197.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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/move/libs/move/doc/html/boost/move_id336863.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/move_id336863.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,54 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="has_trivial_destructor__id336849.html" title="Struct template has_trivial_destructor_after_move">
+<link rel="next" href="forward.html" title="Function template forward">
+</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="has_trivial_destructor__id336849.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.move_id336863"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template move</span></h2>
+<p>boost::move — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>
+<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> T> <span class="type">rvalue_reference</span> move(input_reference);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id563944"></a><h2>Description</h2>
+<p>This function provides a way to convert a reference into a rvalue reference in compilers with rvalue references. For other compilers converts T & into boost::rv<T> & 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 -2010 Ion Gaztanaga<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="has_trivial_destructor__id336849.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/boost/move_id337012.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/move_id337012.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,57 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<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.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_id337012"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template move</span></h2>
+<p>boost::move — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>
+<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> O> <span class="type">O</span> move(I f, I l, O result);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id564260"></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 < (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 -2010 Ion Gaztanaga<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.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/move/libs/move/doc/html/boost/move_id339048.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/move_id339048.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,54 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="has_trivial_destructor__id339034.html" title="Struct template has_trivial_destructor_after_move">
+<link rel="next" href="forward.html" title="Function template forward">
+</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="has_trivial_destructor__id339034.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.move_id339048"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template move</span></h2>
+<p>boost::move — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>
+<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> T> <span class="type">rvalue_reference</span> move(input_reference);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id585790"></a><h2>Description</h2>
+<p>This function provides a way to convert a reference into a rvalue reference in compilers with rvalue references. For other compilers converts T & into boost::rv<T> & 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 -2010 Ion Gaztanaga<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="has_trivial_destructor__id339034.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/boost/move_id339197.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/move_id339197.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,57 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<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.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_id339197"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Function template move</span></h2>
+<p>boost::move — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>
+<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> O> <span class="type">O</span> move(I f, I l, O result);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id586105"></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 < (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 -2010 Ion Gaztanaga<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.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/move/libs/move/doc/html/boost/move_insert_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/move_insert_iterator.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,85 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="front_move_insert_iterator.html" title="Class template front_move_insert_iterator">
+<link rel="next" href="has_trivial_destructor__id339034.html" title="Struct template has_trivial_destructor_after_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.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="has_trivial_destructor__id339034.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 — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span><span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> C>
+<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 &, <span class="bold"><strong>typename</strong></span> C::iterator);
+ move_insert_iterator& 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 &</span> operator*() ;
+ <span class="type">move_insert_iterator &</span> operator++() ;
+ <span class="type">move_insert_iterator &</span> operator++(<span class="bold"><strong>int</strong></span>) ;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id585581"></a><h2>Description</h2>
+<div class="refsect2" lang="en">
+<a name="id585584"></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="id339017-bb"></a>move_insert_iterator(C & x, <span class="bold"><strong>typename</strong></span> C::iterator pos);</pre></li>
+<li><pre class="literallayout">move_insert_iterator& <a name="id339028-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="id585631"></a><h3>
+<a name="id338992-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 &</span> <a name="id338994-bb"></a><span class="bold"><strong>operator</strong></span>*() ;</pre></li>
+<li><pre class="literallayout"><span class="type">move_insert_iterator &</span> <a name="id339000-bb"></a><span class="bold"><strong>operator</strong></span>++() ;</pre></li>
+<li><pre class="literallayout"><span class="type">move_insert_iterator &</span> <a name="id339006-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 -2010 Ion Gaztanaga<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.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="has_trivial_destructor__id339034.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/boost/move_inserter.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/move_inserter.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,55 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="front_move_inserter.html" title="Function template front_move_inserter">
+<link rel="next" href="move_id339197.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.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_id339197.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 — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>
+<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> C>
+ <span class="type">move_insert_iterator< C ></span> move_inserter(C & x, <span class="bold"><strong>typename</strong></span> C::iterator it);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id586052"></a><h2>Description</h2>
+<p><span class="bold"><strong>Returns</strong></span>: move_insert_iterator<C>(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 -2010 Ion Gaztanaga<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.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_id339197.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/boost/move_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/move_iterator.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,111 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="has_nothrow_move.html" title="Struct template has_nothrow_move">
+<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="has_nothrow_move.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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 — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span><span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> It>
+<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< iterator_type >::value_type <a name="boost.move_iterator.value_type"></a>value_type;
+ <span class="bold"><strong>typedef</strong></span> value_type && <a name="boost.move_iterator.reference"></a>reference;
+ <span class="bold"><strong>typedef</strong></span> It <a name="boost.move_iterator.pointer"></a>pointer;
+ <span class="bold"><strong>typedef</strong></span> std::iterator_traits< iterator_type >::difference_type <a name="boost.move_iterator.difference_type"></a>difference_type;
+ <span class="bold"><strong>typedef</strong></span> std::iterator_traits< iterator_type >::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><<span class="bold"><strong>typename</strong></span> U> move_iterator(<span class="bold"><strong>const</strong></span> move_iterator< U > &);
+
+ <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 &</span> operator++() ;
+ <span class="type">move_iterator< iterator_type ></span> operator++(<span class="bold"><strong>int</strong></span>) ;
+ <span class="type">move_iterator &</span> operator--() ;
+ <span class="type">move_iterator< iterator_type ></span> operator--(<span class="bold"><strong>int</strong></span>) ;
+ <span class="type">move_iterator< iterator_type ></span> operator+(difference_type) <span class="bold"><strong>const</strong></span>;
+ <span class="type">move_iterator &</span> operator+=(difference_type) ;
+ <span class="type">move_iterator< iterator_type ></span> operator-(difference_type) <span class="bold"><strong>const</strong></span>;
+ <span class="type">move_iterator &</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="id584552"></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="id584558"></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="id338833-bb"></a>move_iterator();</pre></li>
+<li><pre class="literallayout"><a name="id338834-bb"></a>move_iterator(It i);</pre></li>
+<li><pre class="literallayout"><span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> U> <a name="id338840-bb"></a>move_iterator(<span class="bold"><strong>const</strong></span> move_iterator< U > & u);</pre></li>
+</ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id584620"></a><h3>
+<a name="id338705-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="id338708-bb"></a>base() <span class="bold"><strong>const</strong></span>;</pre></li>
+<li><pre class="literallayout"><span class="type">reference</span> <a name="id338714-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="id338720-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">move_iterator &</span> <a name="id338726-bb"></a><span class="bold"><strong>operator</strong></span>++() ;</pre></li>
+<li><pre class="literallayout"><span class="type">move_iterator< iterator_type ></span> <a name="id338734-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 &</span> <a name="id338748-bb"></a><span class="bold"><strong>operator</strong></span>--() ;</pre></li>
+<li><pre class="literallayout"><span class="type">move_iterator< iterator_type ></span> <a name="id338756-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< iterator_type ></span> <a name="id338770-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 &</span> <a name="id338783-bb"></a><span class="bold"><strong>operator</strong></span>+=(difference_type n) ;</pre></li>
+<li><pre class="literallayout"><span class="type">move_iterator< iterator_type ></span> <a name="id338796-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 &</span> <a name="id338809-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="id338822-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 -2010 Ion Gaztanaga<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="has_nothrow_move.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../move/reference.html#header.boost.move.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/move/libs/move/doc/html/boost/uninitialized_copy_or_move.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/uninitialized_copy_or_move.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,60 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<link rel="prev" href="uninitialized_move.html" title="Function template uninitialized_move">
+<link rel="next" href="../BOOST_MOVE_OPTIMIZED_EMULATION.html" title="Macro BOOST_MOVE_OPTIMIZED_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.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_MOVE_OPTIMIZED_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 — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>
+<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> F> <span class="type">F</span> uninitialized_copy_or_move(I f, I l, F r);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id586309"></a><h2>Description</h2>
+<p><span class="bold"><strong>Effects</strong></span>: </p>
+<pre class="programlisting"> for (; first != last; ++result, ++first)
+ new (static_cast<void*>(&*result))
+ typename iterator_traits<ForwardIterator>::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 -2010 Ion Gaztanaga<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.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_MOVE_OPTIMIZED_EMULATION.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/boost/uninitialized_move.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boost/uninitialized_move.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,59 @@
+<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.move_hpp" title="Header <boost/move/move.hpp>">
+<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.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 — </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="emphasis"><em>// In header: <boost/move/move.hpp>
+
+</em></span>
+<span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> F> <span class="type">F</span> uninitialized_move(I f, I l, F r);</pre></div>
+<div class="refsect1" lang="en">
+<a name="id586247"></a><h2>Description</h2>
+<p><span class="bold"><strong>Effects</strong></span>: </p>
+<pre class="programlisting"> for (; first != last; ++result, ++first)
+ new (static_cast<void*>(&*result))
+ typename iterator_traits<ForwardIterator>::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 -2010 Ion Gaztanaga<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.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/move/libs/move/doc/html/boostbook.css
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/boostbook.css 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,538 @@
+/*=============================================================================
+ Copyright (c) 2004 Joel de Guzman
+ http://spirit.sourceforge.net/
+
+ Use, modification and distribution is subject to 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)
+=============================================================================*/
+
+/*=============================================================================
+ Body defaults
+=============================================================================*/
+
+ body
+ {
+ margin: 1em;
+ font-family: sans-serif;
+ }
+
+/*=============================================================================
+ Paragraphs
+=============================================================================*/
+
+ p
+ {
+ text-align: left;
+ font-size: 10pt;
+ line-height: 1.15;
+ }
+
+/*=============================================================================
+ Program listings
+=============================================================================*/
+
+ /* Code on paragraphs */
+ p tt.computeroutput
+ {
+ font-size: 10pt;
+ }
+
+ pre.synopsis
+ {
+ font-size: 10pt;
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.5pc 0.5pc 0.5pc 0.5pc;
+ }
+
+ .programlisting,
+ .screen
+ {
+ font-size: 10pt;
+ display: block;
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.5pc 0.5pc 0.5pc 0.5pc;
+ }
+
+/*=============================================================================
+ Headings
+=============================================================================*/
+
+ h1, h2, h3, h4, h5, h6
+ {
+ text-align: left;
+ margin: 1em 0em 0.5em 0em;
+ font-weight: bold;
+ }
+
+ h1 { font: 140% }
+ h2 { font: bold 140% }
+ h3 { font: bold 130% }
+ h4 { font: bold 120% }
+ h5 { font: italic 110% }
+ h6 { font: italic 100% }
+
+ /* Top page titles */
+ title,
+ h1.title,
+ h2.title
+ h3.title,
+ h4.title,
+ h5.title,
+ h6.title,
+ .refentrytitle
+ {
+ font-weight: bold;
+ margin-bottom: 1pc;
+ }
+
+ h1.title { font-size: 140% }
+ h2.title { font-size: 140% }
+ h3.title { font-size: 130% }
+ h4.title { font-size: 120% }
+ h5.title { font-size: 110% }
+ h6.title { font-size: 100% }
+
+ .section h1
+ {
+ margin: 0em 0em 0.5em 0em;
+ font-size: 140%;
+ }
+
+ .section h2 { font-size: 140% }
+ .section h3 { font-size: 130% }
+ .section h4 { font-size: 120% }
+ .section h5 { font-size: 110% }
+ .section h6 { font-size: 100% }
+
+ /* Code on titles */
+ h1 tt.computeroutput { font-size: 140% }
+ h2 tt.computeroutput { font-size: 140% }
+ h3 tt.computeroutput { font-size: 130% }
+ h4 tt.computeroutput { font-size: 120% }
+ h5 tt.computeroutput { font-size: 110% }
+ h6 tt.computeroutput { font-size: 100% }
+
+/*=============================================================================
+ Author
+=============================================================================*/
+
+ h3.author
+ {
+ font-size: 100%
+ }
+
+/*=============================================================================
+ Lists
+=============================================================================*/
+
+ li
+ {
+ font-size: 10pt;
+ line-height: 1.3;
+ }
+
+ /* Unordered lists */
+ ul
+ {
+ text-align: left;
+ }
+
+ /* Ordered lists */
+ ol
+ {
+ text-align: left;
+ }
+
+/*=============================================================================
+ Links
+=============================================================================*/
+
+ a
+ {
+ text-decoration: none; /* no underline */
+ }
+
+ a:hover
+ {
+ text-decoration: underline;
+ }
+
+/*=============================================================================
+ Spirit style navigation
+=============================================================================*/
+
+ .spirit-nav
+ {
+ text-align: right;
+ }
+
+ .spirit-nav a
+ {
+ color: white;
+ padding-left: 0.5em;
+ }
+
+ .spirit-nav img
+ {
+ border-width: 0px;
+ }
+
+/*=============================================================================
+ Table of contents
+=============================================================================*/
+
+ .toc
+ {
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.1pc 1pc 0.1pc 1pc;
+ font-size: 10pt;
+ line-height: 1.15;
+ }
+
+ .toc-main
+ {
+ width: 600;
+ text-align: center;
+ margin: 1pc 1pc 1pc 10%;
+ padding: 2pc 1pc 3pc 1pc;
+ line-height: 0.1;
+ }
+
+ .boost-toc
+ {
+ float: right;
+ padding: 0.5pc;
+ }
+
+/*=============================================================================
+ Tables
+=============================================================================*/
+
+ .table-title,
+ div.table p.title
+ {
+ margin-left: 4%;
+ padding-right: 0.5em;
+ padding-left: 0.5em;
+ }
+
+ .informaltable table,
+ .table table
+ {
+ width: 92%;
+ margin-left: 4%;
+ margin-right: 4%;
+ }
+
+ div.informaltable table,
+ div.table table
+ {
+ padding: 4px;
+ }
+
+ /* Table Cells */
+ div.informaltable table tr td,
+ div.table table tr td
+ {
+ padding: 0.5em;
+ text-align: left;
+ }
+
+ div.informaltable table tr th,
+ div.table table tr th
+ {
+ padding: 0.5em 0.5em 0.5em 0.5em;
+ border: 1pt solid white;
+ font-size: 120%;
+ }
+
+/*=============================================================================
+ Blurbs
+=============================================================================*/
+
+ div.note,
+ div.tip,
+ div.important,
+ div.caution,
+ div.warning,
+ p.blurb
+ {
+ font-size: 10pt;
+ line-height: 1.2;
+ display: block;
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.5pc 0.5pc 0.5pc 0.5pc;
+ }
+
+ p.blurb img
+ {
+ padding: 1pt;
+ }
+
+/*=============================================================================
+ Variable Lists
+=============================================================================*/
+
+ span.term
+ {
+ font-weight: bold;
+ font-size: 10pt;
+ }
+
+ div.variablelist table tbody tr td
+ {
+ text-align: left;
+ vertical-align: top;
+ padding: 0em 2em 0em 0em;
+ font-size: 10pt;
+ }
+
+ div.variablelist table tbody tr td p
+ {
+ margin: 0em 0em 0.5em 0em;
+ }
+
+ /* Make the terms in definition lists bold */
+ div.variablelist dl dt
+ {
+ font-weight: bold;
+ font-size: 10pt;
+ }
+
+ div.variablelist dl dd
+ {
+ margin: 1em 0em 1em 2em;
+ font-size: 10pt;
+ }
+
+/*=============================================================================
+ Misc
+=============================================================================*/
+
+ /* Title of books and articles in bibliographies */
+ span.title
+ {
+ font-style: italic;
+ }
+
+ span.underline
+ {
+ text-decoration: underline;
+ }
+
+ span.strikethrough
+ {
+ text-decoration: line-through;
+ }
+
+ /* Copyright, Legal Notice */
+ div div.legalnotice p
+ {
+ font-size: 8pt;
+ text-align: left
+ }
+
+/*=============================================================================
+ Colors
+=============================================================================*/
+
+ @media screen
+ {
+ /* Links */
+ a
+ {
+ color: #0C7445;
+ }
+
+ a:visited
+ {
+ color: #663974;
+ }
+
+ h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
+ h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover,
+ h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited
+ {
+ text-decoration: none; /* no underline */
+ color: #000000;
+ }
+
+ /* Syntax Highlighting */
+ .keyword { color: #0000AA; }
+ .identifier { color: #000000; }
+ .special { color: #707070; }
+ .preprocessor { color: #402080; }
+ .char { color: teal; }
+ .comment { color: #800000; }
+ .string { color: teal; }
+ .number { color: teal; }
+ .white_bkd { background-color: #E8FBE9; }
+ .dk_grey_bkd { background-color: #A0DAAC; }
+
+ /* Copyright, Legal Notice */
+ .copyright
+ {
+ color: #666666;
+ font-size: small;
+ }
+
+ div div.legalnotice p
+ {
+ color: #666666;
+ }
+
+ /* Program listing */
+ pre.synopsis
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 3px solid #9D9D9D;
+ border-right: 3px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ .programlisting,
+ .screen
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 3px solid #9D9D9D;
+ border-right: 3px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ /* Blurbs */
+ div.note,
+ div.tip,
+ div.important,
+ div.caution,
+ div.warning,
+ p.blurb
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 3px solid #9D9D9D;
+ border-right: 3px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ /* Table of contents */
+ .toc
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 3px solid #9D9D9D;
+ border-right: 3px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ /* Table of contents */
+ .toc-main
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 3px solid #9D9D9D;
+ border-right: 3px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+
+ /* Tables */
+ div.informaltable table tr td,
+ div.table table tr td
+ {
+ border: 1px solid #DCDCDC;
+ background-color: #FAFFFB;
+ }
+
+ div.informaltable table tr th,
+ div.table table tr th
+ {
+ background-color: #E3F9E4;
+ border: 1px solid #DCDCDC;
+ }
+
+ /* Misc */
+ span.highlight
+ {
+ color: #00A000;
+ }
+ }
+
+ @media print
+ {
+ /* Links */
+ a
+ {
+ color: black;
+ }
+
+ a:visited
+ {
+ color: black;
+ }
+
+ .spirit-nav
+ {
+ display: none;
+ }
+
+ /* Program listing */
+ pre.synopsis
+ {
+ border: 1px solid gray;
+ background-color: #FAFFFB;
+ }
+
+ .programlisting,
+ .screen
+ {
+ border: 1px solid gray;
+ background-color: #FAFFFB;
+ }
+
+ /* Table of contents */
+ .toc
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 3px solid #9D9D9D;
+ border-right: 3px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ /* Table of contents */
+ .toc-main
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 3px solid #9D9D9D;
+ border-right: 3px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ .informaltable table,
+ .table table
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 3px solid #9D9D9D;
+ border-right: 3px solid #9D9D9D;
+ border-collapse: collapse;
+ background-color: #FAFFFB;
+ }
+
+ /* Tables */
+ div.informaltable table tr td,
+ div.table table tr td
+ {
+ border: 1px solid #DCDCDC;
+ background-color: #FAFFFB;
+ }
+
+ div.informaltable table tr th,
+ div.table table tr th
+ {
+ border: 1px solid #DCDCDC;
+ background-color: #FAFFFB;
+ }
+
+ /* Misc */
+ span.highlight
+ {
+ font-weight: bold;
+ }
+ }
Added: sandbox/move/libs/move/doc/html/images/blank.png
==============================================================================
Binary file. No diff available.
Added: sandbox/move/libs/move/doc/html/images/caution.png
==============================================================================
Binary file. No diff available.
Added: sandbox/move/libs/move/doc/html/images/draft.png
==============================================================================
Binary file. No diff available.
Added: sandbox/move/libs/move/doc/html/images/home.png
==============================================================================
Binary file. No diff available.
Added: sandbox/move/libs/move/doc/html/images/important.png
==============================================================================
Binary file. No diff available.
Added: sandbox/move/libs/move/doc/html/images/next.png
==============================================================================
Binary file. No diff available.
Added: sandbox/move/libs/move/doc/html/images/note.png
==============================================================================
Binary file. No diff available.
Added: sandbox/move/libs/move/doc/html/images/prev.png
==============================================================================
Binary file. No diff available.
Added: sandbox/move/libs/move/doc/html/images/tip.png
==============================================================================
Binary file. No diff available.
Added: sandbox/move/libs/move/doc/html/images/toc-blank.png
==============================================================================
Binary file. No diff available.
Added: sandbox/move/libs/move/doc/html/images/toc-minus.png
==============================================================================
Binary file. No diff available.
Added: sandbox/move/libs/move/doc/html/images/toc-plus.png
==============================================================================
Binary file. No diff available.
Added: sandbox/move/libs/move/doc/html/images/up.png
==============================================================================
Binary file. No diff available.
Added: sandbox/move/libs/move/doc/html/images/warning.png
==============================================================================
Binary file. No diff available.
Added: sandbox/move/libs/move/doc/html/index.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/index.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,140 @@
+<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">Gaztanaga</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2008 -2010 Ion Gaztanaga</p></div>
+<div><div class="legalnotice">
+<a name="id563521"></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 copyable
+ and movable classes</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="move/implementing_movable_classes.html#move.implementing_movable_classes.copyable_and_movable_cpp0x">
+ Copyable and movable classes in C++0x</a></span></dt>
+<dt><span class="section"><a href="move/implementing_movable_classes.html#move.implementing_movable_classes.copyable_and_movable_cpp03">
+ Copyable and movable classes in portable syntax for both C++03 and C++0x compilers</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Composition or inheritance</span></dt>
+<dt><span class="section"> Movable but Non-Copyable Types</span></dt>
+<dt><span class="section"> Containers and move semantics</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"> Emulation limitations</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="move/emulation_limitations.html#move.emulation_limitations.emulation_limitations_base">
+ Initializing base classes</a></span></dt>
+<dt><span class="section"><a href="move/emulation_limitations.html#move.emulation_limitations.template_parameters"> Template
+ parameters for perfect forwarding</a></span></dt>
+<dt><span class="section"><a href="move/emulation_limitations.html#move.emulation_limitations.emulation_limitations_binding">
+ Binding of rvalue references to lvalues</a></span></dt>
+<dt><span class="section"><a href="move/emulation_limitations.html#move.emulation_limitations.emulation_limitations_modes">
+ Further limitations depending on the emulation mode</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Two emulation modes</span></dt>
+<dd><dl>
+<dt><span class="section"> Optimized mode</span></dt>
+<dt><span class="section"><a href="move/two_emulation_modes.html#move.two_emulation_modes.non_optimized_mode"> Non-optimized
+ mode</a></span></dt>
+</dl></dd>
+<dt><span class="section"> How the emulation works</span></dt>
+<dt><span class="section"> Thanks and credits</span></dt>
+<dt><span class="section">Reference</span></dt>
+<dd><dl><dt><span class="section">Header <boost/move/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="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>
+ <span class="bold"><strong><span class="emphasis"><em>For reviewers</em></span></strong></span> This library
+ has two operating modes, depending on the macro <code class="computeroutput">BOOST_MOVE_OPTIMIZED_EMULATION</code>.
+ In the review, one of these modes should be chosen as the desired move emulation
+ node. See chapter Two emulation modes
+ for more details about pros and cons of each operating mode
+ </p></td></tr>
+</table></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>
+ <span class="bold"><strong><span class="emphasis"><em>For reviewers</em></span></strong></span> If you
+ want to know how the emulation works behind the scenes to propose improvements
+ or corrections, please see chapter <a href="move/how_the_emulation_works.html" title=" How the emulation works">How
+ the emulation works</a> for more details
+ </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.Container</strong></span> bundled with this library
+ </p></td></tr>
+</table></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>
+ Tested compilers: MSVC-7.1, 8.0, 9.0, GCC 4.3-MinGW in C++03 and C++0x modes,
+ Intel 10.1
+ </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: April 25, 2010 at 11:36:15 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/move/libs/move/doc/html/move/composition_inheritance.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/move/composition_inheritance.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,168 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Composition or inheritance</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 copyable
+ and movable classes">
+<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="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="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.composition_inheritance"></a> Composition or inheritance
+</h2></div></div></div>
+<p>
+ For classes made up of other classes (via either composition 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="identifier">BOOST_COPYABLE_AND_MOVABLE</span><span class="special">(</span><span class="identifier">Base</span><span class="special">)</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">Base</span><span class="special">(){}</span>
+
+ <span class="comment">// Compiler-generated copy constructor...
+</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">&</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="identifier">Base</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">BOOST_COPY_ASSIGN_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">// Copy 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="identifier">BOOST_COPYABLE_AND_MOVABLE</span><span class="special">(</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...
+</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">&</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="identifier">Member</span> <span class="special">&</span><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">BOOST_COPY_ASSIGN_REF</span><span class="special">(</span><span class="identifier">Member</span><span class="special">))</span> <span class="comment">// Copy 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">BOOST_COPYABLE_AND_MOVABLE</span><span class="special">(</span><span class="identifier">Derived</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="identifier">Derived</span><span class="special">(){}</span>
+
+ <span class="comment">// Compiler-generated copy constructor...
+</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"><</span><span class="identifier">Base</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="special">{</span> <span class="special">}</span>
+
+ <span class="identifier">Derived</span><span class="special">&</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="keyword">static_cast</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="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="identifier">Derived</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">BOOST_COPY_ASSIGN_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">// Copy 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="keyword">static_cast</span><span class="special"><</span><span class="keyword">const</span> <span class="identifier">Base</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">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>
+<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>
+ <code class="computeroutput">BOOST_COPY_ASSIGN_REF(classname)</code>
+ macro is <span class="bold"><strong>not</strong></span> needed if the <span class="bold"><strong>'Non-optimized'
+ mode</strong></span> is selected, the usual <code class="computeroutput"><span class="keyword">const</span>
+ <span class="identifier">classname</span> <span class="special">&</span></code>
+ overaload would be fine. See <a href="two_emulation_modes.html" title=" Two emulation modes">Two
+ emulation modes</a> for more details about pros/cons of this emulation
+ mode.
+ </p></td></tr>
+</table></div>
+<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>
+<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 from lvalues occur explicitly.
+ </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 -2010 Ion Gaztanaga<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="movable_only_classes.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/move/construct_forwarding.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/move/construct_forwarding.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,178 @@
+<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="move_and_containers.html" title=" Containers and move semantics">
+<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="move_and_containers.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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></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_FWD_REF</span></code>
+ and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward</span></code>:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</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">move</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+
+<span class="keyword">class</span> <span class="identifier">copyable_only_tester</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">copyable_only_tester</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"><<</span> <span class="string">"copyable_only_tester()"</span> <span class="special"><<</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">copyable_only_tester</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">copyable_only_tester</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"><<</span> <span class="string">"copyable_only_tester(const copyable_only_tester&)"</span> <span class="special"><<</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">copyable_only_tester</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"><<</span> <span class="string">"copyable_only_tester(int)"</span> <span class="special"><<</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">copyable_only_tester</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"><<</span> <span class="string">"copyable_only_tester(int, double)"</span> <span class="special"><<</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">copyable_movable_tester</span>
+<span class="special">{</span>
+ <span class="comment">// move semantics
+</span> <span class="identifier">BOOST_COPYABLE_AND_MOVABLE</span><span class="special">(</span><span class="identifier">copyable_movable_tester</span><span class="special">)</span>
+ <span class="keyword">public</span><span class="special">:</span>
+
+ <span class="identifier">copyable_movable_tester</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"><<</span> <span class="string">"copyable_movable_tester()"</span> <span class="special"><<</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">copyable_movable_tester</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"><<</span> <span class="string">"copyable_movable_tester(int)"</span> <span class="special"><<</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">copyable_movable_tester</span><span class="special">(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">copyable_movable_tester</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"><<</span> <span class="string">"copyable_movable_tester(BOOST_RV_REF(copyable_movable_tester))"</span> <span class="special"><<</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">copyable_movable_tester</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">copyable_movable_tester</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"><<</span> <span class="string">"copyable_movable_tester(const copyable_movable_tester &)"</span> <span class="special"><<</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">copyable_movable_tester</span><span class="special">(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">copyable_movable_tester</span><span class="special">),</span> <span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">copyable_movable_tester</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"><<</span> <span class="string">"copyable_movable_tester(BOOST_RV_REF(copyable_movable_tester), BOOST_RV_REF(copyable_movable_tester))"</span> <span class="special"><<</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">copyable_movable_tester</span> <span class="special">&</span><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">copyable_movable_tester</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"><<</span> <span class="string">"copyable_movable_tester & operator=(BOOST_RV_REF(copyable_movable_tester))"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="identifier">copyable_movable_tester</span> <span class="special">&</span><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">BOOST_COPY_ASSIGN_REF</span><span class="special">(</span><span class="identifier">copyable_movable_tester</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"><<</span> <span class="string">"copyable_movable_tester & operator=(BOOST_COPY_ASSIGN_REF(copyable_movable_tester))"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</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="comment">//1 argument
+</span><span class="keyword">template</span><span class="special"><</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">void</span> <span class="identifier">function_construct</span><span class="special">(</span><span class="identifier">BOOST_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</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="comment">//2 argument
+</span><span class="keyword">template</span><span class="special"><</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">></span>
+<span class="keyword">void</span> <span class="identifier">function_construct</span><span class="special">(</span><span class="identifier">BOOST_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_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</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</span><span class="special">::</span><span class="identifier">forward</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="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">copyable_movable_tester</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"><</span><span class="identifier">copyable_movable_tester</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="comment">//copy constructor
+</span> <span class="identifier">function_construct</span><span class="special"><</span><span class="identifier">copyable_movable_tester</span><span class="special">>(</span><span class="identifier">copyable_movable_tester</span><span class="special">());</span>
+ <span class="comment">//two rvalue constructor
+</span> <span class="identifier">function_construct</span><span class="special"><</span><span class="identifier">copyable_movable_tester</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">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">copyable_only_tester</span> <span class="identifier">nm</span><span class="special">;</span>
+ <span class="comment">//copy constructor (copyable_only_tester has no move ctor.)
+</span> <span class="identifier">function_construct</span><span class="special"><</span><span class="identifier">copyable_only_tester</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">nm</span><span class="special">));</span>
+ <span class="comment">//copy constructor
+</span> <span class="identifier">function_construct</span><span class="special"><</span><span class="identifier">copyable_only_tester</span><span class="special">>(</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"><</span><span class="identifier">copyable_only_tester</span><span class="special">>(</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"><</span><span class="identifier">copyable_only_tester</span><span class="special">>(</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">//copyable_movable_tester()
+</span> <span class="comment">//copyable_movable_tester(BOOST_RV_REF(copyable_movable_tester))
+</span> <span class="comment">//copyable_movable_tester()
+</span> <span class="comment">//copyable_movable_tester(const copyable_movable_tester &)
+</span> <span class="comment">//copyable_movable_tester(BOOST_RV_REF(copyable_movable_tester), BOOST_RV_REF(copyable_movable_tester))
+</span> <span class="comment">//copyable_only_tester()
+</span> <span class="comment">//copyable_only_tester(const copyable_only_tester&)
+</span> <span class="comment">//copyable_only_tester(const copyable_only_tester&)
+</span> <span class="comment">//copyable_only_tester(int)
+</span> <span class="comment">//copyable_only_tester(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>
+ 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 -2010 Ion Gaztanaga<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_and_containers.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/move/libs/move/doc/html/move/emulation_limitations.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/move/emulation_limitations.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,167 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Emulation limitations</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="two_emulation_modes.html" title=" Two emulation modes">
+</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="two_emulation_modes.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.emulation_limitations"></a> Emulation limitations
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="emulation_limitations.html#move.emulation_limitations.emulation_limitations_base">
+ Initializing base classes</a></span></dt>
+<dt><span class="section"><a href="emulation_limitations.html#move.emulation_limitations.template_parameters"> Template
+ parameters for perfect forwarding</a></span></dt>
+<dt><span class="section"><a href="emulation_limitations.html#move.emulation_limitations.emulation_limitations_binding">
+ Binding of rvalue references to lvalues</a></span></dt>
+<dt><span class="section"><a href="emulation_limitations.html#move.emulation_limitations.emulation_limitations_modes">
+ Further limitations depending on the emulation mode</a></span></dt>
+</dl></div>
+<p>
+ Like any emulation effort, the library has some limitations users should take
+ in care to achieve portable and efficient code when using the library with
+ C++03 conformant compilers:
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="move.emulation_limitations.emulation_limitations_base"></a><a href="emulation_limitations.html#move.emulation_limitations.emulation_limitations_base" title="
+ Initializing base classes">
+ Initializing base classes</a>
+</h3></div></div></div>
+<p>
+ When initializing base classes in move constructors, users must cast the
+ reference to a base class reference before moving it. Example:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="comment">//Portable and efficient
+</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"><</span><span class="identifier">Base</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="special">{</span> <span class="special">}</span>
+</pre>
+<p>
+ If casting is not performed the emulation will not move construct the base
+ class, because no conversion is available from <code class="computeroutput"><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">)</span></code> to <code class="computeroutput"><span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">Base</span><span class="special">)</span></code>.
+ Without the cast we might obtain a compilation error (for non-copyable types)
+ or a less-efficient move constructor (for copyable types):
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="comment">//If Derived is copyable, then Base is copy-constructed.
+</span><span class="comment">//If not, a compilation error is issued
+</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="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>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="move.emulation_limitations.template_parameters"></a><a href="emulation_limitations.html#move.emulation_limitations.template_parameters" title=" Template
+ parameters for perfect forwarding"> Template
+ parameters for perfect forwarding</a>
+</h3></div></div></div>
+<p>
+ The emulation can't deal with C++0x reference collapsing rules that allow
+ perfect forwarding:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="comment">//C++0x
+</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">forward_function</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&&</span><span class="identifier">t</span><span class="special">)</span>
+<span class="special">{</span> <span class="identifier">inner_function</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">forward</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">t</span><span class="special">);</span> <span class="special">}</span>
+
+<span class="comment">//Wrong C++03 emulation
+</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">forward_function</span><span class="special">(</span><span class="identifier">BOOST_RV_REF</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="identifier">t</span><span class="special">)</span>
+<span class="special">{</span> <span class="identifier">inner_function</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward</span><span class="special"><</span><span class="identifier">T</span><span class="special">>(</span><span class="identifier">t</span><span class="special">);</span> <span class="special">}</span>
+</pre>
+<p>
+ In C++03 emulation BOOST_RV_REF doesn't catch any const rlvalues. For more
+ details on forwarding see <a href="construct_forwarding.html" title=" Constructor Forwarding">Constructor
+ Forwarding</a> chapter.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="move.emulation_limitations.emulation_limitations_binding"></a><a href="emulation_limitations.html#move.emulation_limitations.emulation_limitations_binding" title="
+ Binding of rvalue references to lvalues">
+ Binding of rvalue references to lvalues</a>
+</h3></div></div></div>
+<p>
+ The <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1690.html" target="_top">first
+ rvalue reference</a> proposal allowed the binding of rvalue references
+ to lvalues:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="identifier">func</span><span class="special">(</span><span class="identifier">Type</span> <span class="special">&&</span><span class="identifier">t</span><span class="special">);</span>
+<span class="comment">//....
+</span>
+<span class="identifier">Type</span> <span class="identifier">t</span><span class="special">;</span> <span class="comment">//Allowed
+</span><span class="identifier">func</span><span class="special">(</span><span class="identifier">t</span><span class="special">)</span>
+</pre>
+<p>
+ Later, as explained in <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2812.html" target="_top"><span class="emphasis"><em>Fixing
+ a Safety Problem with Rvalue References</em></span></a> this behaviour
+ was considered dangerous and eliminated this binding so that rvalue references
+ adhere to the principle of type-safe overloading: <span class="emphasis"><em>Every function
+ must be type-safe in isolation, without regard to how it has been overloaded</em></span>
+ </p>
+<p>
+ <span class="bold"><strong>Boost.Move</strong></span> can't emulate this type-safe
+ overaloading principle for C++03 compilers:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="comment">//Allowed by move emulation
+</span><span class="identifier">movable</span> <span class="identifier">m</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">r</span> <span class="special">=</span> <span class="identifier">m</span><span class="special">;</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="move.emulation_limitations.emulation_limitations_modes"></a><a href="emulation_limitations.html#move.emulation_limitations.emulation_limitations_modes" title="
+ Further limitations depending on the emulation mode">
+ Further limitations depending on the emulation mode</a>
+</h3></div></div></div>
+<p>
+ As explained in the section <a href="two_emulation_modes.html" title=" Two emulation modes">Two
+ emulation modes</a> the library has some more limitations depending on
+ the emulation mode selected by the user. See that chapter for more details.
+ </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 -2010 Ion Gaztanaga<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="two_emulation_modes.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/move/how_the_emulation_works.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/move/how_the_emulation_works.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,188 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> How the emulation works</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="two_emulation_modes.html" title=" Two emulation modes">
+<link rel="next" href="thanks_to.html" title=" Thanks and credits">
+</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="two_emulation_modes.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="thanks_to.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.how_the_emulation_works"></a> How the emulation works
+</h2></div></div></div>
+<p>
+ For movable classes <span class="bold"><strong>Boost.Move</strong></span> defines a class
+ named <code class="computeroutput"><span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span></code>:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></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="identifier">rv</span><span class="special">();</span>
+ <span class="special">~</span><span class="identifier">rv</span><span class="special">();</span>
+ <span class="identifier">rv</span><span class="special">(</span><span class="identifier">rv</span> <span class="keyword">const</span><span class="special">&);</span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">rv</span> <span class="keyword">const</span><span class="special">&);</span>
+<span class="special">};</span>
+</pre>
+<p>
+ which is convertible to the movable base class (usual C++ derived to base conversion).
+ When users mark their classes as <code class="computeroutput">BOOST_MOVABLE_BUT_NOT_COPYABLE</code>
+ or <code class="computeroutput">BOOST_COPYABLE_AND_MOVABLE</code>,
+ these macros define conversion operators to references to <code class="computeroutput"><span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span></code>:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MOVABLE_BUT_NOT_COPYABLE</span><span class="special">(</span><span class="identifier">TYPE</span><span class="special">)\</span>
+ <span class="keyword">public</span><span class="special">:\</span>
+ <span class="keyword">operator</span> <span class="special">::</span><span class="identifier">BOOST_MOVE_NAMESPACE</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span><span class="identifier">TYPE</span><span class="special">>&()</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">reinterpret_cast</span><span class="special"><</span> <span class="special">::</span><span class="identifier">BOOST_MOVE_NAMESPACE</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span><span class="identifier">TYPE</span><span class="special">>*</span> <span class="special">>(</span><span class="keyword">this</span><span class="special">);</span> <span class="special">}\</span>
+ <span class="keyword">operator</span> <span class="keyword">const</span> <span class="special">::</span><span class="identifier">BOOST_MOVE_NAMESPACE</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span><span class="identifier">TYPE</span><span class="special">>&()</span> <span class="keyword">const</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">reinterpret_cast</span><span class="special"><</span><span class="keyword">const</span> <span class="special">::</span><span class="identifier">BOOST_MOVE_NAMESPACE</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span><span class="identifier">TYPE</span><span class="special">>*</span> <span class="special">>(</span><span class="keyword">this</span><span class="special">);</span> <span class="special">}\</span>
+ <span class="keyword">private</span><span class="special">:\</span>
+ <span class="comment">//More stuff...
+</span></pre>
+<p>
+ <code class="computeroutput">BOOST_MOVABLE_BUT_NOT_COPYABLE</code>
+ also declares a private copy constructor and assignment. <code class="computeroutput">BOOST_COPYABLE_AND_MOVABLE</code>
+ defines a non-const copy constructor <code class="computeroutput"><span class="identifier">TYPE</span>
+ <span class="special">&</span><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">TYPE</span><span class="special">&)</span></code>
+ that forwards to a const version:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_COPYABLE_AND_MOVABLE</span><span class="special">(</span><span class="identifier">TYPE</span><span class="special">)\</span>
+ <span class="keyword">public</span><span class="special">:\</span>
+ <span class="identifier">TYPE</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">TYPE</span> <span class="special">&</span><span class="identifier">t</span><span class="special">)\</span>
+ <span class="special">{</span> <span class="keyword">this</span><span class="special">-></span><span class="keyword">operator</span><span class="special">=(</span><span class="keyword">static_cast</span><span class="special"><</span><span class="keyword">const</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span><span class="identifier">TYPE</span><span class="special">></span> <span class="special">&>(</span><span class="keyword">const_cast</span><span class="special"><</span><span class="keyword">const</span> <span class="identifier">TYPE</span> <span class="special">&>(</span><span class="identifier">t</span><span class="special">)));</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;}\</span>
+ <span class="comment">//More stuff...
+</span></pre>
+<p>
+ When users define the <code class="computeroutput">BOOST_RV_REF</code>
+ overload of a copy constructor/assignment, it is expanded to a <code class="computeroutput"><span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span></code> reference overload:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_RV_REF</span><span class="special">(</span><span class="identifier">TYPE</span><span class="special">)</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span> <span class="identifier">TYPE</span> <span class="special">>&</span> <span class="special">\</span>
+</pre>
+<p>
+ When users define the <code class="computeroutput">BOOST_COPY_ASSIGN_REF</code>
+ overload, it is expanded to a const <code class="computeroutput"><span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span></code>
+ references overload (in the 'Optimized mode'):
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_COPY_ASSIGN_REF</span><span class="special">(</span><span class="identifier">TYPE</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span> <span class="identifier">TYPE</span> <span class="special">>&</span>
+</pre>
+<p>
+ Now when overload resolution is performed these are the bindings:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ a) non-const rvalues (e.g.: temporaries), bind to <code class="computeroutput"><span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span> <span class="identifier">TYPE</span> <span class="special">>&</span></code>
+</li>
+<li>
+ b) const rvalue and lvalues, bind to <code class="computeroutput"><span class="keyword">const</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span>
+ <span class="identifier">TYPE</span> <span class="special">>&</span></code>
+</li>
+<li>
+ c) non-const lvalues (e.g. non-const references) bind to <code class="computeroutput"><span class="identifier">TYPE</span><span class="special">&</span></code>
+</li>
+</ul></div>
+<p>
+ The library does not define the equivalent of <code class="computeroutput">BOOST_COPY_ASSIGN_REF</code>
+ for copy construction (say, <code class="computeroutput"><span class="identifier">BOOST_COPY_CTOR_REF</span></code>)
+ because nearly all modern compilers implement RVO and this is much more efficient
+ than any move emulation. <code class="computeroutput">move</code>
+ just casts <code class="computeroutput"><span class="identifier">TYPE</span> <span class="special">&</span></code>
+ into <code class="computeroutput"><span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span><span class="identifier">TYPE</span><span class="special">></span> <span class="special">&</span></code>.
+ </p>
+<p>
+ Here's an example that demostrates how different rlvalue objects bind to <code class="computeroutput"><span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span></code> references in the presence of three overloads
+ and the conversion operators:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</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">move</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+
+<span class="keyword">class</span> <span class="identifier">sink_tester</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span> <span class="comment">//conversions provided by BOOST_COPYABLE_AND_MOVABLE
+</span> <span class="keyword">operator</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span><span class="identifier">sink_tester</span><span class="special">>&()</span>
+ <span class="special">{</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">reinterpret_cast</span><span class="special"><</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span><span class="identifier">sink_tester</span><span class="special">>*</span> <span class="special">>(</span><span class="keyword">this</span><span class="special">);</span> <span class="special">}</span>
+ <span class="keyword">operator</span> <span class="keyword">const</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span><span class="identifier">sink_tester</span><span class="special">>&()</span> <span class="keyword">const</span>
+ <span class="special">{</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">reinterpret_cast</span><span class="special"><</span><span class="keyword">const</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span><span class="identifier">sink_tester</span><span class="special">>*</span> <span class="special">>(</span><span class="keyword">this</span><span class="special">);</span> <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="comment">//Functions returning different r/lvalue types
+</span> <span class="identifier">sink_tester</span> <span class="identifier">rvalue</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">sink_tester</span><span class="special">();</span> <span class="special">}</span>
+<span class="keyword">const</span> <span class="identifier">sink_tester</span> <span class="identifier">const_rvalue</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">sink_tester</span><span class="special">();</span> <span class="special">}</span>
+ <span class="identifier">sink_tester</span> <span class="special">&</span> <span class="identifier">lvalue</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">static</span> <span class="identifier">sink_tester</span> <span class="identifier">lv</span><span class="special">;</span> <span class="keyword">return</span> <span class="identifier">lv</span><span class="special">;</span> <span class="special">}</span>
+<span class="keyword">const</span> <span class="identifier">sink_tester</span> <span class="special">&</span> <span class="identifier">const_lvalue</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">sink_tester</span> <span class="identifier">clv</span> <span class="special">=</span> <span class="identifier">sink_tester</span><span class="special">();</span> <span class="keyword">return</span> <span class="identifier">clv</span><span class="special">;</span> <span class="special">}</span>
+
+<span class="comment">//BOOST_RV_REF overload
+</span><span class="keyword">void</span> <span class="identifier">sink</span><span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span><span class="identifier">sink_tester</span><span class="special">></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"><<</span> <span class="string">"non-const rvalue catched"</span> <span class="special"><<</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="comment">//BOOST_COPY_ASSIGN_REF overload
+</span><span class="keyword">void</span> <span class="identifier">sink</span><span class="special">(</span><span class="keyword">const</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span><span class="identifier">sink_tester</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"><<</span> <span class="string">"const (r-l)value catched"</span> <span class="special"><<</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="comment">//Overload provided by BOOST_COPYABLE_AND_MOVABLE
+</span><span class="keyword">void</span> <span class="identifier">sink</span><span class="special">(</span><span class="identifier">sink_tester</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"><<</span> <span class="string">"non-const lvalue catched"</span> <span class="special"><<</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="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">sink</span><span class="special">(</span><span class="identifier">const_rvalue</span><span class="special">());</span> <span class="comment">//"const (r-l)value catched"
+</span> <span class="identifier">sink</span><span class="special">(</span><span class="identifier">const_lvalue</span><span class="special">());</span> <span class="comment">//"const (r-l)value catched"
+</span> <span class="identifier">sink</span><span class="special">(</span><span class="identifier">lvalue</span><span class="special">());</span> <span class="comment">//"non-const lvalue catched"
+</span> <span class="identifier">sink</span><span class="special">(</span><span class="identifier">rvalue</span><span class="special">());</span> <span class="comment">//"non-const rvalue catched"
+</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 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>
+ For 'Non-optimized' emulation mode no <code class="computeroutput"><span class="keyword">const</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rv</span><span class="special"><</span><span class="identifier">TYPE</span><span class="special">></span> <span class="special">&</span></code> overload is present since <code class="computeroutput">BOOST_COPY_ASSIGN_REF</code> expands to
+ <code class="computeroutput"><span class="keyword">const</span> <span class="identifier">TYPE</span>
+ <span class="special">&</span></code>.
+ </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"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2008 -2010 Ion Gaztanaga<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="two_emulation_modes.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="thanks_to.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/move/implementing_movable_classes.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/move/implementing_movable_classes.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,278 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Implementing copyable
+ and 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="composition_inheritance.html" title=" Composition or inheritance">
+</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="composition_inheritance.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 copyable
+ and movable classes"> Implementing copyable
+ and movable classes</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="implementing_movable_classes.html#move.implementing_movable_classes.copyable_and_movable_cpp0x">
+ Copyable and movable classes in C++0x</a></span></dt>
+<dt><span class="section"><a href="implementing_movable_classes.html#move.implementing_movable_classes.copyable_and_movable_cpp03">
+ Copyable and movable classes in portable syntax for both C++03 and C++0x compilers</a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="move.implementing_movable_classes.copyable_and_movable_cpp0x"></a><a href="implementing_movable_classes.html#move.implementing_movable_classes.copyable_and_movable_cpp0x" title="
+ Copyable and movable classes in C++0x">
+ Copyable and movable classes in C++0x</a>
+</h3></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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></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">&</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">-></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">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="keyword">const</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="keyword">if</span> <span class="special">(</span><span class="keyword">this</span> <span class="special">!=</span> <span class="special">&</span><span class="identifier">p</span><span class="special">)</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="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="identifier">clone</span><span class="special">()</span> <span class="special">:</span> <span class="number">0</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="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">&&</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">&</span> <span class="keyword">operator</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="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"><</span><span class="identifier">Base</span><span class="special">></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"><</span><span class="identifier">Base</span><span class="special">></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"><</span><span class="identifier">Base</span><span class="special">></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"><</span><span class="identifier">Base</span><span class="special">></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="identifier">p2</span> <span class="special">=</span> <span class="identifier">clone_ptr</span><span class="special"><</span><span class="identifier">Base</span><span class="special">>(</span><span class="keyword">new</span> <span class="identifier">Derived</span><span class="special">());</span> <span class="comment">// temporary is moved to p2
+</span><span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="move.implementing_movable_classes.copyable_and_movable_cpp03"></a><a href="implementing_movable_classes.html#move.implementing_movable_classes.copyable_and_movable_cpp03" title="
+ Copyable and movable classes in portable syntax for both C++03 and C++0x compilers">
+ Copyable and movable classes in portable syntax for both C++03 and C++0x compilers</a>
+</h3></div></div></div>
+<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 class="computeroutput"><span class="identifier">clone_ptr</span></code> so that it will work both in
+ compilers with rvalue references and those who conform to C++03. You just
+ need to follow these simple steps:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Put the following macro in the <span class="bold"><strong>private</strong></span>
+ section: <code class="computeroutput">BOOST_COPYABLE_AND_MOVABLE(classname)</code>
+</li>
+<li>
+ Left copy constructor as is.
+ </li>
+<li>
+ Write a copy assignment taking the parameter as <code class="computeroutput">BOOST_COPY_ASSIGN_REF(classname)</code>
+</li>
+<li>
+ Write a move constructor and a move assignment taking the parameter as
+ <code class="computeroutput">BOOST_RV_REF(classname)</code>
+</li>
+</ul></div>
+<p>
+ Let's see how are applied to <code class="computeroutput"><span class="identifier">clone_ptr</span></code>:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></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="comment">// Mark this class copyable and movable
+</span> <span class="identifier">BOOST_COPYABLE_AND_MOVABLE</span><span class="special">(</span><span class="identifier">clone_ptr</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="identifier">clone_ptr</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">clone_ptr</span><span class="special">&</span> <span class="identifier">p</span><span class="special">)</span> <span class="comment">// Copy constructor (as usual)
+</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">-></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">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">BOOST_COPY_ASSIGN_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="comment">// Copy assignment
+</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">&</span><span class="identifier">p</span><span class="special">){</span>
+ <span class="identifier">T</span> <span class="special">*</span><span class="identifier">tmp_p</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">-></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="keyword">delete</span> <span class="identifier">ptr</span><span class="special">;</span>
+ <span class="identifier">ptr</span> <span class="special">=</span> <span class="identifier">tmp_p</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">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="comment">//Move constructor
+</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">&</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="comment">//Move assignment
+</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">&</span><span class="identifier">p</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">=</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="special">};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<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>
+ <code class="computeroutput">BOOST_COPY_ASSIGN_REF(classname)</code>
+ macro is <span class="bold"><strong>not</strong></span> needed if the <span class="bold"><strong>'Non-optimized'
+ mode</strong></span> is selected, the usual <code class="computeroutput"><span class="keyword">const</span>
+ <span class="identifier">classname</span> <span class="special">&</span></code>
+ overload would be fine. See <a href="two_emulation_modes.html" title=" Two emulation modes">Two
+ emulation modes</a> for more details about pros/cons of this emulation
+ mode.
+ </p></td></tr>
+</table></div>
+</div>
+<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 -2010 Ion Gaztanaga<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="composition_inheritance.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/move/introduction.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/move/introduction.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,111 @@
+<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 copyable
+ and 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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&</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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&</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 -2010 Ion Gaztanaga<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/move/libs/move/doc/html/move/movable_only_classes.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/move/movable_only_classes.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,138 @@
+<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="composition_inheritance.html" title=" Composition or inheritance">
+<link rel="next" href="move_and_containers.html" title=" Containers and move semantics">
+</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="composition_inheritance.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_and_containers.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="comment">//...
+</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.
+ </p>
+<p>
+ To write a movable but not copyable type in portable syntax, you need to follow
+ these simple steps:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Put the following macro in the <span class="bold"><strong>private</strong></span> section:
+ <code class="computeroutput">BOOST_MOVABLE_BUT_NOT_COPYABLE(classname)</code>
+</li>
+<li>
+ Write a move constructor and a move assignment taking the parameter as <code class="computeroutput">BOOST_RV_REF(classname)</code>
+</li>
+</ul></div>
+<p>
+ Here's the definition of <code class="computeroutput"><span class="identifier">file</span> <span class="identifier">descriptor</span></code> using portable syntax:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</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">move</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">stdexcept</span><span class="special">></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="keyword">private</span><span class="special">:</span>
+ <span class="identifier">BOOST_MOVABLE_BUT_NOT_COPYABLE</span><span class="special">(</span><span class="identifier">file_descriptor</span><span class="special">)</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="comment">//Constructor
+</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="comment">//Destructor
+</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="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">&</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>
+</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 -2010 Ion Gaztanaga<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="composition_inheritance.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_and_containers.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/move/move_algorithms.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/move/move_algorithms.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,102 @@
+<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="emulation_limitations.html" title=" Emulation limitations">
+</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="emulation_limitations.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"><</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">></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"><</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">></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"><</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">></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"><</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">></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"><</span><span class="identifier">cassert</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</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">></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">(&</span><span class="identifier">movable_array2</span><span class="special">[</span><span class="number">0</span><span class="special">],</span> <span class="special">&</span><span class="identifier">movable_array2</span><span class="special">[</span><span class="identifier">ArraySize</span><span class="special">],</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">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">(&</span><span class="identifier">movable_array</span><span class="special">[</span><span class="number">0</span><span class="special">],</span> <span class="special">&</span><span class="identifier">movable_array</span><span class="special">[</span><span class="identifier">ArraySize</span><span class="special">],</span> <span class="special">&</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"><</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"><</span><span class="identifier">movable</span><span class="special">>::</span><span class="identifier">value</span><span class="special">>::</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"><</span><span class="identifier">movable</span><span class="special">*>(</span><span class="keyword">static_cast</span><span class="special"><</span><span class="keyword">void</span><span class="special">*>(&</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">(&</span><span class="identifier">movable_array2</span><span class="special">[</span><span class="number">0</span><span class="special">],</span> <span class="special">&</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 -2010 Ion Gaztanaga<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="emulation_limitations.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/move/move_and_containers.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/move/move_and_containers.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,89 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Containers and move semantics</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="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="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="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.move_and_containers"></a> Containers and move semantics
+</h2></div></div></div>
+<p>
+ Movable but non-copyable types can be safely inserted into containers and movable
+ and copyable types are more efficiently handled if those containers internally
+ use move semantics instead of copy semantics. If the container needs to "change
+ the location" of an element internally (e.g. vector reallocation) it will
+ move the element instead of copying it. <span class="bold"><strong>Boost.Container</strong></span>
+ containers are move-aware so you can write the following:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">container</span><span class="special">/</span><span class="identifier">vector</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cassert</span><span class="special">></span>
+
+<span class="comment">//Remember: 'file_descriptor' is NOT copyable, but it
+</span><span class="comment">//can be returned from functions thanks to move semantics
+</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 temporary
+</span> <span class="comment">//returned from 'create_file_descriptor' is moved to 'fd'.
+</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">//Now move fd into a vector
+</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">file_descriptor</span><span class="special">></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 since file_descriptor is not copyable
+</span> <span class="comment">//and vector copy construction requires value_type's copy constructor:
+</span> <span class="comment">//boost::container::vector<file_descriptor> 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 -2010 Ion Gaztanaga<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="construct_forwarding.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/move/move_inserters.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/move/move_inserters.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,142 @@
+<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"><</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></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"><</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></span>
+<span class="identifier">back_move_insert_iterator</span><span class="special"><</span><span class="identifier">C</span><span class="special">></span> <span class="identifier">back_move_inserter</span><span class="special">(</span><span class="identifier">C</span><span class="special">&</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></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"><</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></span>
+<span class="identifier">front_move_insert_iterator</span><span class="special"><</span><span class="identifier">C</span><span class="special">></span> <span class="identifier">front_move_inserter</span><span class="special">(</span><span class="identifier">C</span><span class="special">&</span> <span class="identifier">x</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></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"><</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></span>
+<span class="identifier">move_insert_iterator</span><span class="special"><</span><span class="identifier">C</span><span class="special">></span> <span class="identifier">move_inserter</span><span class="special">(</span><span class="identifier">C</span><span class="special">&</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">&</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"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">container</span><span class="special">/</span><span class="identifier">list</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="string">"movable.hpp"</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cassert</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">container</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">list</span><span class="special"><</span><span class="identifier">movable</span><span class="special">></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"><</span><span class="keyword">class</span> <span class="identifier">MoveInsertIterator</span><span class="special">></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">&</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"><</span><span class="identifier">movable</span><span class="special">></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">()-></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">()-></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">()-></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 -2010 Ion Gaztanaga<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/move/libs/move/doc/html/move/move_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/move/move_iterator.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,146 @@
+<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"><</span><span class="keyword">class</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">move_iterator</span><span class="special">;</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">It</span><span class="special">></span>
+<span class="identifier">move_iterator</span><span class="special"><</span><span class="identifier">It</span><span class="special">></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">&</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"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">move</span><span class="special">/</span><span class="identifier">move</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="comment">//A movable class
+</span><span class="keyword">class</span> <span class="identifier">movable</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MOVABLE_BUT_NOT_COPYABLE</span><span class="special">(</span><span class="identifier">movable</span><span class="special">)</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">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">&</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>
+
+<span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span>
+
+<span class="keyword">template</span><span class="special"><></span>
+<span class="keyword">struct</span> <span class="identifier">has_nothrow_move</span><span class="special"><</span><span class="identifier">movable</span><span class="special">></span>
+<span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">bool</span> <span class="identifier">value</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="special">}</span> <span class="comment">//namespace boost{
+</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"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">container</span><span class="special">/</span><span class="identifier">vector</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="string">"movable.hpp"</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cassert</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="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</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"><</span><span class="identifier">movable</span><span class="special">></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"><</span><span class="identifier">movable</span><span class="special">></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 -2010 Ion Gaztanaga<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/move/libs/move/doc/html/move/reference.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/move/reference.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,78 @@
+<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="thanks_to.html" title=" Thanks and credits">
+<link rel="next" href="../boost/is_movable.html" title="Struct 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="thanks_to.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/move.hpp></span></dt></dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.move.move_hpp"></a>Header <boost/move/move.hpp></h3></div></div></div>
+<pre class="synopsis">
+
+BOOST_MOVE_OPTIMIZED_EMULATION
+BOOST_MOVABLE_BUT_NOT_COPYABLE(TYPE)
+BOOST_COPYABLE_AND_MOVABLE(TYPE)
+BOOST_RV_REF(TYPE)
+BOOST_COPY_ASSIGN_REF(TYPE)
+BOOST_FWD_REF(TYPE)</pre>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> T> <span class="bold"><strong>struct</strong></span> is_movable;
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> T> <span class="bold"><strong>struct</strong></span> has_nothrow_move;
+
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> It> <span class="bold"><strong>class</strong></span> move_iterator;
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> C> <span class="bold"><strong>class</strong></span> back_move_insert_iterator;
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> C> <span class="bold"><strong>class</strong></span> front_move_insert_iterator;
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> C> <span class="bold"><strong>class</strong></span> move_insert_iterator;
+
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> T> <span class="bold"><strong>struct</strong></span> has_trivial_destructor_after_move;
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> T> <span class="type">rvalue_reference</span> move(input_reference);
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> T> <span class="type">output_reference</span> forward(input_reference);
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> It> <span class="type">move_iterator< It ></span> make_move_iterator(<span class="bold"><strong>const</strong></span> It &);
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> C> <span class="type">back_move_insert_iterator< C ></span> back_move_inserter(C &);
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> C>
+ <span class="type">front_move_insert_iterator< C ></span> front_move_inserter(C &);
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> C>
+ <span class="type">move_insert_iterator< C ></span> move_inserter(C &, <span class="bold"><strong>typename</strong></span> C::iterator);
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> O> <span class="type">O</span> move(I, I, O);
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> O> <span class="type">O</span> move_backward(I, I, O);
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> F> <span class="type">F</span> uninitialized_move(I, I, F);
+ <span class="bold"><strong>template</strong></span><<span class="bold"><strong>typename</strong></span> I, <span class="bold"><strong>typename</strong></span> F> <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 -2010 Ion Gaztanaga<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="thanks_to.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>
Added: sandbox/move/libs/move/doc/html/move/thanks_to.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/move/thanks_to.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Thanks and credits</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="how_the_emulation_works.html" title=" How the emulation works">
+<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="how_the_emulation_works.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.thanks_to"></a> Thanks and credits
+</h2></div></div></div>
+<p>
+ Thanks to all that developed ideas for move emulation: the first emulation
+ was based on Howard Hinnant emulation code for <code class="computeroutput"><span class="identifier">unique_ptr</span></code>,
+ David Abrahams suggested the use of <code class="computeroutput"><span class="keyword">class</span>
+ <span class="identifier">rv</span></code> class, and Klaus Triendl discovered
+ how to bind const rlvalues using <code class="computeroutput"><span class="keyword">class</span>
+ <span class="identifier">rv</span></code>.
+ </p>
+<p>
+ Many thanks to all boosters that have tested and improved the library.
+ </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 -2010 Ion Gaztanaga<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="how_the_emulation_works.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/move/libs/move/doc/html/move/two_emulation_modes.html
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/move/two_emulation_modes.html 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,166 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Two emulation modes</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="emulation_limitations.html" title=" Emulation limitations">
+<link rel="next" href="how_the_emulation_works.html" title=" How the emulation works">
+</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="emulation_limitations.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="how_the_emulation_works.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.two_emulation_modes"></a> Two emulation modes
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> Optimized mode</span></dt>
+<dt><span class="section"><a href="two_emulation_modes.html#move.two_emulation_modes.non_optimized_mode"> Non-optimized
+ mode</a></span></dt>
+</dl></div>
+<p>
+ This review version of the library has two emulation modes that can be selected
+ using the macro <code class="computeroutput">BOOST_MOVE_OPTIMIZED_EMULATION</code>
+ in the header <code class="computeroutput">move.hpp</code>.
+ This selection has no effect on compilers supporting rvalue-references but
+ it changes the behaviour of the move emulation used in C++03 compilers. During
+ the review a mode and its limitations should be chosen because no perfect emulation
+ has been found to date:
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="move.two_emulation_modes.optimized_mode"></a> Optimized mode
+</h3></div></div></div>
+<p>
+ If <code class="computeroutput">BOOST_MOVE_OPTIMIZED_EMULATION</code>
+ is defined in <code class="computeroutput">move.hpp</code>
+ the library correctly move assigns non-const rvalues of copyable and movable
+ types:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">copyable_and_movable</span>
+<span class="special">{/**/};</span>
+
+<span class="identifier">copyable_and_movable</span> <span class="identifier">produce</span><span class="special">(){</span> <span class="keyword">return</span> <span class="identifier">copyable_and_movable</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="identifier">copyable_and_movable</span> <span class="identifier">cm</span><span class="special">;</span>
+ <span class="identifier">copyable_and_movable</span> <span class="identifier">cm</span><span class="special">;</span>
+ <span class="identifier">cm</span> <span class="special">=</span> <span class="identifier">copyable_and_movable</span><span class="special">();</span> <span class="comment">//temporary object is MOVED, not COPIED
+</span> <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The downside is that in this emulation mode, the macro <code class="computeroutput">BOOST_COPYABLE_AND_MOVABLE</code>
+ needs to define a copy constructor for <code class="computeroutput"><span class="identifier">copyable_and_movable</span></code>
+ taking a non-const parameter:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="comment">//Generated by BOOST_COPYABLE_AND_MOVABLE
+</span><span class="identifier">copyable_and_movable</span> <span class="special">&</span><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">copyable_and_movable</span><span class="special">&){/**/}</span>
+</pre>
+<p>
+ Since the non-const overload of the copy constructor is generated, compiler-generated
+ assignment operators for classes containing <code class="computeroutput"><span class="identifier">copyable_and_movable</span></code>
+ will get the non-const copy constructor overload, which will surely surprise
+ users:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">holder</span>
+<span class="special">{</span>
+ <span class="identifier">copyable_and_movable</span> <span class="identifier">c</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="keyword">void</span> <span class="identifier">func</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">holder</span><span class="special">&</span> <span class="identifier">h</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">holder</span> <span class="identifier">copy_h</span><span class="special">(</span><span class="identifier">h</span><span class="special">);</span> <span class="comment">//<--- ERROR: can't convert 'const holder&' to 'holder&'
+</span> <span class="comment">//Compiler-generated copy constructor is non-const:
+</span> <span class="comment">// holder& operator(holder &)
+</span> <span class="comment">//!!!
+</span><span class="special">}</span>
+</pre>
+<p>
+ This limitation forces the user to define a const version of the copy constructor,
+ in all classes holding copyable and movable classes which might be suboptimal
+ in some templated code or annoying in several cases.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="move.two_emulation_modes.non_optimized_mode"></a><a href="two_emulation_modes.html#move.two_emulation_modes.non_optimized_mode" title=" Non-optimized
+ mode"> Non-optimized
+ mode</a>
+</h3></div></div></div>
+<p>
+ If <code class="computeroutput">BOOST_MOVE_OPTIMIZED_EMULATION</code>
+ is undefined in <code class="computeroutput">move.hpp</code>
+ the non-optimized mode is activated and it avoids the copy-assignment issue
+ for <code class="computeroutput"><span class="identifier">holder</span></code>, and users don't
+ even need to define the <code class="computeroutput">BOOST_COPY_ASSIGN_REF</code>
+ overload for their classes. Users can use the usual copy-assignment or the
+ compiler-generated one:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="identifier">copyable_and_movable</span>
+<span class="special">{</span>
+ <span class="comment">//...
+</span> <span class="identifier">copyable_and_movable</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">copyable_and_movable</span><span class="special">&);</span>
+<span class="special">};</span>
+</pre>
+<p>
+ But this emulation mode does not optimize the non-const rvalue move assignment
+ example:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">(){</span>
+ <span class="identifier">copyable_and_movable</span> <span class="identifier">cm</span><span class="special">;</span>
+ <span class="identifier">cm</span> <span class="special">=</span> <span class="identifier">copyable_and_movable</span><span class="special">();</span> <span class="comment">//temporary object is COPIED
+</span> <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ There is a workaround for this missing optimization with an explicit <code class="computeroutput">forward</code> call:
+ </p>
+<p>
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">(){</span>
+ <span class="identifier">copyable_and_movable</span> <span class="identifier">cm</span><span class="special">;</span>
+ <span class="comment">//Temporary object is MOVED
+</span> <span class="identifier">cm</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward</span><span class="special"><</span><span class="identifier">copyable_and_movable</span><span class="special">>(</span><span class="identifier">copyable_and_movable</span><span class="special">());</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<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 -2010 Ion Gaztanaga<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="emulation_limitations.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="how_the_emulation_works.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/move/libs/move/doc/html/reference.css
==============================================================================
--- (empty file)
+++ sandbox/move/libs/move/doc/html/reference.css 2010-05-07 11:59:37 EDT (Fri, 07 May 2010)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ Copyright (c) 2004 Joel de Guzman
+ http://spirit.sourceforge.net/
+
+ Use, modification and distribution is subject to 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)
+=============================================================================*/
+PRE.synopsis {
+ background-color: #e0ffff;
+ border: thin solid blue;
+ padding: 1em
+}
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