$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r56876 - in branches/release/libs: interprocess interprocess/doc interprocess/example interprocess/proj interprocess/proj/vc7ide interprocess/test intrusive intrusive/doc intrusive/example intrusive/perf intrusive/proj/vc7ide intrusive/proj/vc7ide/_intrusivelib intrusive/test
From: igaztanaga_at_[hidden]
Date: 2009-10-15 14:46:08
Author: igaztanaga
Date: 2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
New Revision: 56876
URL: http://svn.boost.org/trac/boost/changeset/56876
Log:
Fixes for 1.41
Added:
   branches/release/libs/intrusive/example/doc_positional_insertion.cpp
      - copied unchanged from r56875, /trunk/libs/intrusive/example/doc_positional_insertion.cpp
Properties modified: 
   branches/release/libs/interprocess/   (props changed)
   branches/release/libs/intrusive/   (props changed)
Text files modified: 
   branches/release/libs/interprocess/doc/Jamfile.v2                                   |     4                                         
   branches/release/libs/interprocess/doc/interprocess.qbk                             |    46 ++++++++-------                         
   branches/release/libs/interprocess/example/Jamfile.v2                               |     1                                         
   branches/release/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp        |     2                                         
   branches/release/libs/interprocess/example/comp_doc_anonymous_conditionB.cpp        |     2                                         
   branches/release/libs/interprocess/example/comp_doc_anonymous_mutexA.cpp            |     2                                         
   branches/release/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp            |     2                                         
   branches/release/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp        |     2                                         
   branches/release/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp        |     2                                         
   branches/release/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp |     2                                         
   branches/release/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp |     2                                         
   branches/release/libs/interprocess/example/comp_doc_message_queueA.cpp              |     2                                         
   branches/release/libs/interprocess/example/comp_doc_message_queueB.cpp              |     2                                         
   branches/release/libs/interprocess/example/doc_adaptive_pool.cpp                    |     2                                         
   branches/release/libs/interprocess/example/doc_allocator.cpp                        |     2                                         
   branches/release/libs/interprocess/example/doc_anonymous_condition_shared_data.hpp  |     2                                         
   branches/release/libs/interprocess/example/doc_anonymous_mutex_shared_data.hpp      |     2                                         
   branches/release/libs/interprocess/example/doc_anonymous_semaphore_shared_data.hpp  |     2                                         
   branches/release/libs/interprocess/example/doc_anonymous_shared_memory.cpp          |     2                                         
   branches/release/libs/interprocess/example/doc_bufferstream.cpp                     |     2                                         
   branches/release/libs/interprocess/example/doc_cached_adaptive_pool.cpp             |     2                                         
   branches/release/libs/interprocess/example/doc_cached_node_allocator.cpp            |     2                                         
   branches/release/libs/interprocess/example/doc_complex_map.cpp                      |     2                                         
   branches/release/libs/interprocess/example/doc_cont.cpp                             |     2                                         
   branches/release/libs/interprocess/example/doc_file_mapping.cpp                     |     2                                         
   branches/release/libs/interprocess/example/doc_intrusive.cpp                        |     2                                         
   branches/release/libs/interprocess/example/doc_ipc_message.cpp                      |     2                                         
   branches/release/libs/interprocess/example/doc_managed_aligned_allocation.cpp       |    29 +++++++++                               
   branches/release/libs/interprocess/example/doc_managed_allocation_command.cpp       |     2                                         
   branches/release/libs/interprocess/example/doc_managed_construction_info.cpp        |     2                                         
   branches/release/libs/interprocess/example/doc_managed_copy_on_write.cpp            |     2                                         
   branches/release/libs/interprocess/example/doc_managed_external_buffer.cpp          |     2                                         
   branches/release/libs/interprocess/example/doc_managed_grow.cpp                     |     2                                         
   branches/release/libs/interprocess/example/doc_managed_heap_memory.cpp              |     2                                         
   branches/release/libs/interprocess/example/doc_managed_mapped_file.cpp              |     2                                         
   branches/release/libs/interprocess/example/doc_managed_multiple_allocation.cpp      |     2                                         
   branches/release/libs/interprocess/example/doc_managed_raw_allocation.cpp           |     2                                         
   branches/release/libs/interprocess/example/doc_map.cpp                              |     2                                         
   branches/release/libs/interprocess/example/doc_move_containers.cpp                  |     2                                         
   branches/release/libs/interprocess/example/doc_multi_index.cpp                      |     2                                         
   branches/release/libs/interprocess/example/doc_named_alloc.cpp                      |     2                                         
   branches/release/libs/interprocess/example/doc_named_condition_shared_data.hpp      |     2                                         
   branches/release/libs/interprocess/example/doc_named_mutex.cpp                      |     2                                         
   branches/release/libs/interprocess/example/doc_node_allocator.cpp                   |     2                                         
   branches/release/libs/interprocess/example/doc_offset_ptr.cpp                       |     2                                         
   branches/release/libs/interprocess/example/doc_private_adaptive_pool.cpp            |     2                                         
   branches/release/libs/interprocess/example/doc_private_node_allocator.cpp           |     2                                         
   branches/release/libs/interprocess/example/doc_scoped_ptr.cpp                       |     2                                         
   branches/release/libs/interprocess/example/doc_shared_memory.cpp                    |     2                                         
   branches/release/libs/interprocess/example/doc_shared_ptr.cpp                       |     2                                         
   branches/release/libs/interprocess/example/doc_shared_ptr_explicit.cpp              |     2                                         
   branches/release/libs/interprocess/example/doc_unique_ptr.cpp                       |     2                                         
   branches/release/libs/interprocess/example/doc_unordered_map.cpp                    |     2                                         
   branches/release/libs/interprocess/example/doc_upgradable_mutex_shared_data.hpp     |     2                                         
   branches/release/libs/interprocess/example/doc_vectorstream.cpp                     |     2                                         
   branches/release/libs/interprocess/example/doc_where_allocate.cpp                   |     2                                         
   branches/release/libs/interprocess/example/doc_windows_shared_memory.cpp            |     2                                         
   branches/release/libs/interprocess/index.html                                       |     2                                         
   branches/release/libs/interprocess/proj/to-do.txt                                   |     4                                         
   branches/release/libs/interprocess/proj/vc7ide/Interprocess.sln                     |     8 --                                      
   branches/release/libs/interprocess/proj/vc7ide/interprocesslib.vcproj               |     6 ++                                      
   branches/release/libs/interprocess/test/CMakeLists.txt                              |     6 --                                      
   branches/release/libs/interprocess/test/Jamfile.v2                                  |     1                                         
   branches/release/libs/interprocess/test/adaptive_node_pool_test.cpp                 |     3 -                                       
   branches/release/libs/interprocess/test/adaptive_pool_test.cpp                      |     2                                         
   branches/release/libs/interprocess/test/allocator_v1.hpp                            |     2                                         
   branches/release/libs/interprocess/test/allocexcept_test.cpp                        |     2                                         
   branches/release/libs/interprocess/test/anonymous_shared_memory_test.cpp            |     2                                         
   branches/release/libs/interprocess/test/boost_interprocess_check.hpp                |     2                                         
   branches/release/libs/interprocess/test/cached_adaptive_pool_test.cpp               |     2                                         
   branches/release/libs/interprocess/test/cached_node_allocator_test.cpp              |     2                                         
   branches/release/libs/interprocess/test/condition_test_template.hpp                 |     2                                         
   branches/release/libs/interprocess/test/data_test.cpp                               |     2                                         
   branches/release/libs/interprocess/test/deque_test.cpp                              |    39 ++++++++-----                           
   branches/release/libs/interprocess/test/dummy_test_allocator.hpp                    |     2                                         
   branches/release/libs/interprocess/test/emplace_test.hpp                            |     4 -                                       
   branches/release/libs/interprocess/test/enable_shared_from_this_test.cpp            |     2                                         
   branches/release/libs/interprocess/test/expand_bwd_test_allocator.hpp               |     2                                         
   branches/release/libs/interprocess/test/file_lock_test.cpp                          |     2                                         
   branches/release/libs/interprocess/test/file_mapping_test.cpp                       |     2                                         
   branches/release/libs/interprocess/test/flat_tree_test.cpp                          |    32 ++++++++++                              
   branches/release/libs/interprocess/test/get_process_id_name.hpp                     |     2                                         
   branches/release/libs/interprocess/test/heap_allocator_v1.hpp                       |     2                                         
   branches/release/libs/interprocess/test/list_test.cpp                               |    17 ++++-                                   
   branches/release/libs/interprocess/test/list_test.hpp                               |    29 ++++++---                               
   branches/release/libs/interprocess/test/managed_mapped_file_test.cpp                |     2                                         
   branches/release/libs/interprocess/test/managed_shared_memory_test.cpp              |    21 ++++---                                 
   branches/release/libs/interprocess/test/managed_windows_shared_memory_test.cpp      |     2                                         
   branches/release/libs/interprocess/test/map_test.hpp                                |    69 ++++++++++++++++++++---                 
   branches/release/libs/interprocess/test/mapped_file_test.cpp                        |     2                                         
   branches/release/libs/interprocess/test/message_queue_test.cpp                      |     2                                         
   branches/release/libs/interprocess/test/movable_int.hpp                             |    66 +++++++++++++++++++++-                  
   branches/release/libs/interprocess/test/multi_index_test.cpp                        |    13 ++++                                    
   branches/release/libs/interprocess/test/mutex_test.cpp                              |     2                                         
   branches/release/libs/interprocess/test/mutex_test_template.hpp                     |     3                                         
   branches/release/libs/interprocess/test/named_condition_test.cpp                    |     2                                         
   branches/release/libs/interprocess/test/named_construct_test.cpp                    |     2                                         
   branches/release/libs/interprocess/test/named_creation_template.hpp                 |     2                                         
   branches/release/libs/interprocess/test/named_mutex_test.cpp                        |     2                                         
   branches/release/libs/interprocess/test/named_recursive_mutex_test.cpp              |     2                                         
   branches/release/libs/interprocess/test/named_semaphore_test.cpp                    |     2                                         
   branches/release/libs/interprocess/test/named_upgradable_mutex_test.cpp             |     2                                         
   branches/release/libs/interprocess/test/node_allocator_test.cpp                     |     2                                         
   branches/release/libs/interprocess/test/node_pool_test.cpp                          |     3                                         
   branches/release/libs/interprocess/test/null_index_test.cpp                         |     2                                         
   branches/release/libs/interprocess/test/print_container.hpp                         |     2                                         
   branches/release/libs/interprocess/test/private_adaptive_pool_test.cpp              |     2                                         
   branches/release/libs/interprocess/test/private_node_allocator_test.cpp             |     2                                         
   branches/release/libs/interprocess/test/recursive_mutex_test.cpp                    |     2                                         
   branches/release/libs/interprocess/test/semaphore_test.cpp                          |     2                                         
   branches/release/libs/interprocess/test/semaphore_test_template.hpp                 |     2                                         
   branches/release/libs/interprocess/test/set_test.hpp                                |   115 ++++++++++++++++++++++++++++++++------- 
   branches/release/libs/interprocess/test/sharable_mutex_test_template.hpp            |     2                                         
   branches/release/libs/interprocess/test/shared_memory_mapping_test.cpp              |     2                                         
   branches/release/libs/interprocess/test/shared_memory_test.cpp                      |     2                                         
   branches/release/libs/interprocess/test/shared_ptr_test.cpp                         |     2                                         
   branches/release/libs/interprocess/test/slist_test.cpp                              |    14 +++-                                    
   branches/release/libs/interprocess/test/stable_vector_test.cpp                      |     8 ++                                      
   branches/release/libs/interprocess/test/string_test.cpp                             |     2                                         
   branches/release/libs/interprocess/test/tree_test.cpp                               |    20 ++++++                                  
   branches/release/libs/interprocess/test/unordered_test.cpp                          |     2                                         
   branches/release/libs/interprocess/test/upgradable_mutex_test.cpp                   |     2                                         
   branches/release/libs/interprocess/test/user_buffer_test.cpp                        |     2                                         
   branches/release/libs/interprocess/test/util.hpp                                    |     2                                         
   branches/release/libs/interprocess/test/vector_test.cpp                             |     8 ++                                      
   branches/release/libs/interprocess/test/vector_test.hpp                             |    18 +++--                                   
   branches/release/libs/interprocess/test/windows_shared_memory_mapping_test.cpp      |     2                                         
   branches/release/libs/interprocess/test/windows_shared_memory_test.cpp              |     2                                         
   branches/release/libs/intrusive/CMakeLists.txt                                      |     6 --                                      
   branches/release/libs/intrusive/doc/intrusive.qbk                                   |    50 ++++++++++++----                        
   branches/release/libs/intrusive/example/doc_advanced_value_traits.cpp               |     2                                         
   branches/release/libs/intrusive/example/doc_advanced_value_traits2.cpp              |     2                                         
   branches/release/libs/intrusive/example/doc_assoc_optimized_code.cpp                |     2                                         
   branches/release/libs/intrusive/example/doc_auto_unlink.cpp                         |     2                                         
   branches/release/libs/intrusive/example/doc_avl_set.cpp                             |     2                                         
   branches/release/libs/intrusive/example/doc_avltree_algorithms.cpp                  |     2                                         
   branches/release/libs/intrusive/example/doc_bucket_traits.cpp                       |     2                                         
   branches/release/libs/intrusive/example/doc_clone_from.cpp                          |     2                                         
   branches/release/libs/intrusive/example/doc_entity.cpp                              |     2                                         
   branches/release/libs/intrusive/example/doc_erasing_and_disposing.cpp               |     2                                         
   branches/release/libs/intrusive/example/doc_external_value_traits.cpp               |     2                                         
   branches/release/libs/intrusive/example/doc_how_to_use.cpp                          |     2                                         
   branches/release/libs/intrusive/example/doc_iterator_from_value.cpp                 |     2                                         
   branches/release/libs/intrusive/example/doc_list.cpp                                |     2                                         
   branches/release/libs/intrusive/example/doc_list_algorithms.cpp                     |     2                                         
   branches/release/libs/intrusive/example/doc_offset_ptr.cpp                          |     2                                         
   branches/release/libs/intrusive/example/doc_rbtree_algorithms.cpp                   |     2                                         
   branches/release/libs/intrusive/example/doc_set.cpp                                 |     2                                         
   branches/release/libs/intrusive/example/doc_sg_set.cpp                              |     2                                         
   branches/release/libs/intrusive/example/doc_slist.cpp                               |     2                                         
   branches/release/libs/intrusive/example/doc_slist_algorithms.cpp                    |     2                                         
   branches/release/libs/intrusive/example/doc_splay_algorithms.cpp                    |     2                                         
   branches/release/libs/intrusive/example/doc_splay_set.cpp                           |     2                                         
   branches/release/libs/intrusive/example/doc_splaytree_algorithms.cpp                |     2                                         
   branches/release/libs/intrusive/example/doc_stateful_value_traits.cpp               |     2                                         
   branches/release/libs/intrusive/example/doc_treap_algorithms.cpp                    |     2                                         
   branches/release/libs/intrusive/example/doc_treap_set.cpp                           |     2                                         
   branches/release/libs/intrusive/example/doc_unordered_set.cpp                       |     2                                         
   branches/release/libs/intrusive/example/doc_value_traits.cpp                        |     2                                         
   branches/release/libs/intrusive/example/doc_window.cpp                              |     2                                         
   branches/release/libs/intrusive/index.html                                          |     2                                         
   branches/release/libs/intrusive/perf/perf_list.cpp                                  |     2                                         
   branches/release/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj      |     9 +++                                     
   branches/release/libs/intrusive/proj/vc7ide/to-do.txt                               |    16 ----                                    
   branches/release/libs/intrusive/test/any_test.cpp                                   |     2                                         
   branches/release/libs/intrusive/test/avl_multiset_test.cpp                          |    22 +++++++                                 
   branches/release/libs/intrusive/test/avl_set_test.cpp                               |    23 +++++++                                 
   branches/release/libs/intrusive/test/common_functors.hpp                            |     2                                         
   branches/release/libs/intrusive/test/custom_bucket_traits_test.cpp                  |     2                                         
   branches/release/libs/intrusive/test/default_hook_test.cpp                          |     2                                         
   branches/release/libs/intrusive/test/external_value_traits_test.cpp                 |     2                                         
   branches/release/libs/intrusive/test/generic_assoc_test.hpp                         |    79 +++++++++++++++++++++++++++             
   branches/release/libs/intrusive/test/generic_multiset_test.hpp                      |     2                                         
   branches/release/libs/intrusive/test/generic_set_test.hpp                           |   112 ++++++++++++++++++++++++++++++++------  
   branches/release/libs/intrusive/test/itestvalue.hpp                                 |    34 ++++++++++-                             
   branches/release/libs/intrusive/test/list_test.cpp                                  |     2                                         
   branches/release/libs/intrusive/test/make_functions_test.cpp                        |     2                                         
   branches/release/libs/intrusive/test/multiset_test.cpp                              |    22 +++++++                                 
   branches/release/libs/intrusive/test/set_test.cpp                                   |    24 ++++++++                                
   branches/release/libs/intrusive/test/sg_multiset_test.cpp                           |    19 ++++++                                  
   branches/release/libs/intrusive/test/sg_set_test.cpp                                |    16 +++++                                   
   branches/release/libs/intrusive/test/slist_test.cpp                                 |     2                                         
   branches/release/libs/intrusive/test/splay_multiset_test.cpp                        |     2                                         
   branches/release/libs/intrusive/test/stateful_value_traits_test.cpp                 |     2                                         
   branches/release/libs/intrusive/test/test_container.hpp                             |   106 +++++++++++++++++++++++++++++++++++-    
   branches/release/libs/intrusive/test/test_macros.hpp                                |     2                                         
   branches/release/libs/intrusive/test/treap_multiset_test.cpp                        |    22 +++++++                                 
   branches/release/libs/intrusive/test/treap_set_test.cpp                             |    39 +++++++++++++                           
   branches/release/libs/intrusive/test/unordered_multiset_test.cpp                    |    22 +++++++                                 
   branches/release/libs/intrusive/test/unordered_set_test.cpp                         |    22 +++++++                                 
   branches/release/libs/intrusive/test/virtual_base_test.cpp                          |     2                                         
   191 files changed, 1165 insertions(+), 357 deletions(-)
