summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/move/example/doc_move_inserter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/move/example/doc_move_inserter.cpp')
-rw-r--r--src/boost/libs/move/example/doc_move_inserter.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/boost/libs/move/example/doc_move_inserter.cpp b/src/boost/libs/move/example/doc_move_inserter.cpp
new file mode 100644
index 00000000..c7154124
--- /dev/null
+++ b/src/boost/libs/move/example/doc_move_inserter.cpp
@@ -0,0 +1,52 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2009.
+// 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)
+//
+// See http://www.boost.org/libs/move for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#include <boost/move/detail/config_begin.hpp>
+
+//[move_inserter_example
+#include <boost/container/list.hpp>
+#include "movable.hpp"
+#include <cassert>
+#include <algorithm>
+
+using namespace ::boost::container;
+
+typedef list<movable> list_t;
+typedef list_t::iterator l_iterator;
+
+template<class MoveInsertIterator>
+void test_move_inserter(list_t &l2, MoveInsertIterator mit)
+{
+ //Create a list with 10 default constructed objects
+ list<movable> l(10);
+ assert(!l.begin()->moved());
+ l2.clear();
+
+ //Move insert into l2 containers
+ std::copy(l.begin(), l.end(), mit);
+
+ //Check size and status
+ assert(l2.size() == l.size());
+ assert(l.begin()->moved());
+ assert(!l2.begin()->moved());
+}
+
+int main()
+{
+ list_t l2;
+ test_move_inserter(l2, boost::back_move_inserter(l2));
+ test_move_inserter(l2, boost::front_move_inserter(l2));
+ test_move_inserter(l2, boost::move_inserter(l2, l2.end()));
+ return 0;
+}
+//]
+
+#include <boost/move/detail/config_end.hpp>