Modified: branches/release/libs/interprocess/doc/Jamfile.v2
==============================================================================
--- branches/release/libs/interprocess/doc/Jamfile.v2	(original)
+++ branches/release/libs/interprocess/doc/Jamfile.v2	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 #  Boost.Interprocess library documentation Jamfile  ---------------------------------
 #
-#  Copyright Ion Gaztanaga 2005-2007. Use, modification and
+#  Copyright Ion Gaztanaga 2005-2009. 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)
@@ -32,7 +32,7 @@
                                    \"BOOST_INTERPROCESS_ENABLE_MOVE_EMULATION(a)= \" \\
                                    \"BOOST_INTERPROCESS_RV_REF(a)=a &&\" \\
                                    \"BOOST_INTERPROCESS_RV_REF_2_TEMPL_ARGS(a,b,c)=a &&\" \\
-                                   \"BOOST_INTERPROCESS_RV_REF_3_TEMPL_ARGS(a)=a &&\" \\
+                                   \"BOOST_INTERPROCESS_RV_REF_3_TEMPL_ARGS(a,b,c,d)=a &&\" \\
                                    \"BOOST_INTERPROCESS_FWD_REF(a)=a &&\""
         <xsl:param>"boost.doxygen.reftitle=Boost.Interprocess Reference"
    ;
Modified: branches/release/libs/interprocess/doc/interprocess.qbk
==============================================================================
--- branches/release/libs/interprocess/doc/interprocess.qbk	(original)
+++ branches/release/libs/interprocess/doc/interprocess.qbk	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,12 +1,12 @@
 [/
- / Copyright (c) 2007-2008 Ion Gaztanaga
+ / Copyright (c) 2007-2009 Ion Gaztanaga
  /
  / 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)
  /]
 
 [library Boost.Interprocess
-    [quickbook 1.3]
+    [quickbook 1.4]
     [authors [Gaztanaga, Ion]]
     [copyright 2005- 2008 Ion Gaztanaga]
     [id interprocess]
@@ -1351,14 +1351,14 @@
 
    #include <boost/interprocess/sync/interprocess_mutex.hpp>
 
-* [classref boost::interprocess::interprocess_mutex]: A non-recursive,
+* [classref boost::interprocess::interprocess_mutex interprocess_mutex]: A non-recursive,
   anonymous mutex that can be placed in shared memory or memory mapped files.
 
 [c++]
 
    #include <boost/interprocess/sync/interprocess_recursive_mutex.hpp>
 
-* [classref boost::interprocess::interprocess_recursive_mutex]: A recursive,
+* [classref boost::interprocess::interprocess_recursive_mutex interprocess_recursive_mutex]: A recursive,
   anonymous mutex that can be placed in shared memory or memory mapped files.
 
 [c++]
@@ -1518,7 +1518,7 @@
 
    #include <boost/interprocess/sync/interprocess_condition.hpp>
 
-* [classref boost::interprocess::interprocess_condition]:
+* [classref boost::interprocess::interprocess_condition interprocess_condition]:
   An anonymous condition variable that can be placed in shared memory or memory
   mapped files to be used with [classref boost::interprocess::interprocess_mutex].
 
@@ -1526,8 +1526,8 @@
 
    #include <boost/interprocess/sync/named_condition.hpp>
 
-* [classref boost::interprocess::named_condition]: A named
-  condition variable to be used with [classref boost::interprocess::named_mutex].
+* [classref boost::interprocess::named_condition named_condition]: A named
+  condition variable to be used with [classref boost::interprocess::named_mutex named_mutex].
 
 Named conditions are similar to anonymous conditions, but they are used in
 combination with named mutexes. Several times, we don't want to store
@@ -1609,7 +1609,7 @@
 
    #include <boost/interprocess/sync/interprocess_semaphore.hpp>
 
-* [classref boost::interprocess::interprocess_semaphore]:
+* [classref boost::interprocess::interprocess_semaphore interprocess_semaphore]:
   An anonymous semaphore that can be placed in shared memory or memory
   mapped files.
 
@@ -1617,13 +1617,9 @@
 
    #include <boost/interprocess/sync/named_semaphore.hpp>
 
-* [classref boost::interprocess::named_condition]: A named
+* [classref boost::interprocess::named_semaphore named_semaphore]: A named
   semaphore.
 
-Named conditions are similar to anonymous conditions, but they are used in
-combination with named mutexes. Several times, we don't want to store
-synchronization objects with the synchronized data:
-
 [endsect]
 
 [section:semaphores_anonymous_example Anonymous semaphore example]
@@ -1977,7 +1973,7 @@
 
    #include <boost/interprocess/sync/interprocess_upgradable_mutex.hpp>
 
-* [classref boost::interprocess::interprocess_upgradable_mutex]: A non-recursive,
+* [classref boost::interprocess::interprocess_upgradable_mutex interprocess_upgradable_mutex]: A non-recursive,
   anonymous upgradable mutex that can be placed in shared memory or memory mapped files.
 
 [c++]
@@ -1993,12 +1989,12 @@
 
 As with plain mutexes, it's important to release the acquired lock even in the presence
 of exceptions. [*Boost.Interprocess] mutexes are best used with the 
-[classref boost::interprocess::scoped_lock] utility,
+[classref boost::interprocess::scoped_lock scoped_lock] utility,
 and this class only offers exclusive locking.
 
 As we have sharable locking and upgradable locking with upgradable mutexes, we have two new
-utilities: [classref boost::interprocess::sharable_lock] and 
-[classref boost::interprocess::upgradable_lock]. Both classes are similar to `scoped_lock`
+utilities: [classref boost::interprocess::sharable_lock sharable_lock] and 
+[classref boost::interprocess::upgradable_lock upgradable_lock]. Both classes are similar to `scoped_lock`
 but `sharable_lock` acquires the sharable lock in the constructor and `upgradable_lock`
 acquires the upgradable lock in the constructor.
 
@@ -2855,7 +2851,7 @@
 [doc_message_queueB]
 
 To know more about this class and all its operations, please see the
-[classref boost::interprocess::message_queue] class reference.
+[classref boost::interprocess::message_queue message_queue] class reference.
 
 [endsect]
 
@@ -3425,7 +3421,7 @@
 named/unique allocations is defined by the 
 `MemoryAlgorithm::mutex_family::recursive_mutex_type` type. For shared memory,
 and memory mapped file based managed segments this recursive mutex is defined
-as [classref boost::interprocess::interprocess_recursive_mutex].
+as [classref boost::interprocess::interprocess_recursive_mutex interprocess_recursive_mutex].
 
 If two processes can call:
 
@@ -4189,7 +4185,7 @@
    #include <boost/interprocess/managed_heap_memory.hpp>
 
 The use is exactly the same as 
-[classref boost::interprocess::basic_managed_external_buffer],
+[classref boost::interprocess::basic_managed_external_buffer basic_managed_external_buffer],
 except that memory is created by
 the managed memory segment itself using dynamic (new/delete) memory.
 
@@ -5023,7 +5019,7 @@
 
 
 To transfer the contents of a container to another one, use 
-`boost::move()` function, as shown in the example. For more details
+`boost::interprocess::move()` function, as shown in the example. For more details
 about functions supporting move-semantics, see the reference section of
 Boost.Interprocess containers:
 
@@ -6534,6 +6530,14 @@
 
 [section:release_notes Release Notes]
 
+[section:release_notes_boost_1_41_00 Boost 1.41 Release]
+
+*  Support for POSIX shared memory in Mac OS.
+*  [*ABI breaking]: Generic `semaphore` and `named_semaphore` now implemented more efficiently with atomic operations.
+*  More robust file opening in Windows platforms with active Anti-virus software.
+
+[endsect]
+
 [section:release_notes_boost_1_40_00 Boost 1.40 Release]
 
 *  Windows shared memory is created in Shared Documents folder so that it can be shared
Modified: branches/release/libs/interprocess/example/Jamfile.v2
==============================================================================
--- branches/release/libs/interprocess/example/Jamfile.v2	(original)
+++ branches/release/libs/interprocess/example/Jamfile.v2	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -36,6 +36,7 @@
       :  # requirements
         <toolset>acc:<linkflags>-lrt
         <toolset>acc-pa_risc:<linkflags>-lrt
+        <host-os>hpux,<toolset>gcc:<linkflags>"-Wl,+as,mpas"
       ] ;
    }
 
Modified: branches/release/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp
==============================================================================
--- branches/release/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp	(original)
+++ branches/release/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/comp_doc_anonymous_conditionB.cpp
==============================================================================
--- branches/release/libs/interprocess/example/comp_doc_anonymous_conditionB.cpp	(original)
+++ branches/release/libs/interprocess/example/comp_doc_anonymous_conditionB.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/comp_doc_anonymous_mutexA.cpp
==============================================================================
--- branches/release/libs/interprocess/example/comp_doc_anonymous_mutexA.cpp	(original)
+++ branches/release/libs/interprocess/example/comp_doc_anonymous_mutexA.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp
==============================================================================
--- branches/release/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp	(original)
+++ branches/release/libs/interprocess/example/comp_doc_anonymous_mutexB.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp
==============================================================================
--- branches/release/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp	(original)
+++ branches/release/libs/interprocess/example/comp_doc_anonymous_semaphoreA.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp
==============================================================================
--- branches/release/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp	(original)
+++ branches/release/libs/interprocess/example/comp_doc_anonymous_semaphoreB.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp
==============================================================================
--- branches/release/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp	(original)
+++ branches/release/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexA.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp
==============================================================================
--- branches/release/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp	(original)
+++ branches/release/libs/interprocess/example/comp_doc_anonymous_upgradable_mutexB.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/comp_doc_message_queueA.cpp
==============================================================================
--- branches/release/libs/interprocess/example/comp_doc_message_queueA.cpp	(original)
+++ branches/release/libs/interprocess/example/comp_doc_message_queueA.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/comp_doc_message_queueB.cpp
==============================================================================
--- branches/release/libs/interprocess/example/comp_doc_message_queueB.cpp	(original)
+++ branches/release/libs/interprocess/example/comp_doc_message_queueB.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_adaptive_pool.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_adaptive_pool.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_adaptive_pool.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_allocator.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_allocator.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_allocator.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_anonymous_condition_shared_data.hpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_anonymous_condition_shared_data.hpp	(original)
+++ branches/release/libs/interprocess/example/doc_anonymous_condition_shared_data.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_anonymous_mutex_shared_data.hpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_anonymous_mutex_shared_data.hpp	(original)
+++ branches/release/libs/interprocess/example/doc_anonymous_mutex_shared_data.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_anonymous_semaphore_shared_data.hpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_anonymous_semaphore_shared_data.hpp	(original)
+++ branches/release/libs/interprocess/example/doc_anonymous_semaphore_shared_data.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_anonymous_shared_memory.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_anonymous_shared_memory.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_anonymous_shared_memory.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_bufferstream.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_bufferstream.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_bufferstream.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_cached_adaptive_pool.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_cached_adaptive_pool.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_cached_adaptive_pool.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_cached_node_allocator.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_cached_node_allocator.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_cached_node_allocator.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_complex_map.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_complex_map.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_complex_map.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_cont.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_cont.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_cont.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_file_mapping.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_file_mapping.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_file_mapping.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_intrusive.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_intrusive.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_intrusive.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_ipc_message.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_ipc_message.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_ipc_message.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_managed_aligned_allocation.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_aligned_allocation.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_managed_aligned_allocation.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
@@ -85,4 +85,31 @@
    return 0;
 }
 //]
+/*
+
+#include <vector>
+#include <boost/interprocess/managed_windows_shared_memory.hpp>
+
+int main()
+{
+   using namespace boost::interprocess;
+   typedef boost::interprocess::
+      managed_windows_shared_memory  shared_segment;
+
+   std::vector<void *> ptrs;
+   shared_segment m_segment(create_only, "shmem", 4096*16);
+   try{
+      while(1){
+         //Now I have several allocate_aligned operations:
+         ptrs.push_back(m_segment.allocate_aligned(128, 128));
+      }
+   }
+   catch(...){
+      m_segment.deallocate(ptrs.back());
+      ptrs.pop_back();
+      ptrs.push_back(m_segment.allocate_aligned(128, 128));
+   }   
+   return 0;
+}
+*/
 #include <boost/interprocess/detail/config_end.hpp>
Modified: branches/release/libs/interprocess/example/doc_managed_allocation_command.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_allocation_command.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_managed_allocation_command.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_managed_construction_info.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_construction_info.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_managed_construction_info.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_managed_copy_on_write.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_copy_on_write.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_managed_copy_on_write.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2008. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_managed_external_buffer.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_external_buffer.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_managed_external_buffer.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_managed_grow.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_grow.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_managed_grow.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_managed_heap_memory.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_heap_memory.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_managed_heap_memory.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_managed_mapped_file.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_mapped_file.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_managed_mapped_file.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_managed_multiple_allocation.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_multiple_allocation.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_managed_multiple_allocation.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_managed_raw_allocation.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_managed_raw_allocation.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_managed_raw_allocation.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_map.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_map.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_map.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_move_containers.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_move_containers.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_move_containers.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_multi_index.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_multi_index.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_multi_index.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_named_alloc.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_named_alloc.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_named_alloc.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_named_condition_shared_data.hpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_named_condition_shared_data.hpp	(original)
+++ branches/release/libs/interprocess/example/doc_named_condition_shared_data.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_named_mutex.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_named_mutex.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_named_mutex.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_node_allocator.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_node_allocator.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_node_allocator.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_offset_ptr.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_offset_ptr.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_offset_ptr.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_private_adaptive_pool.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_private_adaptive_pool.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_private_adaptive_pool.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_private_node_allocator.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_private_node_allocator.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_private_node_allocator.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_scoped_ptr.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_scoped_ptr.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_scoped_ptr.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_shared_memory.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_shared_memory.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_shared_memory.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_shared_ptr.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_shared_ptr.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_shared_ptr.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007.
+// (C) Copyright Ion Gaztanaga 2006-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)
Modified: branches/release/libs/interprocess/example/doc_shared_ptr_explicit.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_shared_ptr_explicit.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_shared_ptr_explicit.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007.
+// (C) Copyright Ion Gaztanaga 2006-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)
Modified: branches/release/libs/interprocess/example/doc_unique_ptr.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_unique_ptr.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_unique_ptr.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007.
+// (C) Copyright Ion Gaztanaga 2006-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)
Modified: branches/release/libs/interprocess/example/doc_unordered_map.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_unordered_map.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_unordered_map.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_upgradable_mutex_shared_data.hpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_upgradable_mutex_shared_data.hpp	(original)
+++ branches/release/libs/interprocess/example/doc_upgradable_mutex_shared_data.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_vectorstream.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_vectorstream.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_vectorstream.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_where_allocate.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_where_allocate.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_where_allocate.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/example/doc_windows_shared_memory.cpp
==============================================================================
--- branches/release/libs/interprocess/example/doc_windows_shared_memory.cpp	(original)
+++ branches/release/libs/interprocess/example/doc_windows_shared_memory.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
Modified: branches/release/libs/interprocess/index.html
==============================================================================
--- branches/release/libs/interprocess/index.html	(original)
+++ branches/release/libs/interprocess/index.html	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,5 +1,5 @@
 <!--
-Copyright 2005-2008 Ion Gaztanaga
+Copyright 2005-2009 Ion Gaztanaga
 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)
 -->
Modified: branches/release/libs/interprocess/proj/to-do.txt
==============================================================================
--- branches/release/libs/interprocess/proj/to-do.txt	(original)
+++ branches/release/libs/interprocess/proj/to-do.txt	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -55,10 +55,10 @@
 
 -> operator >> and similar need moved_value
 
--> Add cmath workaround for Boost < 1.37
-
 -> rvalue reference enabled compilers are not optimized with is_movable and move_iterator
 
 -> Add allocator test template that test all new functions (allocate_many, etc.)
 
 -> MacOS shm_open is non-conformant. Is there a way to know the size of a shared memory object?
+
+-> swap() of multiallocaiton iterator is wrong. Try to reimplement it with slist
\ No newline at end of file
Modified: branches/release/libs/interprocess/proj/vc7ide/Interprocess.sln
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/Interprocess.sln	(original)
+++ branches/release/libs/interprocess/proj/vc7ide/Interprocess.sln	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -387,10 +387,6 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_windows_shared_memory2", "doc_windows_shared_memory2.vcproj", "{5E1D6C83-31DE-4F6F-6132-87A9FB663041}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_map_index_allocation_test", "flat_map_index_allocation_test.vcproj", "{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
@@ -833,10 +829,6 @@
                 {58C181B3-9516-463E-2F12-122155400054}.Debug.Build.0 = Debug|Win32
                 {58C181B3-9516-463E-2F12-122155400054}.Release.ActiveCfg = Release|Win32
                 {58C181B3-9516-463E-2F12-122155400054}.Release.Build.0 = Release|Win32
-		{5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Debug.ActiveCfg = Debug|Win32
-		{5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Debug.Build.0 = Debug|Win32
-		{5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Release.ActiveCfg = Release|Win32
-		{5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Release.Build.0 = Release|Win32
                 {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.ActiveCfg = Debug|Win32
                 {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.Build.0 = Debug|Win32
                 {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.ActiveCfg = Release|Win32
Modified: branches/release/libs/interprocess/proj/vc7ide/interprocesslib.vcproj
==============================================================================
--- branches/release/libs/interprocess/proj/vc7ide/interprocesslib.vcproj	(original)
+++ branches/release/libs/interprocess/proj/vc7ide/interprocesslib.vcproj	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -99,6 +99,9 @@
                         Name="Containers"
                         Filter="">
                         <File
+				RelativePath="..\..\..\..\boost\interprocess\containers\containers_fwd.hpp">
+			</File>
+			<File
                                 RelativePath="..\..\..\..\boost\interprocess\containers\deque.hpp">
                         </File>
                         <File
@@ -373,6 +376,9 @@
                                 RelativePath="..\..\..\..\boost\interprocess\detail\in_place_interface.hpp">
                         </File>
                         <File
+				RelativePath="..\..\..\..\boost\interprocess\detail\intermodule_singleton.hpp">
+			</File>
+			<File
                                 RelativePath="..\..\..\..\boost\interprocess\detail\interprocess_tester.hpp">
                         </File>
                         <File
Modified: branches/release/libs/interprocess/test/CMakeLists.txt
==============================================================================
--- branches/release/libs/interprocess/test/CMakeLists.txt	(original)
+++ branches/release/libs/interprocess/test/CMakeLists.txt	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,9 +1,3 @@
-#
-# Copyright Troy D. Straszheim
-#
-# Distributed under the Boost Software License, Version 1.0.
-# See http://www.boost.org/LICENSE_1_0.txt
-#
 boost_additional_test_dependencies(interprocess BOOST_DEPENDS test thread date_time multi_index)
 
 
Modified: branches/release/libs/interprocess/test/Jamfile.v2
==============================================================================
--- branches/release/libs/interprocess/test/Jamfile.v2	(original)
+++ branches/release/libs/interprocess/test/Jamfile.v2	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -27,6 +27,7 @@
       :  # requirements
         <toolset>acc:<linkflags>-lrt
         <toolset>acc-pa_risc:<linkflags>-lrt
+        <host-os>hpux,<toolset>gcc:<linkflags>"-Wl,+as,mpas"
       ] ;
    }
 
Modified: branches/release/libs/interprocess/test/adaptive_node_pool_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/adaptive_node_pool_test.cpp	(original)
+++ branches/release/libs/interprocess/test/adaptive_node_pool_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -16,9 +16,6 @@
 using namespace boost::interprocess;
 typedef managed_shared_memory::segment_manager segment_manager_t;
 
-//Explicit specialization to catch compilation errors
-template class detail::private_adaptive_node_pool_impl<segment_manager_t>;
-
 int main ()
 {
    typedef detail::private_adaptive_node_pool
Modified: branches/release/libs/interprocess/test/adaptive_pool_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/adaptive_pool_test.cpp	(original)
+++ branches/release/libs/interprocess/test/adaptive_pool_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/allocator_v1.hpp
==============================================================================
--- branches/release/libs/interprocess/test/allocator_v1.hpp	(original)
+++ branches/release/libs/interprocess/test/allocator_v1.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-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)
 //
Modified: branches/release/libs/interprocess/test/allocexcept_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/allocexcept_test.cpp	(original)
+++ branches/release/libs/interprocess/test/allocexcept_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/anonymous_shared_memory_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/anonymous_shared_memory_test.cpp	(original)
+++ branches/release/libs/interprocess/test/anonymous_shared_memory_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/boost_interprocess_check.hpp
==============================================================================
--- branches/release/libs/interprocess/test/boost_interprocess_check.hpp	(original)
+++ branches/release/libs/interprocess/test/boost_interprocess_check.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/cached_adaptive_pool_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/cached_adaptive_pool_test.cpp	(original)
+++ branches/release/libs/interprocess/test/cached_adaptive_pool_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/cached_node_allocator_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/cached_node_allocator_test.cpp	(original)
+++ branches/release/libs/interprocess/test/cached_node_allocator_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2008. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/condition_test_template.hpp
==============================================================================
--- branches/release/libs/interprocess/test/condition_test_template.hpp	(original)
+++ branches/release/libs/interprocess/test/condition_test_template.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -10,7 +10,7 @@
 // It is provided "as is" without express or implied warranty.
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-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)
 //
Modified: branches/release/libs/interprocess/test/data_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/data_test.cpp	(original)
+++ branches/release/libs/interprocess/test/data_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/deque_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/deque_test.cpp	(original)
+++ branches/release/libs/interprocess/test/deque_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
@@ -152,7 +152,7 @@
    const char *const shMemName = test::get_process_id_name();
    const int max = 100;
 
-   try{
+   /*try*/{
       shared_memory_object::remove(shMemName);
 
       //Create shared memory
@@ -167,33 +167,39 @@
 
       MyStdDeque *stddeque = new MyStdDeque;
 
-      try{
+      /*try*/{
          //Compare several shared memory deque operations with std::deque
          int i;
-         for(i = 0; i < max*100; ++i){
+         for(i = 0; i < max*50; ++i){
             IntType move_me(i);
             shmdeque->insert(shmdeque->end(), boost::interprocess::move(move_me));
             stddeque->insert(stddeque->end(), i);
+            shmdeque->insert(shmdeque->end(), IntType(i));
+            stddeque->insert(stddeque->end(), int(i));
          }
          if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
 
          shmdeque->clear();
          stddeque->clear();
 
-         for(i = 0; i < max*100; ++i){
+         for(i = 0; i < max*50; ++i){
             IntType move_me(i);
             shmdeque->push_back(boost::interprocess::move(move_me));
             stddeque->push_back(i);
+            shmdeque->push_back(IntType(i));
+            stddeque->push_back(i);
          }
          if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
 
          shmdeque->clear();
          stddeque->clear();
 
-         for(i = 0; i < max*100; ++i){
+         for(i = 0; i < max*50; ++i){
             IntType move_me(i);
             shmdeque->push_front(boost::interprocess::move(move_me));
             stddeque->push_front(i);
+            shmdeque->push_front(IntType(i));
+            stddeque->push_front(int(i));
          }
          if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
 
@@ -221,8 +227,8 @@
             }
 
             shmdeque->insert(shmdeque->end()
-                              ,boost::interprocess::make_move_iterator(&aux_vect[0])
-                              ,boost::interprocess::make_move_iterator(aux_vect + 50));
+                              ,::boost::interprocess::make_move_iterator(&aux_vect[0])
+                              ,::boost::interprocess::make_move_iterator(aux_vect + 50));
             stddeque->insert(stddeque->end(), aux_vect2, aux_vect2 + 50);
             if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
 
@@ -243,14 +249,14 @@
                aux_vect2[i] = -1;
             }
             shmdeque->insert(shmdeque->begin()
-                              ,boost::interprocess::make_move_iterator(&aux_vect[0])
-                              ,boost::interprocess::make_move_iterator(aux_vect + 50));
+                              ,::boost::interprocess::make_move_iterator(&aux_vect[0])
+                              ,::boost::interprocess::make_move_iterator(aux_vect + 50));
             stddeque->insert(stddeque->begin(), aux_vect2, aux_vect2 + 50);
             if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
          }
 
          if(!copyable_only(shmdeque, stddeque
-                        ,detail::bool_<!boost::interprocess::is_movable<IntType>::value>())){
+                        ,detail::bool_<!::boost::interprocess::is_movable<IntType>::value>())){
             return false;
          }
 
@@ -291,18 +297,18 @@
 
          if(!segment.all_memory_deallocated())
             return false;
-      }
+      }/*
       catch(std::exception &ex){
          std::cout << ex.what() << std::endl;
          return false;
-      }
+      }*/
       
       std::cout << std::endl << "Test OK!" << std::endl;
-   }
+   }/*
    catch(...){
       shared_memory_object::remove(shMemName);
       throw;
-   }
+   }*/
    shared_memory_object::remove(shMemName);
    return true;
 }
@@ -315,6 +321,9 @@
    if(!do_test<test::movable_int, allocator>())
       return 1;
 
+   if(!do_test<test::copyable_int, allocator>())
+      return 1;
+
    if(!do_test<int, test::allocator_v1>())
       return 1;
 
Modified: branches/release/libs/interprocess/test/dummy_test_allocator.hpp
==============================================================================
--- branches/release/libs/interprocess/test/dummy_test_allocator.hpp	(original)
+++ branches/release/libs/interprocess/test/dummy_test_allocator.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-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)
 //
Modified: branches/release/libs/interprocess/test/emplace_test.hpp
==============================================================================
--- branches/release/libs/interprocess/test/emplace_test.hpp	(original)
+++ branches/release/libs/interprocess/test/emplace_test.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -25,11 +25,9 @@
 class EmplaceInt
 {
    private:
-   EmplaceInt (const EmplaceInt &o);
-   EmplaceInt& operator=(const EmplaceInt &o);
+   BOOST_INTERPROCESS_MOVABLE_BUT_NOT_COPYABLE(EmplaceInt)
 
    public:
-   BOOST_INTERPROCESS_ENABLE_MOVE_EMULATION(EmplaceInt)
 
    EmplaceInt(int a = 0, int b = 0, int c = 0, int d = 0, int e = 0)
       : a_(a), b_(b), c_(c), d_(d), e_(e)
Modified: branches/release/libs/interprocess/test/enable_shared_from_this_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/enable_shared_from_this_test.cpp	(original)
+++ branches/release/libs/interprocess/test/enable_shared_from_this_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -3,7 +3,7 @@
 //
 // This file is the adaptation of shared_from_this_test.cpp from smart_ptr library
 //
-// (C) Copyright Ion Gaztanaga 2005-2008. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-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)
 //
Modified: branches/release/libs/interprocess/test/expand_bwd_test_allocator.hpp
==============================================================================
--- branches/release/libs/interprocess/test/expand_bwd_test_allocator.hpp	(original)
+++ branches/release/libs/interprocess/test/expand_bwd_test_allocator.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-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)
 //
Modified: branches/release/libs/interprocess/test/file_lock_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/file_lock_test.cpp	(original)
+++ branches/release/libs/interprocess/test/file_lock_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2008. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/file_mapping_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/file_mapping_test.cpp	(original)
+++ branches/release/libs/interprocess/test/file_mapping_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/flat_tree_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/flat_tree_test.cpp	(original)
+++ branches/release/libs/interprocess/test/flat_tree_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
@@ -77,6 +77,10 @@
 
 typedef allocator<test::movable_and_copyable_int, my_managed_shared_memory::segment_manager> 
    shmem_move_copy_allocator_t;
+
+typedef allocator<test::copyable_int, my_managed_shared_memory::segment_manager> 
+   shmem_copy_allocator_t;
+
 typedef allocator<std::pair<test::movable_and_copyable_int, test::movable_and_copyable_int>, my_managed_shared_memory::segment_manager> 
    shmem_move_copy_pair_allocator_t;
 
@@ -106,6 +110,12 @@
                 ,shmem_move_copy_allocator_t>                             MyMoveCopyShmSet;
 typedef flat_multiset<test::movable_and_copyable_int,std::less<test::movable_and_copyable_int>
                      ,shmem_move_copy_allocator_t>                        MyMoveCopyShmMultiSet;
+
+typedef flat_set<test::copyable_int, std::less<test::copyable_int>
+                ,shmem_copy_allocator_t>                                MyCopyShmSet;
+typedef flat_multiset<test::copyable_int,std::less<test::copyable_int>
+                     ,shmem_copy_allocator_t>                           MyCopyShmMultiSet;
+
 typedef flat_map<test::movable_and_copyable_int, test::movable_and_copyable_int
                 ,std::less<test::movable_and_copyable_int>
                 ,shmem_move_copy_pair_allocator_t>                        MyMoveCopyShmMap;
@@ -128,6 +138,12 @@
 public:
    int id_;
    flat_map<recursive_flat_map, recursive_flat_map> map_;
+   recursive_flat_map (const recursive_flat_map&x)
+      :id_(x.id_), map_(x.map_)
+   {}
+   recursive_flat_map &operator=(const recursive_flat_map &x)
+   { id_ = x.id_; map_ = x.map_; return *this; }
+
    friend bool operator< (const recursive_flat_map &a, const recursive_flat_map &b)
    {  return a.id_ < b.id_;   }
 };
@@ -147,6 +163,11 @@
 public:
    int id_;
    flat_map<recursive_flat_multimap, recursive_flat_multimap> map_;
+   recursive_flat_multimap (const recursive_flat_multimap&x)
+      :id_(x.id_), map_(x.map_)
+   {}
+   recursive_flat_multimap &operator=(const recursive_flat_multimap &x)
+   { id_ = x.id_; map_ = x.map_; return *this; }
    friend bool operator< (const recursive_flat_multimap &a, const recursive_flat_multimap &b)
    {  return a.id_ < b.id_;   }
 };
@@ -211,6 +232,15 @@
       return 1;
    }
 
+   if (0 != set_test<my_managed_shared_memory
+                  ,MyCopyShmSet
+                  ,MyStdSet
+                  ,MyCopyShmMultiSet
+                  ,MyStdMultiSet>()){
+      std::cout << "Error in set_test<MyCopyShmSet>" << std::endl;
+      return 1;
+   }
+
    if (0 != map_test<my_managed_shared_memory
                   ,MyShmMap
                   ,MyStdMap
Modified: branches/release/libs/interprocess/test/get_process_id_name.hpp
==============================================================================
--- branches/release/libs/interprocess/test/get_process_id_name.hpp	(original)
+++ branches/release/libs/interprocess/test/get_process_id_name.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/heap_allocator_v1.hpp
==============================================================================
--- branches/release/libs/interprocess/test/heap_allocator_v1.hpp	(original)
+++ branches/release/libs/interprocess/test/heap_allocator_v1.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-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)
 //
Modified: branches/release/libs/interprocess/test/list_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/list_test.cpp	(original)
+++ branches/release/libs/interprocess/test/list_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
@@ -27,8 +27,8 @@
 typedef allocator<int, managed_shared_memory::segment_manager> ShmemAllocator;
 typedef list<int, ShmemAllocator> MyList;
 
-typedef allocator<volatile int, managed_shared_memory::segment_manager> ShmemVolatileAllocator;
-typedef list<volatile int, ShmemVolatileAllocator> MyVolatileList;
+//typedef allocator<volatile int, managed_shared_memory::segment_manager> ShmemVolatileAllocator;
+//typedef list<volatile int, ShmemVolatileAllocator> MyVolatileList;
 
 typedef allocator<test::movable_int, managed_shared_memory::segment_manager> ShmemMoveAllocator;
 typedef list<test::movable_int, ShmemMoveAllocator> MyMoveList;
@@ -36,6 +36,10 @@
 typedef allocator<test::movable_and_copyable_int, managed_shared_memory::segment_manager> ShmemCopyMoveAllocator;
 typedef list<test::movable_and_copyable_int, ShmemCopyMoveAllocator> MyCopyMoveList;
 
+typedef allocator<test::copyable_int, managed_shared_memory::segment_manager> ShmemCopyAllocator;
+typedef list<test::copyable_int, ShmemCopyAllocator> MyCopyList;
+
+
 class recursive_list
 {
 public:
@@ -62,8 +66,8 @@
    if(test::list_test<managed_shared_memory, MyList, true>())
       return 1;
 
-   if(test::list_test<managed_shared_memory, MyVolatileList, true>())
-      return 1;
+//   if(test::list_test<managed_shared_memory, MyVolatileList, true>())
+//      return 1;
 
    if(test::list_test<managed_shared_memory, MyMoveList, true>())
       return 1;
@@ -71,6 +75,9 @@
    if(test::list_test<managed_shared_memory, MyCopyMoveList, true>())
       return 1;
 
+   if(test::list_test<managed_shared_memory, MyCopyList, true>())
+      return 1;
+
    const test::EmplaceOptions Options = (test::EmplaceOptions)(test::EMPLACE_BACK | test::EMPLACE_FRONT | test::EMPLACE_BEFORE);
 
    if(!boost::interprocess::test::test_emplace<list<test::EmplaceInt>, Options>())
Modified: branches/release/libs/interprocess/test/list_test.hpp
==============================================================================
--- branches/release/libs/interprocess/test/list_test.hpp	(original)
+++ branches/release/libs/interprocess/test/list_test.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -37,6 +37,8 @@
          IntType move_me(i);
          shmlist->push_back(boost::interprocess::move(move_me));
          stdlist->push_back(i);
+         shmlist->push_back(IntType(i));
+         stdlist->push_back(int(i));
       }
       if(!CheckEqualContainers(shmlist, stdlist))
          return 1;
@@ -55,6 +57,8 @@
          IntType move_me(i);
          shmlist->push_front(boost::interprocess::move(move_me));
          stdlist->push_front(i);
+         shmlist->push_front(IntType(i));
+         stdlist->push_front(int(i));
       }
       if(!CheckEqualContainers(shmlist, stdlist))
          return 1;
@@ -115,7 +119,7 @@
 
       MyStdList *stdlist = new MyStdList;
 
-      if(push_data_t::execute(max, shmlist, stdlist)){
+      if(push_data_t::execute(max/2, shmlist, stdlist)){
          return 1;
       }
 
@@ -141,8 +145,8 @@
          for(int i = 0; i < 50; ++i){
             aux_vect2[i] = -1;
          }
-         shmlist->assign(boost::interprocess::make_move_iterator(&aux_vect[0])
-                        ,boost::interprocess::make_move_iterator(&aux_vect[50]));
+         shmlist->assign(::boost::interprocess::make_move_iterator(&aux_vect[0])
+                        ,::boost::interprocess::make_move_iterator(&aux_vect[50]));
          stdlist->assign(&aux_vect2[0], &aux_vect2[50]);
          if(!CheckEqualContainers(shmlist, stdlist)) return 1;
       }
@@ -172,8 +176,8 @@
             aux_vect2[i] = -1;
          }
          shmlist->insert(shmlist->begin()
-                        ,boost::interprocess::make_move_iterator(&aux_vect[0])
-                        ,boost::interprocess::make_move_iterator(&aux_vect[50]));
+                        ,::boost::interprocess::make_move_iterator(&aux_vect[0])
+                        ,::boost::interprocess::make_move_iterator(&aux_vect[50]));
          stdlist->insert(stdlist->begin(), &aux_vect2[0], &aux_vect2[50]);
       }
 
@@ -198,7 +202,7 @@
       if(!CheckEqualContainers(shmlist, stdlist))
          return 1;
 
-      if(push_data_t::execute(max, shmlist, stdlist)){
+      if(push_data_t::execute(max/2, shmlist, stdlist)){
          return 1;
       }
       {
@@ -207,7 +211,7 @@
 
          int listsize = (int)shmlist->size();
 
-         if(push_data_t::execute(listsize, shmlist, stdlist)){
+         if(push_data_t::execute(listsize/2, shmlist, stdlist)){
             return 1;
          }
 
@@ -220,11 +224,11 @@
 
          listsize = (int)shmlist->size();
 
-         if(push_data_t::execute(listsize, shmlist, stdlist)){
+         if(push_data_t::execute(listsize/2, shmlist, stdlist)){
             return 1;
          }
 
-         if(push_data_t::execute(listsize, &othershmlist, &otherstdlist)){
+         if(push_data_t::execute(listsize/2, &othershmlist, &otherstdlist)){
             return 1;
          }
 
@@ -244,6 +248,13 @@
             if(!CheckEqualContainers(shmlist, stdlist))
                return 1;
          }
+
+         for(int i = 0; i < max; ++i){
+            shmlist->insert(shmlist->begin(), IntType(i));
+            stdlist->insert(stdlist->begin(), int(i));
+         }
+         if(!CheckEqualContainers(shmlist, stdlist))
+            return 1;
       }
 
       segment.template destroy<MyShmList>("MyList");
Modified: branches/release/libs/interprocess/test/managed_mapped_file_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/managed_mapped_file_test.cpp	(original)
+++ branches/release/libs/interprocess/test/managed_mapped_file_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/managed_shared_memory_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/managed_shared_memory_test.cpp	(original)
+++ branches/release/libs/interprocess/test/managed_shared_memory_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
@@ -122,6 +122,7 @@
       if(!shmem_vect)
          return -1;
    }
+   #ifndef BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS_NO_GROW
    {
       std::size_t old_free_memory;
       {
@@ -196,14 +197,16 @@
          if(next_shmem_size <= final_shmem_size)
             return -1;
       }
-      {
-         //Now test move semantics
-         managed_shared_memory original(open_only, ShmemName);
-         managed_shared_memory move_ctor(boost::interprocess::move(original));
-         managed_shared_memory move_assign;
-         move_assign = boost::interprocess::move(move_ctor);
-         move_assign.swap(original);
-      }
+   }
+   #endif //ifndef BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS_NO_GROW
+
+   {
+      //Now test move semantics
+      managed_shared_memory original(open_only, ShmemName);
+      managed_shared_memory move_ctor(boost::interprocess::move(original));
+      managed_shared_memory move_assign;
+      move_assign = boost::interprocess::move(move_ctor);
+      move_assign.swap(original);
    }
 
    shared_memory_object::remove(ShmemName);
Modified: branches/release/libs/interprocess/test/managed_windows_shared_memory_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/managed_windows_shared_memory_test.cpp	(original)
+++ branches/release/libs/interprocess/test/managed_windows_shared_memory_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/map_test.hpp
==============================================================================
--- branches/release/libs/interprocess/test/map_test.hpp	(original)
+++ branches/release/libs/interprocess/test/map_test.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -94,26 +94,75 @@
 
          MyShmMap *shmmap2 = 
             segment.template construct<MyShmMap>("MyShmMap2")
-               (boost::interprocess::make_move_iterator(&aux_vect[0])
-               , boost::interprocess::make_move_iterator(aux_vect + 50)
+               ( ::boost::interprocess::make_move_iterator(&aux_vect[0])
+               , ::boost::interprocess::make_move_iterator(aux_vect + 50)
                , std::less<IntType>(), segment.get_segment_manager());
 
          MyStdMap *stdmap2 = new MyStdMap(aux_vect2, aux_vect2 + 50);
 
          MyShmMultiMap *shmmultimap2 = 
             segment.template construct<MyShmMultiMap>("MyShmMultiMap2")
-               (boost::interprocess::make_move_iterator(&aux_vect3[0])
-               , boost::interprocess::make_move_iterator(aux_vect3 + 50)
+               ( ::boost::interprocess::make_move_iterator(&aux_vect3[0])
+               , ::boost::interprocess::make_move_iterator(aux_vect3 + 50)
                , std::less<IntType>(), segment.get_segment_manager());
 
          MyStdMultiMap *stdmultimap2 = new MyStdMultiMap(aux_vect2, aux_vect2 + 50);
          if(!CheckEqualContainers(shmmap2, stdmap2)) return 1;
          if(!CheckEqualContainers(shmmultimap2, stdmultimap2)) return 1;
 
+         //ordered range insertion
+         //This is really nasty, but we have no other simple choice
+         for(int i = 0; i < 50; ++i){
+            IntType i1(i);
+            IntType i2(i);
+            new(&aux_vect[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+         }
+
+         for(int i = 0; i < 50; ++i){
+            new(&aux_vect2[i])StdValueType(StdKeyType(i), StdMappedType(i));
+         }
+
+         for(int i = 0; i < 50; ++i){
+            IntType i1(i);
+            IntType i2(i);
+            new(&aux_vect3[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
+         }
+
+         MyShmMap *shmmap3 = 
+            segment.template construct<MyShmMap>("MyShmMap3")
+               ( ordered_unique_range
+               , ::boost::interprocess::make_move_iterator(&aux_vect[0])
+               , ::boost::interprocess::make_move_iterator(aux_vect + 50)
+               , std::less<IntType>(), segment.get_segment_manager());
+
+         MyStdMap *stdmap3 = new MyStdMap(aux_vect2, aux_vect2 + 50);
+
+         MyShmMultiMap *shmmultimap3 = 
+            segment.template construct<MyShmMultiMap>("MyShmMultiMap3")
+               ( ordered_range
+               , ::boost::interprocess::make_move_iterator(&aux_vect3[0])
+               , ::boost::interprocess::make_move_iterator(aux_vect3 + 50)
+               , std::less<IntType>(), segment.get_segment_manager());
+
+         MyStdMultiMap *stdmultimap3 = new MyStdMultiMap(aux_vect2, aux_vect2 + 50);
+
+         if(!CheckEqualContainers(shmmap3, stdmap3)){
+            std::cout << "Error in construct<MyShmMap>(MyShmMap3)" << std::endl;
+            return 1;
+         }
+         if(!CheckEqualContainers(shmmultimap3, stdmultimap3)){
+            std::cout << "Error in construct<MyShmMultiMap>(MyShmMultiMap3)" << std::endl;
+            return 1;
+         }
+
          segment.destroy_ptr(shmmap2);
          segment.destroy_ptr(shmmultimap2);
          delete stdmap2;
          delete stdmultimap2;
+         segment.destroy_ptr(shmmap3);
+         segment.destroy_ptr(shmmultimap3);
+         delete stdmap3;
+         delete stdmultimap3;
       }
       {
          //This is really nasty, but we have no other simple choice
@@ -191,8 +240,8 @@
             new(&aux_vect3[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
          }
 
-         shmmap->insert(boost::interprocess::make_move_iterator(&aux_vect[0]), boost::interprocess::make_move_iterator(aux_vect + 50));
-         shmmultimap->insert(boost::interprocess::make_move_iterator(&aux_vect3[0]), boost::interprocess::make_move_iterator(aux_vect3 + 50));
+         shmmap->insert(::boost::interprocess::make_move_iterator(&aux_vect[0]), ::boost::interprocess::make_move_iterator(aux_vect + 50));
+         shmmultimap->insert(::boost::interprocess::make_move_iterator(&aux_vect3[0]), ::boost::interprocess::make_move_iterator(aux_vect3 + 50));
          for(std::size_t i = 0; i != 50; ++i){
             StdPairType stdpairtype(-1, -1);
             stdmap->insert(stdpairtype);
@@ -239,10 +288,10 @@
             new(&aux_vect5[i])IntPairType(boost::interprocess::move(i1), boost::interprocess::move(i2));
          }
 
-         shmmap->insert(boost::interprocess::make_move_iterator(&aux_vect[0]), boost::interprocess::make_move_iterator(aux_vect + 50));
-         shmmap->insert(boost::interprocess::make_move_iterator(&aux_vect3[0]), boost::interprocess::make_move_iterator(aux_vect3 + 50));
-         shmmultimap->insert(boost::interprocess::make_move_iterator(&aux_vect4[0]), boost::interprocess::make_move_iterator(aux_vect4 + 50));
-         shmmultimap->insert(boost::interprocess::make_move_iterator(&aux_vect5[0]), boost::interprocess::make_move_iterator(aux_vect5 + 50));
+         shmmap->insert(::boost::interprocess::make_move_iterator(&aux_vect[0]), ::boost::interprocess::make_move_iterator(aux_vect + 50));
+         shmmap->insert(::boost::interprocess::make_move_iterator(&aux_vect3[0]), ::boost::interprocess::make_move_iterator(aux_vect3 + 50));
+         shmmultimap->insert(::boost::interprocess::make_move_iterator(&aux_vect4[0]), ::boost::interprocess::make_move_iterator(aux_vect4 + 50));
+         shmmultimap->insert(::boost::interprocess::make_move_iterator(&aux_vect5[0]), ::boost::interprocess::make_move_iterator(aux_vect5 + 50));
 
          for(std::size_t i = 0; i != 50; ++i){
             StdPairType stdpairtype(-1, -1);
Modified: branches/release/libs/interprocess/test/mapped_file_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/mapped_file_test.cpp	(original)
+++ branches/release/libs/interprocess/test/mapped_file_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/message_queue_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/message_queue_test.cpp	(original)
+++ branches/release/libs/interprocess/test/message_queue_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/movable_int.hpp
==============================================================================
--- branches/release/libs/interprocess/test/movable_int.hpp	(original)
+++ branches/release/libs/interprocess/test/movable_int.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -21,11 +21,9 @@
 
 class movable_int
 {
-   movable_int(movable_int&);
-   movable_int &operator= (movable_int&);
+   BOOST_INTERPROCESS_MOVABLE_BUT_NOT_COPYABLE(movable_int)
 
    public:
-   BOOST_INTERPROCESS_ENABLE_MOVE_EMULATION(movable_int)
 
    movable_int()
       :  m_int(0)
@@ -81,8 +79,8 @@
 
 class movable_and_copyable_int
 {
+   BOOST_COPYABLE_AND_MOVABLE(movable_and_copyable_int)
    public:
-   BOOST_INTERPROCESS_ENABLE_MOVE_EMULATION(movable_and_copyable_int)
 
    movable_and_copyable_int()
       :  m_int(0)
@@ -96,7 +94,7 @@
       :  m_int(mmi.m_int)
    {}
    
-   movable_and_copyable_int &operator= (const movable_and_copyable_int& mi)
+   movable_and_copyable_int &operator= (BOOST_INTERPROCESS_COPY_ASSIGN_REF(movable_and_copyable_int) mi)
    {  this->m_int = mi.m_int;    return *this;  }
 
    movable_and_copyable_int(BOOST_INTERPROCESS_RV_REF(movable_and_copyable_int) mmi)
@@ -143,6 +141,64 @@
     return os;
 }
 
+
+class copyable_int
+{
+   public:
+   copyable_int()
+      :  m_int(0)
+   {}
+
+   explicit copyable_int(int a)
+      :  m_int(a)
+   {}
+
+   copyable_int(const copyable_int& mmi)
+      :  m_int(mmi.m_int)
+   {}
+   
+   copyable_int & operator= (const copyable_int &mi)
+   {  this->m_int = mi.m_int; return *this;  }
+
+   copyable_int & operator= (int i)
+   {  this->m_int = i;  return *this;  }
+
+   bool operator ==(const copyable_int &mi) const
+   {  return this->m_int == mi.m_int;   }
+
+   bool operator !=(const copyable_int &mi) const
+   {  return this->m_int != mi.m_int;   }
+
+   bool operator <(const copyable_int &mi) const
+   {  return this->m_int < mi.m_int;   }
+
+   bool operator <=(const copyable_int &mi) const
+   {  return this->m_int <= mi.m_int;   }
+
+   bool operator >=(const copyable_int &mi) const
+   {  return this->m_int >= mi.m_int;   }
+
+   bool operator >(const copyable_int &mi) const
+   {  return this->m_int > mi.m_int;   }
+
+   int get_int() const
+   {  return m_int;  }
+
+   private:
+   int m_int;
+};
+
+template<class E, class T> 
+std::basic_ostream<E, T> & operator<< 
+   (std::basic_ostream<E, T> & os, copyable_int const & p)
+
+{
+    os << p.get_int();
+    return os;
+}
+
+
+
 }  //namespace test {
 }  //namespace interprocess {
 }  //namespace boost {
Modified: branches/release/libs/interprocess/test/multi_index_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/multi_index_test.cpp	(original)
+++ branches/release/libs/interprocess/test/multi_index_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2006-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2006-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)
 //
@@ -37,6 +37,17 @@
    int         id;
    int         age;
    shm_string  name;
+
+   employee(const employee &e)
+      : id(e.id), age(e.age), name(e.name)
+   {}
+
+   employee &operator=(const employee &e)
+   {
+      id = e.id; age = e.age; name = e.name;
+      return *this;
+   }
+
    employee( int id_
            , int age_
            , const char *name_
Modified: branches/release/libs/interprocess/test/mutex_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/mutex_test.cpp	(original)
+++ branches/release/libs/interprocess/test/mutex_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/mutex_test_template.hpp
==============================================================================
--- branches/release/libs/interprocess/test/mutex_test_template.hpp	(original)
+++ branches/release/libs/interprocess/test/mutex_test_template.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
@@ -234,6 +234,7 @@
 
    //Wait completion
    tm1.join();
+   boost::thread::sleep(xsecs(1*BaseSeconds));
    tm2.join();
 
    assert(d1.m_value == 1);
Modified: branches/release/libs/interprocess/test/named_condition_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/named_condition_test.cpp	(original)
+++ branches/release/libs/interprocess/test/named_condition_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/named_construct_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/named_construct_test.cpp	(original)
+++ branches/release/libs/interprocess/test/named_construct_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2008-2008. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2008-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)
 //
Modified: branches/release/libs/interprocess/test/named_creation_template.hpp
==============================================================================
--- branches/release/libs/interprocess/test/named_creation_template.hpp	(original)
+++ branches/release/libs/interprocess/test/named_creation_template.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/named_mutex_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/named_mutex_test.cpp	(original)
+++ branches/release/libs/interprocess/test/named_mutex_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/named_recursive_mutex_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/named_recursive_mutex_test.cpp	(original)
+++ branches/release/libs/interprocess/test/named_recursive_mutex_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/named_semaphore_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/named_semaphore_test.cpp	(original)
+++ branches/release/libs/interprocess/test/named_semaphore_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/named_upgradable_mutex_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/named_upgradable_mutex_test.cpp	(original)
+++ branches/release/libs/interprocess/test/named_upgradable_mutex_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/node_allocator_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/node_allocator_test.cpp	(original)
+++ branches/release/libs/interprocess/test/node_allocator_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/node_pool_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/node_pool_test.cpp	(original)
+++ branches/release/libs/interprocess/test/node_pool_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -12,9 +12,8 @@
 #include <boost/interprocess/allocators/detail/node_pool.hpp>
 
 using namespace boost::interprocess;
-typedef managed_shared_memory::segment_manager segment_manager_t;
-template class detail::private_node_pool_impl<segment_manager_t>;
 
+typedef managed_shared_memory::segment_manager segment_manager_t;
 
 int main ()
 {
Modified: branches/release/libs/interprocess/test/null_index_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/null_index_test.cpp	(original)
+++ branches/release/libs/interprocess/test/null_index_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-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)
 //
Modified: branches/release/libs/interprocess/test/print_container.hpp
==============================================================================
--- branches/release/libs/interprocess/test/print_container.hpp	(original)
+++ branches/release/libs/interprocess/test/print_container.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/private_adaptive_pool_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/private_adaptive_pool_test.cpp	(original)
+++ branches/release/libs/interprocess/test/private_adaptive_pool_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/private_node_allocator_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/private_node_allocator_test.cpp	(original)
+++ branches/release/libs/interprocess/test/private_node_allocator_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/recursive_mutex_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/recursive_mutex_test.cpp	(original)
+++ branches/release/libs/interprocess/test/recursive_mutex_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/semaphore_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/semaphore_test.cpp	(original)
+++ branches/release/libs/interprocess/test/semaphore_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/semaphore_test_template.hpp
==============================================================================
--- branches/release/libs/interprocess/test/semaphore_test_template.hpp	(original)
+++ branches/release/libs/interprocess/test/semaphore_test_template.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/set_test.hpp
==============================================================================
--- branches/release/libs/interprocess/test/set_test.hpp	(original)
+++ branches/release/libs/interprocess/test/set_test.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 ////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
@@ -77,16 +77,16 @@
 
          MyShmSet *shmset2 = 
             segment.template construct<MyShmSet>("MyShmSet2")
-               (boost::interprocess::make_move_iterator(&aux_vect[0])
-               , boost::interprocess::make_move_iterator(aux_vect + 50)
+               ( ::boost::interprocess::make_move_iterator(&aux_vect[0])
+               , ::boost::interprocess::make_move_iterator(aux_vect + 50)
                , std::less<IntType>(), segment.get_segment_manager());
 
          MyStdSet *stdset2 = new MyStdSet(aux_vect2, aux_vect2 + 50);
 
          MyShmMultiSet *shmmultiset2 = 
             segment.template construct<MyShmMultiSet>("MyShmMultiSet2")
-               (boost::interprocess::make_move_iterator(&aux_vect3[0])
-               , boost::interprocess::make_move_iterator(aux_vect3 + 50)
+               ( ::boost::interprocess::make_move_iterator(&aux_vect3[0])
+               , ::boost::interprocess::make_move_iterator(aux_vect3 + 50)
                , std::less<IntType>(), segment.get_segment_manager());
 
          MyStdMultiSet *stdmultiset2 = new MyStdMultiSet(aux_vect2, aux_vect2 + 50);
@@ -99,20 +99,88 @@
             return 1;
          }
 
+         //ordered range insertion
+         for(int i = 0; i < 50; ++i){
+            IntType move_me(i);
+            aux_vect[i] = boost::interprocess::move(move_me);
+         }
+
+         for(int i = 0; i < 50; ++i){
+            aux_vect2[i] = i;
+         }
+
+         for(int i = 0; i < 50; ++i){
+            IntType move_me(i);
+            aux_vect3[i] = boost::interprocess::move(move_me);
+         }
+
+         MyShmSet *shmset3 = 
+            segment.template construct<MyShmSet>("MyShmSet3")
+               ( ordered_unique_range
+               , ::boost::interprocess::make_move_iterator(&aux_vect[0])
+               , ::boost::interprocess::make_move_iterator(aux_vect + 50)
+               , std::less<IntType>(), segment.get_segment_manager());
+
+         MyStdSet *stdset3 = new MyStdSet(aux_vect2, aux_vect2 + 50);
+
+         MyShmMultiSet *shmmultiset3 = 
+            segment.template construct<MyShmMultiSet>("MyShmMultiSet3")
+               ( ordered_range
+               , ::boost::interprocess::make_move_iterator(&aux_vect3[0])
+               , ::boost::interprocess::make_move_iterator(aux_vect3 + 50)
+               , std::less<IntType>(), segment.get_segment_manager());
+
+         MyStdMultiSet *stdmultiset3 = new MyStdMultiSet(aux_vect2, aux_vect2 + 50);
+
+         if(!CheckEqualContainers(shmset3, stdset3)){
+            std::cout << "Error in construct<MyShmSet>(MyShmSet3)" << std::endl;
+            return 1;
+         }
+         if(!CheckEqualContainers(shmmultiset3, stdmultiset3)){
+            std::cout << "Error in construct<MyShmMultiSet>(MyShmMultiSet3)" << std::endl;
+            return 1;
+         }
+
          segment.destroy_ptr(shmset2);
          segment.destroy_ptr(shmmultiset2);
          delete stdset2;
          delete stdmultiset2;
+
+         segment.destroy_ptr(shmset3);
+         segment.destroy_ptr(shmmultiset3);
+         delete stdset3;
+         delete stdmultiset3;
+      }
+
+      if(!CheckEqualContainers(shmset, stdset)){
+         std::cout << "Error in shmset->insert(boost::interprocess::move(move_me)" << std::endl;
+         return 1;
       }
 
       int i, j;
-      for(i = 0; i < max; ++i){
+      for(i = 0; i < max/2; ++i){
          IntType move_me(i);
          shmset->insert(boost::interprocess::move(move_me));
          stdset->insert(i);
          IntType move_me2(i);
          shmmultiset->insert(boost::interprocess::move(move_me2));
          stdmultiset->insert(i);
+
+      if(!CheckEqualContainers(shmset, stdset)){
+         std::cout << "Error in shmset->insert(boost::interprocess::move(move_me)" << std::endl;
+         return 1;
+      }
+         //
+         shmset->insert(IntType(i));
+         stdset->insert(i);
+         shmmultiset->insert(IntType(i));
+         stdmultiset->insert(i);
+
+      if(!CheckEqualContainers(shmset, stdset)){
+         std::cout << "Error in shmset->insert(boost::interprocess::move(move_me)" << std::endl;
+         return 1;
+      }
+
       }
 
       if(!CheckEqualContainers(shmset, stdset)){
@@ -195,16 +263,16 @@
             aux_vect3[i] = boost::interprocess::move(move_me);
          }
 
-         shmset->insert(boost::interprocess::make_move_iterator(&aux_vect[0]), boost::interprocess::make_move_iterator(aux_vect + 50));
+         shmset->insert(::boost::interprocess::make_move_iterator(&aux_vect[0]), ::boost::interprocess::make_move_iterator(aux_vect + 50));
          stdset->insert(aux_vect2, aux_vect2 + 50);
-         shmmultiset->insert(boost::interprocess::make_move_iterator(&aux_vect3[0]), boost::interprocess::make_move_iterator(aux_vect3 + 50));
+         shmmultiset->insert(::boost::interprocess::make_move_iterator(&aux_vect3[0]), ::boost::interprocess::make_move_iterator(aux_vect3 + 50));
          stdmultiset->insert(aux_vect2, aux_vect2 + 50);
          if(!CheckEqualContainers(shmset, stdset)){
-            std::cout << "Error in shmset->insert(boost::interprocess::make_move_iterator(&aux_vect[0])..." << std::endl;
+            std::cout << "Error in shmset->insert(::boost::interprocess::make_move_iterator(&aux_vect[0])..." << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
-            std::cout << "Error in shmmultiset->insert(boost::interprocess::make_move_iterator(&aux_vect3[0]), ..." << std::endl;
+            std::cout << "Error in shmmultiset->insert(::boost::interprocess::make_move_iterator(&aux_vect3[0]), ..." << std::endl;
             return 1;
          }
 
@@ -252,20 +320,20 @@
             aux_vect5[i] = boost::interprocess::move(move_me);
          }
 
-         shmset->insert(boost::interprocess::make_move_iterator(&aux_vect[0]), boost::interprocess::make_move_iterator(aux_vect + 50));
-         shmset->insert(boost::interprocess::make_move_iterator(&aux_vect3[0]), boost::interprocess::make_move_iterator(aux_vect3 + 50));
+         shmset->insert(::boost::interprocess::make_move_iterator(&aux_vect[0]), ::boost::interprocess::make_move_iterator(aux_vect + 50));
+         shmset->insert(::boost::interprocess::make_move_iterator(&aux_vect3[0]), ::boost::interprocess::make_move_iterator(aux_vect3 + 50));
          stdset->insert(aux_vect2, aux_vect2 + 50);
          stdset->insert(aux_vect2, aux_vect2 + 50);
-         shmmultiset->insert(boost::interprocess::make_move_iterator(&aux_vect4[0]), boost::interprocess::make_move_iterator(aux_vect4 + 50));
-         shmmultiset->insert(boost::interprocess::make_move_iterator(&aux_vect5[0]), boost::interprocess::make_move_iterator(aux_vect5 + 50));
+         shmmultiset->insert(::boost::interprocess::make_move_iterator(&aux_vect4[0]), ::boost::interprocess::make_move_iterator(aux_vect4 + 50));
+         shmmultiset->insert(::boost::interprocess::make_move_iterator(&aux_vect5[0]), ::boost::interprocess::make_move_iterator(aux_vect5 + 50));
          stdmultiset->insert(aux_vect2, aux_vect2 + 50);
          stdmultiset->insert(aux_vect2, aux_vect2 + 50);
          if(!CheckEqualContainers(shmset, stdset)){
-            std::cout << "Error in shmset->insert(boost::interprocess::make_move_iterator(&aux_vect3[0])..." << std::endl;
+            std::cout << "Error in shmset->insert(::boost::interprocess::make_move_iterator(&aux_vect3[0])..." << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
-            std::cout << "Error in shmmultiset->insert(boost::interprocess::make_move_iterator(&aux_vect5[0])..." << std::endl;
+            std::cout << "Error in shmmultiset->insert(::boost::interprocess::make_move_iterator(&aux_vect5[0])..." << std::endl;
             return 1;
          }
 
@@ -283,13 +351,18 @@
          }
       }
 
-      for(i = 0; i < max; ++i){
+      for(i = 0; i < max/2; ++i){
          IntType move_me(i);
-         shmset->insert(boost::interprocess::move(move_me));
-         stdset->insert(i);
+         shmset->insert(shmset->begin(), boost::interprocess::move(move_me));
+         stdset->insert(stdset->begin(), i);
          IntType move_me2(i);
-         shmmultiset->insert(boost::interprocess::move(move_me2));
-         stdmultiset->insert(i);
+         shmmultiset->insert(shmmultiset->begin(), boost::interprocess::move(move_me2));
+         stdmultiset->insert(stdmultiset->begin(), i);
+         //
+         shmset->insert(shmset->begin(), IntType(i));
+         stdset->insert(stdset->begin(), i);
+         shmmultiset->insert(shmmultiset->begin(), IntType(i));
+         stdmultiset->insert(stdmultiset->begin(), i);
       }
 
       if(!CheckEqualContainers(shmset, stdset)){
Modified: branches/release/libs/interprocess/test/sharable_mutex_test_template.hpp
==============================================================================
--- branches/release/libs/interprocess/test/sharable_mutex_test_template.hpp	(original)
+++ branches/release/libs/interprocess/test/sharable_mutex_test_template.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -10,7 +10,7 @@
 // It is provided "as is" without express or implied warranty.
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-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)
 //
Modified: branches/release/libs/interprocess/test/shared_memory_mapping_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/shared_memory_mapping_test.cpp	(original)
+++ branches/release/libs/interprocess/test/shared_memory_mapping_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/shared_memory_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/shared_memory_test.cpp	(original)
+++ branches/release/libs/interprocess/test/shared_memory_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/shared_ptr_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/shared_ptr_test.cpp	(original)
+++ branches/release/libs/interprocess/test/shared_ptr_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 //////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Peter Dimov 2002-2005, 2007.
-// (C) Copyright Ion Gaztanaga 2006-2008.
+// (C) Copyright Ion Gaztanaga 2006-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)
Modified: branches/release/libs/interprocess/test/slist_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/slist_test.cpp	(original)
+++ branches/release/libs/interprocess/test/slist_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
@@ -26,8 +26,8 @@
 typedef allocator<int, managed_shared_memory::segment_manager> ShmemAllocator;
 typedef slist<int, ShmemAllocator> MyList;
 
-typedef allocator<volatile int, managed_shared_memory::segment_manager> ShmemVolatileAllocator;
-typedef slist<volatile int, ShmemVolatileAllocator> MyVolatileList;
+//typedef allocator<volatile int, managed_shared_memory::segment_manager> ShmemVolatileAllocator;
+//typedef slist<volatile int, ShmemVolatileAllocator> MyVolatileList;
 
 typedef allocator<test::movable_int, managed_shared_memory::segment_manager> ShmemMoveAllocator;
 typedef slist<test::movable_int, ShmemMoveAllocator> MyMoveList;
@@ -35,6 +35,9 @@
 typedef allocator<test::movable_and_copyable_int, managed_shared_memory::segment_manager> ShmemCopyMoveAllocator;
 typedef slist<test::movable_and_copyable_int, ShmemCopyMoveAllocator> MyCopyMoveList;
 
+typedef allocator<test::copyable_int, managed_shared_memory::segment_manager> ShmemCopyAllocator;
+typedef slist<test::copyable_int, ShmemCopyAllocator> MyCopyList;
+
 class recursive_slist
 {
 public:
@@ -68,7 +71,10 @@
    if(test::list_test<managed_shared_memory, MyCopyMoveList, false>())
       return 1;
 
-   if(test::list_test<managed_shared_memory, MyVolatileList, false>())
+//   if(test::list_test<managed_shared_memory, MyVolatileList, false>())
+//      return 1;
+
+   if(test::list_test<managed_shared_memory, MyCopyList, false>())
       return 1;
 
    const test::EmplaceOptions Options = (test::EmplaceOptions)
Modified: branches/release/libs/interprocess/test/stable_vector_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/stable_vector_test.cpp	(original)
+++ branches/release/libs/interprocess/test/stable_vector_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
@@ -71,6 +71,9 @@
    typedef allocator<test::movable_and_copyable_int, managed_shared_memory::segment_manager> ShmemCopyMoveAllocator;
    typedef stable_vector<test::movable_and_copyable_int, ShmemCopyMoveAllocator> MyCopyMoveVector;
 
+   typedef allocator<test::copyable_int, managed_shared_memory::segment_manager> ShmemCopyAllocator;
+   typedef stable_vector<test::copyable_int, ShmemCopyAllocator> MyCopyVector;
+
    if(test::vector_test<managed_shared_memory, MyVector>())
       return 1;
 
@@ -86,6 +89,9 @@
    if(test::vector_test<managed_shared_memory, MyCopyMoveVector>())
       return 1;
 
+   if(test::vector_test<managed_shared_memory, MyCopyVector>())
+      return 1;
+
    const test::EmplaceOptions Options = (test::EmplaceOptions)(test::EMPLACE_BACK | test::EMPLACE_BEFORE);
    if(!boost::interprocess::test::test_emplace
       < stable_vector<test::EmplaceInt>, Options>())
Modified: branches/release/libs/interprocess/test/string_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/string_test.cpp	(original)
+++ branches/release/libs/interprocess/test/string_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/tree_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/tree_test.cpp	(original)
+++ branches/release/libs/interprocess/test/tree_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
@@ -52,6 +52,8 @@
    shmem_movable_node_pair_allocator_t;
 typedef allocator<test::movable_and_copyable_int, my_managed_shared_memory::segment_manager>   
    shmem_move_copy_allocator_t;
+typedef allocator<test::copyable_int, my_managed_shared_memory::segment_manager>   
+   shmem_copy_allocator_t;
 typedef allocator<std::pair<const test::movable_and_copyable_int, test::movable_and_copyable_int>, my_managed_shared_memory::segment_manager>   
    shmem_move_copy_node_pair_allocator_t;
 
@@ -86,6 +88,15 @@
 typedef multiset<test::movable_and_copyable_int, 
       std::less<test::movable_and_copyable_int>, 
       shmem_move_copy_allocator_t>                        MyMoveCopyShmMultiSet;
+
+typedef set<test::copyable_int
+           ,std::less<test::copyable_int>
+           ,shmem_copy_allocator_t>                  MyCopyShmSet;
+typedef multiset<test::copyable_int, 
+      std::less<test::copyable_int>, 
+      shmem_copy_allocator_t>                        MyCopyShmMultiSet;
+
+
 typedef map<test::movable_and_copyable_int
            ,test::movable_and_copyable_int
            ,std::less<test::movable_and_copyable_int>
@@ -194,6 +205,13 @@
       return 1;
    }
 
+   if(0 != test::set_test<my_managed_shared_memory
+                        ,MyCopyShmSet
+                        ,MyStdSet
+                        ,MyCopyShmMultiSet
+                        ,MyStdMultiSet>()){
+      return 1;
+   }
 
    if (0 != test::map_test<my_managed_shared_memory
                   ,MyShmMap
Modified: branches/release/libs/interprocess/test/unordered_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/unordered_test.cpp	(original)
+++ branches/release/libs/interprocess/test/unordered_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2007-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)
 //
Modified: branches/release/libs/interprocess/test/upgradable_mutex_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/upgradable_mutex_test.cpp	(original)
+++ branches/release/libs/interprocess/test/upgradable_mutex_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/user_buffer_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/user_buffer_test.cpp	(original)
+++ branches/release/libs/interprocess/test/user_buffer_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/util.hpp
==============================================================================
--- branches/release/libs/interprocess/test/util.hpp	(original)
+++ branches/release/libs/interprocess/test/util.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/vector_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/vector_test.cpp	(original)
+++ branches/release/libs/interprocess/test/vector_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
@@ -102,6 +102,9 @@
    typedef allocator<test::movable_and_copyable_int, managed_shared_memory::segment_manager> ShmemCopyMoveAllocator;
    typedef vector<test::movable_and_copyable_int, ShmemCopyMoveAllocator> MyCopyMoveVector;
 
+   typedef allocator<test::copyable_int, managed_shared_memory::segment_manager> ShmemCopyAllocator;
+   typedef vector<test::copyable_int, ShmemCopyAllocator> MyCopyVector;
+
    if(test::vector_test<managed_shared_memory, MyVector>())
       return 1;
 
@@ -114,6 +117,9 @@
    if(test::vector_test<managed_shared_memory, MyCopyMoveVector>())
       return 1;
 
+   if(test::vector_test<managed_shared_memory, MyCopyVector>())
+      return 1;
+
    if(test_expand_bwd())
       return 1;
 
Modified: branches/release/libs/interprocess/test/vector_test.hpp
==============================================================================
--- branches/release/libs/interprocess/test/vector_test.hpp	(original)
+++ branches/release/libs/interprocess/test/vector_test.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
@@ -44,7 +44,7 @@
    typedef typename V1::value_type IntType;
    std::size_t size = shmvector->size();
    stdvector->insert(stdvector->end(), 50, 1);
-   shmvector->insert(shmvector->end(), 50, 1);
+   shmvector->insert(shmvector->end(), 50, IntType(1));
    if(!test::CheckEqualContainers(shmvector, stdvector)) return false;
 
    {
@@ -134,7 +134,7 @@
             IntType aux_vect[50];
             for(int i = 0; i < 50; ++i){
                IntType new_int(-1);
-               BOOST_STATIC_ASSERT((boost::interprocess::is_movable<boost::interprocess::test::movable_int>::value == true));
+               BOOST_STATIC_ASSERT((::boost::interprocess::is_movable<boost::interprocess::test::movable_int>::value == true));
                aux_vect[i] = boost::interprocess::move(new_int);
             }
             int aux_vect2[50];
@@ -143,8 +143,8 @@
             }
 
             shmvector->insert(shmvector->end()
-                              ,boost::interprocess::make_move_iterator(&aux_vect[0])
-                              ,boost::interprocess::make_move_iterator(aux_vect + 50));
+                              ,::boost::interprocess::make_move_iterator(&aux_vect[0])
+                              ,::boost::interprocess::make_move_iterator(aux_vect + 50));
             stdvector->insert(stdvector->end(), aux_vect2, aux_vect2 + 50);
             if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
 
@@ -165,8 +165,8 @@
                aux_vect2[i] = -1;
             }
             shmvector->insert(shmvector->begin()
-                              ,boost::interprocess::make_move_iterator(&aux_vect[0])
-                              ,boost::interprocess::make_move_iterator(aux_vect + 50));
+                              ,::boost::interprocess::make_move_iterator(&aux_vect[0])
+                              ,::boost::interprocess::make_move_iterator(aux_vect + 50));
             stdvector->insert(stdvector->begin(), aux_vect2, aux_vect2 + 50);
             if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
          }
@@ -178,6 +178,8 @@
          IntType push_back_this(1);
          shmvector->push_back(boost::interprocess::move(push_back_this));
          stdvector->push_back(int(1));
+         shmvector->push_back(IntType(1));
+         stdvector->push_back(int(1));
          if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
 
          if(!copyable_only(shmvector, stdvector
@@ -193,6 +195,8 @@
             IntType insert_this(i);
             shmvector->insert(shmvector->begin(), boost::interprocess::move(insert_this));
             stdvector->insert(stdvector->begin(), i);
+            shmvector->insert(shmvector->begin(), IntType(i));
+            stdvector->insert(stdvector->begin(), int(i));
          }
          if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
 
Modified: branches/release/libs/interprocess/test/windows_shared_memory_mapping_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/windows_shared_memory_mapping_test.cpp	(original)
+++ branches/release/libs/interprocess/test/windows_shared_memory_mapping_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/interprocess/test/windows_shared_memory_test.cpp
==============================================================================
--- branches/release/libs/interprocess/test/windows_shared_memory_test.cpp	(original)
+++ branches/release/libs/interprocess/test/windows_shared_memory_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2004-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)
 //
Modified: branches/release/libs/intrusive/CMakeLists.txt
==============================================================================
--- branches/release/libs/intrusive/CMakeLists.txt	(original)
+++ branches/release/libs/intrusive/CMakeLists.txt	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,9 +1,3 @@
-#
-# Copyright Troy D. Straszheim
-#
-# Distributed under the Boost Software License, Version 1.0.
-# See http://www.boost.org/LICENSE_1_0.txt
-#
 #----------------------------------------------------------------------------
 # This file was automatically generated from the original CMakeLists.txt file
 # Add a variable to hold the headers for the library
Modified: branches/release/libs/intrusive/doc/intrusive.qbk
==============================================================================
--- branches/release/libs/intrusive/doc/intrusive.qbk	(original)
+++ branches/release/libs/intrusive/doc/intrusive.qbk	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,14 +1,14 @@
 [/
- / Copyright (c) 2007 Ion Gaztanaga
+ / Copyright (c) 2007-2009 Ion Gaztanaga
  /
  / 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)
  /]
 
 [library Boost.Intrusive
-    [quickbook 1.3]
+    [quickbook 1.4]
     [authors [Krzikalla, Olaf], [Gaztanaga, Ion]]
-    [copyright 2005 Olaf Krzikalla, 2006-2008 Ion Gaztanaga]
+    [copyright 2005 Olaf Krzikalla, 2006-2009 Ion Gaztanaga]
     [id intrusive]
     [dirname intrusive]
     [purpose Intrusive containers]
@@ -2071,11 +2071,36 @@
 
 [endsect]
 
+[section:positional_insertions Positional insertions]
+
+Some ordered associative containers offer low-level functions to bypass ordering
+checks and insert nodes directly in desired tree positions. These functions are
+provided for performance reasons when values to be inserted in the container are
+known to fulfill order (sets and multisets) and uniqueness (sets) invariants. A
+typical usage of these functions is when intrusive associative containers are used
+to build non-intrusive containers and the programmer wants to speed up assignments
+from other associative containers: if the ordering and uniqueness properties are the same,
+there is no need to waste time checking the position of each source value, because values
+are already ordered: back insertions will be much more efficient.
+
+[*Note:] These functions [*don't check preconditions] so they must used with care. These
+are functions are low-level operations [*will break container invariants if
+ordering and uniqueness preconditions are not assured by the caller.]
+
+Let's see an example:
+
+[import ../example/doc_positional_insertion.cpp]
+[doc_positional_insertion]
+
+
+[endsect]
+
 For more information about advanced lookup and insertion functions see
+associative containers' documentation (e.g. 
 [classref boost::intrusive::set set],
 [classref boost::intrusive::multiset multiset],
 [classref boost::intrusive::unordered_set unordered_set] and
-[classref boost::intrusive::unordered_multiset unordered_multiset] references.
+[classref boost::intrusive::unordered_multiset unordered_multiset] references).
 
 [endsect]
 
@@ -2269,7 +2294,7 @@
 
 However, there is a more size-efficient alternative in [*Boost.Intrusive]: "any" hooks
 ([classref boost::intrusive::any_base_hook any_base_hook] and
-[classref boost::intrusive::any_member_hook any_member_hook].
+[classref boost::intrusive::any_member_hook any_member_hook]).
 These hooks can be used to store a type in several containers
 offered by [*Boost.Intrusive] minimizing the size of the class.
 
@@ -2288,8 +2313,8 @@
    internally in the hook and propagated to the container.
    Default: `void_pointer<void*>`.
 
-`auto_unlink` can't be supported because the hook does not know in which type of might
-be inserted container. Additionally, these hooks don't support `unlink()` and
+`auto_unlink` can't be supported because the hook does not know in which type of
+container might be currently inserted. Additionally, these hooks don't support `unlink()` and
 `swap_nodes()` operations for the same reason.
 
 Here is an example that creates a class with two any hooks, and uses one to insert the
@@ -3157,13 +3182,12 @@
 Until now all shown custom value traits are stateless, that is, [*the transformation between nodes
 and values is implemented in terms of static functions]. It's possible to use [*stateful] value traits
 so that we can separate nodes and values and [*avoid modifying types to insert nodes].
-[*Boost.Intrusive] differentiates between stateful and stateless value traits by checking if the ValueTraits
-class is empty:
+[*Boost.Intrusive] differentiates between stateful and stateless value traits by checking if all
+Node <-> Value transformation functions are static or not:
 
-*  If the class is empty, a [*stateless] value traits is assumed.
-   Node <-> Value transformations must be static functions.
-*  If the class is not empty, a [*stateful] value traits is assumed.
-   Node <-> Value transformations must be non-static functions.
+*  If all Node <-> Value transformation functions are static , a [*stateless]
+   value traits is assumed.  transformations must be static functions.
+*  Otherwise a [*stateful] value traits is assumed.
 
 Using stateful value traits it's possible to create containers of non-copyable/movable objects [*without modifying]
 the definition of the class to be inserted. This interesting property is achieved without using global variables
Modified: branches/release/libs/intrusive/example/doc_advanced_value_traits.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_advanced_value_traits.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_advanced_value_traits.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_advanced_value_traits2.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_advanced_value_traits2.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_advanced_value_traits2.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_assoc_optimized_code.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_assoc_optimized_code.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_assoc_optimized_code.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_auto_unlink.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_auto_unlink.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_auto_unlink.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_avl_set.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_avl_set.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_avl_set.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_avltree_algorithms.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_avltree_algorithms.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_avltree_algorithms.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_bucket_traits.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_bucket_traits.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_bucket_traits.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2007-2008
+// (C) Copyright Ion Gaztanaga  2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_clone_from.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_clone_from.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_clone_from.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_entity.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_entity.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_entity.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_erasing_and_disposing.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_erasing_and_disposing.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_erasing_and_disposing.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_external_value_traits.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_external_value_traits.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_external_value_traits.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2007-2008
+// (C) Copyright Ion Gaztanaga  2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_how_to_use.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_how_to_use.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_how_to_use.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_iterator_from_value.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_iterator_from_value.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_iterator_from_value.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_list.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_list.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_list.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_list_algorithms.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_list_algorithms.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_list_algorithms.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_offset_ptr.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_offset_ptr.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_offset_ptr.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_rbtree_algorithms.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_rbtree_algorithms.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_rbtree_algorithms.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_set.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_set.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_set.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_sg_set.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_sg_set.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_sg_set.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2007-2008
+// (C) Copyright Ion Gaztanaga  2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_slist.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_slist.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_slist.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_slist_algorithms.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_slist_algorithms.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_slist_algorithms.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_splay_algorithms.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_splay_algorithms.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_splay_algorithms.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_splay_set.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_splay_set.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_splay_set.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_splaytree_algorithms.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_splaytree_algorithms.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_splaytree_algorithms.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_stateful_value_traits.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_stateful_value_traits.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_stateful_value_traits.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2007-2008
+// (C) Copyright Ion Gaztanaga  2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_treap_algorithms.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_treap_algorithms.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_treap_algorithms.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2007-2008
+// (C) Copyright Ion Gaztanaga 2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_treap_set.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_treap_set.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_treap_set.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_unordered_set.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_unordered_set.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_unordered_set.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_value_traits.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_value_traits.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_value_traits.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/example/doc_window.cpp
==============================================================================
--- branches/release/libs/intrusive/example/doc_window.cpp	(original)
+++ branches/release/libs/intrusive/example/doc_window.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/index.html
==============================================================================
--- branches/release/libs/intrusive/index.html	(original)
+++ branches/release/libs/intrusive/index.html	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,5 +1,5 @@
 <!--
-Copyright 2005-2008 Ion Gaztanaga
+Copyright 2005-2009 Ion Gaztanaga
 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)
 -->
Modified: branches/release/libs/intrusive/perf/perf_list.cpp
==============================================================================
--- branches/release/libs/intrusive/perf/perf_list.cpp	(original)
+++ branches/release/libs/intrusive/perf/perf_list.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2007-2008
+// (C) Copyright Ion Gaztanaga  2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj
==============================================================================
--- branches/release/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj	(original)
+++ branches/release/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -244,12 +244,18 @@
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\ebo_functor_holder.hpp">
                                 </File>
                                 <File
+					RelativePath="..\..\..\..\..\boost\intrusive\detail\function_detector.hpp">
+				</File>
+				<File
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\generic_hook.hpp">
                                 </File>
                                 <File
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\hashtable_node.hpp">
                                 </File>
                                 <File
+					RelativePath="..\..\..\..\..\boost\intrusive\detail\is_stateful_value_traits.hpp">
+				</File>
+				<File
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\list_node.hpp">
                                 </File>
                                 <File
@@ -383,6 +389,9 @@
                                 RelativePath="..\..\..\example\doc_offset_ptr.cpp">
                         </File>
                         <File
+				RelativePath="..\..\..\example\doc_positional_insertion.cpp">
+			</File>
+			<File
                                 RelativePath="..\..\..\example\doc_rbtree_algorithms.cpp">
                         </File>
                         <File
Modified: branches/release/libs/intrusive/proj/vc7ide/to-do.txt
==============================================================================
--- branches/release/libs/intrusive/proj/vc7ide/to-do.txt	(original)
+++ branches/release/libs/intrusive/proj/vc7ide/to-do.txt	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
@@ -9,20 +9,8 @@
 // See http://www.boost.org/libs/intrusive for documentation.
 //
 /////////////////////////////////////////////////////////////////////////////
--> Implement C++0x features (variadic templates & rvalue references)
+-> Implement C++0x features (rvalue references)
 -> Offer bidirectional iterator for hashtables
 -> Non-array buckets
 -> Document incremental<> option better
-
--> Revise treap's hooks should be restored if the operation throws
--> Revise treap help to add priority changes (throw, new functions, etc.)
--> Revise make_functions, and any hook tests to add missing containers
--> On exceptions, auto_unlink/safe_link hooks default state should be recovered
-   (insert_equal, insert_lower_bound, insert_equal_upper_bound) 
--> insert_unique_check should also compare priorities.
--> test insert_unique_check with hint in tests
--> revise strong exception safety concepts for treap::erase functions.
-   What happens with range deletions?
 -> Assure stable order for optimize_multikey and inverse order otherwise
--> linear slist's splice_after(..., slist &x) can be optimized if *this is empty
--> optimize slist::merge like list::merge
Modified: branches/release/libs/intrusive/test/any_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/any_test.cpp	(original)
+++ branches/release/libs/intrusive/test/any_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/test/avl_multiset_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/avl_multiset_test.cpp	(original)
+++ branches/release/libs/intrusive/test/avl_multiset_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
@@ -17,6 +17,26 @@
 #include "smart_ptr.hpp"
 #include "generic_multiset_test.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::avl_multiset<T, 
+   #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+   O1, O2, O3, O4
+   #else
+   Options...
+   #endif
+> >
+{
+   static const bool value = true;
+};
+
+}}}
+
 using namespace boost::intrusive;
 
 struct my_tag;
Modified: branches/release/libs/intrusive/test/avl_set_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/avl_set_test.cpp	(original)
+++ branches/release/libs/intrusive/test/avl_set_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
@@ -16,6 +16,27 @@
 #include "smart_ptr.hpp"
 #include "generic_set_test.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::avl_set<T, 
+   #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+   O1, O2, O3, O4
+   #else
+   Options...
+   #endif
+> >
+{
+   static const bool value = true;
+};
+
+}}}
+
+
 using namespace boost::intrusive;
 
 struct my_tag;
Modified: branches/release/libs/intrusive/test/common_functors.hpp
==============================================================================
--- branches/release/libs/intrusive/test/common_functors.hpp	(original)
+++ branches/release/libs/intrusive/test/common_functors.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/test/custom_bucket_traits_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/custom_bucket_traits_test.cpp	(original)
+++ branches/release/libs/intrusive/test/custom_bucket_traits_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2007-2008
+// (C) Copyright Ion Gaztanaga  2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/test/default_hook_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/default_hook_test.cpp	(original)
+++ branches/release/libs/intrusive/test/default_hook_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2007-2008
+// (C) Copyright Ion Gaztanaga  2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/test/external_value_traits_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/external_value_traits_test.cpp	(original)
+++ branches/release/libs/intrusive/test/external_value_traits_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2007-2008
+// (C) Copyright Ion Gaztanaga  2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/test/generic_assoc_test.hpp
==============================================================================
--- branches/release/libs/intrusive/test/generic_assoc_test.hpp	(original)
+++ branches/release/libs/intrusive/test/generic_assoc_test.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
@@ -35,6 +35,12 @@
    static const bool value = false;
 };
 
+template<class T>
+struct has_insert_before
+{
+   static const bool value = false;
+};
+
 template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
 struct test_generic_assoc 
 {
@@ -52,6 +58,9 @@
    static void test_rebalance(std::vector<value_type>& values);
    static void test_rebalance(std::vector<value_type>& values, boost::intrusive::detail::true_type);
    static void test_rebalance(std::vector<value_type>& values, boost::intrusive::detail::false_type);
+   static void test_insert_before(std::vector<value_type>& values);
+   static void test_insert_before(std::vector<value_type>& values, boost::intrusive::detail::true_type);
+   static void test_insert_before(std::vector<value_type>& values, boost::intrusive::detail::false_type);
    static void test_container_from_iterator(std::vector<value_type>& values);
 };
 
@@ -149,6 +158,7 @@
    test_splay_up(values);
    test_splay_down(values);
    test_rebalance(values);
+   test_insert_before(values);
    test_insert_erase_burst();
    test_container_from_iterator(values);
 }
@@ -365,6 +375,73 @@
    test_rebalance(values, enabler());
 }
 
+template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
+void test_generic_assoc<ValueTraits, ContainerDefiner>::test_insert_before
+(std::vector<typename ValueTraits::value_type>& values, boost::intrusive::detail::true_type)
+{
+   typedef typename ValueTraits::value_type value_type;
+   typedef typename ContainerDefiner
+      < value_type
+      , value_traits<ValueTraits>
+      , constant_time_size<value_type::constant_time_size>
+      >::type assoc_type;
+   {
+      assoc_type testset;
+      typedef typename std::vector<value_type>::iterator vec_iterator;
+      for(vec_iterator it(values.begin()), itend(values.end())
+         ; it != itend
+         ; ++it){
+         testset.push_back(*it);
+      }
+      BOOST_TEST(testset.size() == values.size());
+      TEST_INTRUSIVE_SEQUENCE_EXPECTED(values, testset.begin());
+   }
+   {
+      assoc_type testset;
+      typedef typename std::vector<value_type>::iterator vec_iterator;
+      for(vec_iterator it(--values.end()), itend(--values.begin())
+         ; it != itend
+         ; --it){
+         testset.push_front(*it);
+      }
+      BOOST_TEST(testset.size() == values.size());
+      TEST_INTRUSIVE_SEQUENCE_EXPECTED(values, testset.begin());
+   }
+   {
+      assoc_type testset;
+      typedef typename std::vector<value_type>::iterator vec_iterator;
+      typename assoc_type::iterator it_pos =
+         testset.insert_before(testset.end(), *values.rbegin());
+      testset.insert_before(testset.begin(), *values.begin());
+      for(vec_iterator it(++values.begin()), itend(--values.end())
+         ; it != itend
+         ; ++it){
+         testset.insert_before(it_pos, *it);
+      }
+      BOOST_TEST(testset.size() == values.size());
+      TEST_INTRUSIVE_SEQUENCE_EXPECTED(values, testset.begin());
+   }
+}
+
+template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
+void test_generic_assoc<ValueTraits, ContainerDefiner>::test_insert_before
+(std::vector<typename ValueTraits::value_type>&, boost::intrusive::detail::false_type)
+{}
+
+template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
+void test_generic_assoc<ValueTraits, ContainerDefiner>::test_insert_before
+(std::vector<typename ValueTraits::value_type>& values)
+{
+   typedef typename ContainerDefiner
+      < value_type
+      , value_traits<ValueTraits>
+      , constant_time_size<value_type::constant_time_size>
+      >::type assoc_type;
+   typedef typename detail::remove_const<assoc_type>::type Type;
+   typedef detail::bool_<has_insert_before<Type>::value> enabler;
+   test_insert_before(values, enabler());
+}
+
 }}}   //namespace boost::intrusive::test
 
 #include <boost/intrusive/detail/config_end.hpp>
Modified: branches/release/libs/intrusive/test/generic_multiset_test.hpp
==============================================================================
--- branches/release/libs/intrusive/test/generic_multiset_test.hpp	(original)
+++ branches/release/libs/intrusive/test/generic_multiset_test.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/test/generic_set_test.hpp
==============================================================================
--- branches/release/libs/intrusive/test/generic_set_test.hpp	(original)
+++ branches/release/libs/intrusive/test/generic_set_test.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
@@ -23,6 +23,12 @@
 namespace intrusive{
 namespace test{
 
+template<class T>
+struct is_treap
+{
+   static const bool value = false;
+};
+
 template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
 struct test_generic_set 
 {
@@ -30,6 +36,9 @@
    static void test_all();
    static void test_sort(std::vector<value_type>& values);
    static void test_insert(std::vector<value_type>& values);
+   static void test_insert_advanced(std::vector<value_type>& values, boost::intrusive::detail::true_type);
+   static void test_insert_advanced(std::vector<value_type>& values, boost::intrusive::detail::false_type);
+   static void test_insert_advanced(std::vector<value_type>& values);
    static void test_swap(std::vector<value_type>& values);
    static void test_find(std::vector<value_type>& values);
    static void test_impl();
@@ -65,6 +74,7 @@
    }
    test_sort(values);
    test_insert(values);
+   test_insert_advanced(values);
    test_swap(values);
    test_find(values);
    test_impl();
@@ -139,32 +149,94 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       >::type set_type;
-   set_type testset;
-   testset.insert(&values[0] + 2, &values[0] + 5);
+   {
+      set_type testset;
+      testset.insert(&values[0] + 2, &values[0] + 5);
 
-   const set_type& const_testset = testset;
-   {  int init_values [] = { 1, 4, 5 };
-      TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() );  }
+      const set_type& const_testset = testset;
+      {  int init_values [] = { 1, 4, 5 };
+         TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() );  }
 
-   typename set_type::iterator i = testset.begin();
-   BOOST_TEST (i->value_ == 1);
+      typename set_type::iterator i = testset.begin();
+      BOOST_TEST (i->value_ == 1);
 
-   i = testset.insert (i, values[0]);
-   BOOST_TEST (&*i == &values[0]);
+      i = testset.insert (i, values[0]);
+      BOOST_TEST (&*i == &values[0]);
 
-   {  int init_values [] = { 5, 4, 3, 1 };
-      TEST_INTRUSIVE_SEQUENCE( init_values, testset.rbegin() );  }
+      {  int init_values [] = { 5, 4, 3, 1 };
+         TEST_INTRUSIVE_SEQUENCE( init_values, testset.rbegin() );  }
 
-   i = testset.iterator_to (values[2]);
-   BOOST_TEST (&*i == &values[2]);
+      i = testset.iterator_to (values[2]);
+      BOOST_TEST (&*i == &values[2]);
 
-   i = set_type::s_iterator_to(values[2]);
-   BOOST_TEST (&*i == &values[2]);
+      i = set_type::s_iterator_to(values[2]);
+      BOOST_TEST (&*i == &values[2]);
+
+      testset.erase (i);
+      {  int init_values [] = { 1, 3, 5 };
+         TEST_INTRUSIVE_SEQUENCE( init_values, testset.begin() );  }
+   }
+}
+
+template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
+void test_generic_set<ValueTraits, ContainerDefiner>::test_insert_advanced
+(std::vector<typename ValueTraits::value_type>& values, boost::intrusive::detail::true_type)
+{
+   typedef typename ValueTraits::value_type value_type;
+   typedef typename ContainerDefiner
+      < value_type
+      , value_traits<ValueTraits>
+      , constant_time_size<value_type::constant_time_size>
+      >::type set_type;
+   {
+      set_type testset;
+      testset.insert(&values[0], &values[0] + values.size());
+      value_type v(1);
+      typename set_type::insert_commit_data data;
+      BOOST_TEST (!testset.insert_check(v, testset.value_comp(), testset.priority_comp(), data).second);
+      BOOST_TEST (!testset.insert_check(testset.begin(), v, testset.value_comp(), testset.priority_comp(), data).second);
+   }
+}
+
+
+template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
+void test_generic_set<ValueTraits, ContainerDefiner>::test_insert_advanced
+(std::vector<typename ValueTraits::value_type>& values)
+{
+   typedef typename ValueTraits::value_type value_type;
+   typedef typename ContainerDefiner
+      < value_type
+      , value_traits<ValueTraits>
+      , constant_time_size<value_type::constant_time_size>
+      >::type set_type;
+   typedef typename detail::remove_const<set_type>::type Type;
+   typedef detail::bool_<is_treap<Type>::value> enabler;
+   test_insert_advanced(values, enabler());
+}
+
+
+//test: insert, const_iterator, const_reverse_iterator, erase, s_iterator_to:
+template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
+void test_generic_set<ValueTraits, ContainerDefiner>::test_insert_advanced
+   ( std::vector<typename ValueTraits::value_type>& values
+   , boost::intrusive::detail::false_type)
+{
+   typedef typename ValueTraits::value_type value_type;
+   typedef typename ContainerDefiner
+      < value_type
+      , value_traits<ValueTraits>
+      , constant_time_size<value_type::constant_time_size>
+      >::type set_type;
+   {
+      set_type testset;
+      testset.insert(&values[0], &values[0] + values.size());
+      value_type v(1);
+      typename set_type::insert_commit_data data;
+      BOOST_TEST (!testset.insert_check(v, testset.value_comp(), data).second);
+      BOOST_TEST (!testset.insert_check(testset.begin(), v, testset.value_comp(), data).second);
+   }
+}
 
-   testset.erase (i);
-   {  int init_values [] = { 1, 3, 5 };
-      TEST_INTRUSIVE_SEQUENCE( init_values, testset.begin() );  }
-}  
 
 //test: insert (seq-version), swap, erase (seq-version), size:
 template<class ValueTraits, template <class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none, class = ::boost::intrusive::none> class ContainerDefiner>
Modified: branches/release/libs/intrusive/test/itestvalue.hpp
==============================================================================
--- branches/release/libs/intrusive/test/itestvalue.hpp	(original)
+++ branches/release/libs/intrusive/test/itestvalue.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
@@ -115,12 +115,13 @@
 }
 
 template<class Hooks, bool ConstantTimeSize>
-bool priority_order(const testvalue<Hooks, ConstantTimeSize> &t1, const testvalue<Hooks, ConstantTimeSize> &t2)
+bool priority_order( const testvalue<Hooks, ConstantTimeSize> &t1
+                   , const testvalue<Hooks, ConstantTimeSize> &t2)
 {
    std::size_t hash1 = hash_value(t1);
-   boost::hash_combine(hash1,&t1);
+   boost::hash_combine(hash1, &t1);
    std::size_t hash2 = hash_value(t2);
-   boost::hash_combine(hash2,&t2);
+   boost::hash_combine(hash2, &t2);
    return hash1 < hash2;
 }
 
@@ -150,6 +151,31 @@
       (const testvalue<Hooks, constant_time_size>& v1) const
    {  return (v1.value_ & 1) == 0;  }  
 };
+/*
+struct int_testvalue_comp
+{
+   template<class Hooks, bool constant_time_size>
+   bool operator()
+      (const testvalue<Hooks, constant_time_size>& v1, const int &i) const
+   {  return v1.value_ < i; }
+   template<class Hooks, bool constant_time_size>
+   bool operator()
+      (const int &i, const testvalue<Hooks, constant_time_size>& v1) const
+   {  return i < v1.value_; }
+};
+
+struct int_testvalue_pcomp
+{
+   template<class Hooks, bool constant_time_size>
+   bool operator()
+      (const testvalue<Hooks, constant_time_size>& v1, const int &i) const
+   {  return v1.value_ < i; }
+   template<class Hooks, bool constant_time_size>
+   bool operator()
+      (const int &i, const testvalue<Hooks, constant_time_size>& v1) const
+   {  return i < v1.value_; }
+};
+*/
 
 }  //namespace boost{
 }  //namespace intrusive{
Modified: branches/release/libs/intrusive/test/list_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/list_test.cpp	(original)
+++ branches/release/libs/intrusive/test/list_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/test/make_functions_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/make_functions_test.cpp	(original)
+++ branches/release/libs/intrusive/test/make_functions_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2007-2008
+// (C) Copyright Ion Gaztanaga  2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/test/multiset_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/multiset_test.cpp	(original)
+++ branches/release/libs/intrusive/test/multiset_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
@@ -16,6 +16,26 @@
 #include "smart_ptr.hpp"
 #include "generic_multiset_test.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::multiset<T, 
+   #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+   O1, O2, O3, O4
+   #else
+   Options...
+   #endif
+> >
+{
+   static const bool value = true;
+};
+
+}}}
+
 using namespace boost::intrusive;
 
 struct my_tag;
Modified: branches/release/libs/intrusive/test/set_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/set_test.cpp	(original)
+++ branches/release/libs/intrusive/test/set_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
@@ -11,11 +11,32 @@
 //
 /////////////////////////////////////////////////////////////////////////////
 #include <boost/intrusive/detail/config_begin.hpp>
+
 #include <boost/intrusive/set.hpp>
 #include "itestvalue.hpp"
 #include "smart_ptr.hpp"
 #include "generic_set_test.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::set<T, 
+   #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+   O1, O2, O3, O4
+   #else
+   Options...
+   #endif
+> >
+{
+   static const bool value = true;
+};
+
+}}}
+
 struct my_tag;
 
 using namespace boost::intrusive;
@@ -134,4 +155,5 @@
    test_main_template<boost::intrusive::smart_ptr<void>, true>()();
    return boost::report_errors();
 }
+
 #include <boost/intrusive/detail/config_end.hpp>
Modified: branches/release/libs/intrusive/test/sg_multiset_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/sg_multiset_test.cpp	(original)
+++ branches/release/libs/intrusive/test/sg_multiset_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
@@ -34,6 +34,23 @@
    static const bool value = true;
 };
 
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::sg_multiset<T, 
+   #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+   O1, O2, O3, O4
+   #else
+   Options...
+   #endif
+> >
+{
+   static const bool value = true;
+};
+
 }}}
 
 using namespace boost::intrusive;
Modified: branches/release/libs/intrusive/test/sg_set_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/sg_set_test.cpp	(original)
+++ branches/release/libs/intrusive/test/sg_set_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -33,6 +33,22 @@
    static const bool value = true;
 };
 
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::sg_set<T, 
+   #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+   O1, O2, O3, O4
+   #else
+   Options...
+   #endif
+> >
+{
+   static const bool value = true;
+};
+
 }}}
 
 
Modified: branches/release/libs/intrusive/test/slist_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/slist_test.cpp	(original)
+++ branches/release/libs/intrusive/test/slist_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/test/splay_multiset_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/splay_multiset_test.cpp	(original)
+++ branches/release/libs/intrusive/test/splay_multiset_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/test/stateful_value_traits_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/stateful_value_traits_test.cpp	(original)
+++ branches/release/libs/intrusive/test/stateful_value_traits_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2007-2008
+// (C) Copyright Ion Gaztanaga  2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/test/test_container.hpp
==============================================================================
--- branches/release/libs/intrusive/test/test_container.hpp	(original)
+++ branches/release/libs/intrusive/test/test_container.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2007-2008
+// (C) Copyright Ion Gaztanaga  2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
@@ -21,6 +21,12 @@
 namespace test {
 
 template<class T>
+struct is_unordered
+{
+   static const bool value = false;
+};
+
+template<class T>
 struct has_const_overloads
 {
    static const bool value = true;
@@ -78,6 +84,7 @@
    BOOST_TEST( c.size() == 0 );
    BOOST_TEST( c.empty() );
 
+
    {
    typename Data::iterator i = d.begin();
    c.insert( c.begin(), *i );
@@ -87,7 +94,8 @@
    BOOST_TEST( c.size() == 2 );
    BOOST_TEST( !c.empty() );
 
-   c.erase( c.begin() );
+   typename Container::iterator i;
+   i = c.erase( c.begin() );
 
    BOOST_TEST( c.size() == 1 );
 
@@ -97,7 +105,8 @@
    c.insert( c.begin(), *(i) );
    }
 
-   c.erase( c.begin(), c.end() );
+   i = c.erase( c.begin(), c.end() );
+   BOOST_TEST( i == c.end() );
 
    BOOST_TEST( c.empty() );
 
@@ -107,7 +116,8 @@
 
    BOOST_TEST( c.begin() != c.end() );
 
-   c.erase( c.begin() );
+   i = c.erase_and_dispose( c.begin(), detail::null_disposer() );
+   BOOST_TEST( i == c.begin() );
 
    c.assign(d.begin(), d.end());
 
@@ -120,8 +130,89 @@
 }
 
 template< class Container, class Data >
+void test_common_unordered_and_associative_container(Container & c, Data & d, boost::intrusive::detail::true_ unordered)
+{
+   (void)unordered;
+   typedef typename Container::size_type  size_type;
+
+   assert( d.size() > 2 );
+
+   c.clear();
+   c.insert(d.begin(), d.end());
+
+   for( typename Data::const_iterator di = d.begin(), de = d.end();
+      di != de; ++di )
+   {
+      BOOST_TEST( c.find(*di) != c.end() );
+   }
+
+   typename Data::const_iterator db = d.begin();
+   typename Data::const_iterator da = db++;
+
+   size_type old_size = c.size();
+
+   c.erase(*da, c.hash_function(), c.key_eq());
+   BOOST_TEST( c.size() == old_size-1 );
+   //This should not eras anyone
+   size_type second_erase = c.erase_and_dispose
+      ( *da, c.hash_function(), c.key_eq(), detail::null_disposer() );
+   BOOST_TEST( second_erase == 0 );
+
+   BOOST_TEST( c.count(*da, c.hash_function(), c.key_eq()) == 0 );
+   BOOST_TEST( c.count(*db, c.hash_function(), c.key_eq()) != 0 );
+
+   BOOST_TEST( c.find(*da, c.hash_function(), c.key_eq()) == c.end() );
+   BOOST_TEST( c.find(*db, c.hash_function(), c.key_eq()) != c.end() );
+
+   BOOST_TEST( c.equal_range(*db, c.hash_function(), c.key_eq()).first != c.end() );
+
+   c.clear();
+
+   BOOST_TEST( c.equal_range(*da, c.hash_function(), c.key_eq()).first == c.end() );
+}
+
+template< class Container, class Data >
+void test_common_unordered_and_associative_container(Container & c, Data & d, boost::intrusive::detail::false_ unordered)
+{
+   (void)unordered;
+   typedef typename Container::size_type  size_type;
+
+   assert( d.size() > 2 );
+
+   c.clear();
+   c.insert(d.begin(), d.end());
+
+   for( typename Data::const_iterator di = d.begin(), de = d.end();
+      di != de; ++di )
+   {
+      BOOST_TEST( c.find(*di, c.key_comp()) != c.end() );
+   }
+
+   typename Data::const_iterator db = d.begin();
+   typename Data::const_iterator da = db++;
+
+   size_type old_size = c.size();
+
+   c.erase(*da, c.key_comp());
+   BOOST_TEST( c.size() == old_size-1 );
+   //This should not eras anyone
+   size_type second_erase = c.erase_and_dispose( *da, c.key_comp(), detail::null_disposer() );
+   BOOST_TEST( second_erase == 0 );
+
+   BOOST_TEST( c.count(*da, c.key_comp()) == 0 );
+   BOOST_TEST( c.count(*db, c.key_comp()) != 0 );
+   BOOST_TEST( c.find(*da, c.key_comp()) == c.end() );
+   BOOST_TEST( c.find(*db, c.key_comp()) != c.end() );
+   BOOST_TEST( c.equal_range(*db, c.key_comp()).first != c.end() );
+   c.clear();
+   BOOST_TEST( c.equal_range(*da, c.key_comp()).first == c.end() );
+}
+
+
+template< class Container, class Data >
 void test_common_unordered_and_associative_container(Container & c, Data & d)
 {
+   {
    typedef typename Container::size_type  size_type;
 
    assert( d.size() > 2 );
@@ -141,8 +232,10 @@
    size_type old_size = c.size();
 
    c.erase(*da);
-
    BOOST_TEST( c.size() == old_size-1 );
+   //This should not eras anyone
+   size_type second_erase = c.erase_and_dispose( *da, detail::null_disposer() );
+   BOOST_TEST( second_erase == 0 );
 
    BOOST_TEST( c.count(*da) == 0 );
    BOOST_TEST( c.count(*db) != 0 );
@@ -155,6 +248,9 @@
    c.clear();
 
    BOOST_TEST( c.equal_range(*da).first == c.end() );
+   }
+   typedef detail::bool_<is_unordered<Container>::value> enabler;
+   test_common_unordered_and_associative_container(c, d, enabler());
 }
 
 template< class Container, class Data >
Modified: branches/release/libs/intrusive/test/test_macros.hpp
==============================================================================
--- branches/release/libs/intrusive/test/test_macros.hpp	(original)
+++ branches/release/libs/intrusive/test/test_macros.hpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008
+// (C) Copyright Ion Gaztanaga  2006-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/intrusive/test/treap_multiset_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/treap_multiset_test.cpp	(original)
+++ branches/release/libs/intrusive/test/treap_multiset_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
@@ -17,6 +17,26 @@
 #include "smart_ptr.hpp"
 #include "generic_multiset_test.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::treap_multiset<T, 
+   #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+   O1, O2, O3, O4
+   #else
+   Options...
+   #endif
+> >
+{
+   static const bool value = true;
+};
+
+}}}
+
 using namespace boost::intrusive;
 
 struct my_tag;
Modified: branches/release/libs/intrusive/test/treap_set_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/treap_set_test.cpp	(original)
+++ branches/release/libs/intrusive/test/treap_set_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
@@ -15,6 +15,43 @@
 #include "smart_ptr.hpp"
 #include "generic_set_test.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct has_insert_before<boost::intrusive::treap_set<T, 
+   #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+   O1, O2, O3, O4
+   #else
+   Options...
+   #endif
+> >
+{
+   static const bool value = true;
+};
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4>
+#else
+template<class T, class ...Options>
+#endif
+struct is_treap<boost::intrusive::treap_set<T, 
+   #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+   O1, O2, O3, O4
+   #else
+   Options...
+   #endif
+> >
+{
+   static const bool value = true;
+};
+
+}}}
+
+
 using namespace boost::intrusive;
 
 struct my_tag;
Modified: branches/release/libs/intrusive/test/unordered_multiset_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/unordered_multiset_test.cpp	(original)
+++ branches/release/libs/intrusive/test/unordered_multiset_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
@@ -23,6 +23,26 @@
 #include "test_macros.hpp"
 #include "test_container.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4, class O5, class O6>
+#else
+template<class T, class ...Options>
+#endif
+struct is_unordered<boost::intrusive::unordered_multiset<T,
+   #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+   O1, O2, O3, O4, O5, O6
+   #else
+   Options...
+   #endif
+> >
+{
+   static const bool value = true;
+};
+
+}}}
+
 using namespace boost::intrusive;
 
 struct my_tag;
Modified: branches/release/libs/intrusive/test/unordered_set_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/unordered_set_test.cpp	(original)
+++ branches/release/libs/intrusive/test/unordered_set_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,7 +1,7 @@
 /////////////////////////////////////////////////////////////////////////////
 //
 // (C) Copyright Olaf Krzikalla 2004-2006.
-// (C) Copyright Ion Gaztanaga  2006-2008.
+// (C) Copyright Ion Gaztanaga  2006-2009.
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at
@@ -22,6 +22,26 @@
 #include "test_macros.hpp"
 #include "test_container.hpp"
 
+namespace boost { namespace intrusive { namespace test {
+
+#if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+template<class T, class O1, class O2, class O3, class O4, class O5, class O6>
+#else
+template<class T, class ...Options>
+#endif
+struct is_unordered<boost::intrusive::unordered_set<T,
+   #if !defined (BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
+   O1, O2, O3, O4, O5, O6
+   #else
+   Options...
+   #endif
+> >
+{
+   static const bool value = true;
+};
+
+}}}
+
 using namespace boost::intrusive;
 
 struct my_tag;
Modified: branches/release/libs/intrusive/test/virtual_base_test.cpp
==============================================================================
--- branches/release/libs/intrusive/test/virtual_base_test.cpp	(original)
+++ branches/release/libs/intrusive/test/virtual_base_test.cpp	2009-10-15 14:45:53 EDT (Thu, 15 Oct 2009)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga  2007-2008
+// (C) Copyright Ion Gaztanaga  2007-2009
 //
 // Distributed under the Boost Software License, Version 1.0.
 //    (See accompanying file LICENSE_1_0.txt or copy at