$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r78517 - in trunk/boost/intrusive: . detail
From: igaztanaga_at_[hidden]
Date: 2012-05-20 05:58:12
Author: igaztanaga
Date: 2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
New Revision: 78517
URL: http://svn.boost.org/trac/boost/changeset/78517
Log:
Trailing whitespaces
Text files modified: 
   trunk/boost/intrusive/any_hook.hpp                                 |    84 +-                                      
   trunk/boost/intrusive/avl_set.hpp                                  |   894 +++++++++++++++++-----------------      
   trunk/boost/intrusive/avl_set_hook.hpp                             |   130 ++--                                    
   trunk/boost/intrusive/avltree.hpp                                  |   462 +++++++++---------                      
   trunk/boost/intrusive/avltree_algorithms.hpp                       |   226 ++++----                                
   trunk/boost/intrusive/bs_set_hook.hpp                              |   130 ++--                                    
   trunk/boost/intrusive/circular_list_algorithms.hpp                 |   172 +++---                                  
   trunk/boost/intrusive/circular_slist_algorithms.hpp                |   134 ++--                                    
   trunk/boost/intrusive/derivation_value_traits.hpp                  |     6                                         
   trunk/boost/intrusive/detail/any_node_and_algorithms.hpp           |    18                                         
   trunk/boost/intrusive/detail/assert.hpp                            |     2                                         
   trunk/boost/intrusive/detail/avltree_node.hpp                      |     6                                         
   trunk/boost/intrusive/detail/common_slist_algorithms.hpp           |    16                                         
   trunk/boost/intrusive/detail/config_begin.hpp                      |     4                                         
   trunk/boost/intrusive/detail/function_detector.hpp                 |     4                                         
   trunk/boost/intrusive/detail/generic_hook.hpp                      |    14                                         
   trunk/boost/intrusive/detail/has_member_function_callable_with.hpp |    16                                         
   trunk/boost/intrusive/detail/hashtable_node.hpp                    |     8                                         
   trunk/boost/intrusive/detail/list_node.hpp                         |    26                                         
   trunk/boost/intrusive/detail/mpl.hpp                               |     8                                         
   trunk/boost/intrusive/detail/preprocessor.hpp                      |     2                                         
   trunk/boost/intrusive/detail/rbtree_node.hpp                       |     6                                         
   trunk/boost/intrusive/detail/slist_node.hpp                        |    22                                         
   trunk/boost/intrusive/detail/transform_iterator.hpp                |     2                                         
   trunk/boost/intrusive/detail/tree_algorithms.hpp                   |   244 ++++----                                
   trunk/boost/intrusive/detail/tree_node.hpp                         |    28                                         
   trunk/boost/intrusive/detail/utilities.hpp                         |    16                                         
   trunk/boost/intrusive/hashtable.hpp                                |   478 +++++++++---------                      
   trunk/boost/intrusive/linear_slist_algorithms.hpp                  |   106 ++--                                    
   trunk/boost/intrusive/link_mode.hpp                                |     4                                         
   trunk/boost/intrusive/list.hpp                                     |   518 ++++++++++----------                    
   trunk/boost/intrusive/list_hook.hpp                                |   132 ++--                                    
   trunk/boost/intrusive/member_value_traits.hpp                      |     8                                         
   trunk/boost/intrusive/options.hpp                                  |    10                                         
   trunk/boost/intrusive/parent_from_member.hpp                       |     4                                         
   trunk/boost/intrusive/pointer_plus_bits.hpp                        |     6                                         
   trunk/boost/intrusive/pointer_traits.hpp                           |     6                                         
   trunk/boost/intrusive/rbtree.hpp                                   |   468 +++++++++---------                      
   trunk/boost/intrusive/rbtree_algorithms.hpp                        |   248 ++++----                                
   trunk/boost/intrusive/set.hpp                                      |   906 ++++++++++++++++++------------------    
   trunk/boost/intrusive/set_hook.hpp                                 |   134 ++--                                    
   trunk/boost/intrusive/sg_set.hpp                                   |   934 ++++++++++++++++++------------------    
   trunk/boost/intrusive/sgtree.hpp                                   |   494 +++++++++---------                      
   trunk/boost/intrusive/sgtree_algorithms.hpp                        |   220 ++++----                                
   trunk/boost/intrusive/slist.hpp                                    |   678 +++++++++++++-------------              
   trunk/boost/intrusive/slist_hook.hpp                               |   138 ++--                                    
   trunk/boost/intrusive/splay_set.hpp                                |   924 ++++++++++++++++++------------------    
   trunk/boost/intrusive/splay_set_hook.hpp                           |   134 ++--                                    
   trunk/boost/intrusive/splaytree.hpp                                |   476 +++++++++---------                      
   trunk/boost/intrusive/splaytree_algorithms.hpp                     |   204 ++++----                                
   trunk/boost/intrusive/treap.hpp                                    |   494 +++++++++---------                      
   trunk/boost/intrusive/treap_algorithms.hpp                         |   214 ++++----                                
   trunk/boost/intrusive/treap_set.hpp                                |   994 ++++++++++++++++++++--------------------
   trunk/boost/intrusive/trivial_value_traits.hpp                     |     4                                         
   trunk/boost/intrusive/unordered_set.hpp                            |   852 +++++++++++++++++-----------------      
   trunk/boost/intrusive/unordered_set_hook.hpp                       |   144 ++--                                    
   56 files changed, 6306 insertions(+), 6306 deletions(-)
Modified: trunk/boost/intrusive/any_hook.hpp
==============================================================================
--- trunk/boost/intrusive/any_hook.hpp	(original)
+++ trunk/boost/intrusive/any_hook.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -50,7 +50,7 @@
       Options...
       #endif
       >::type packed_options;
-   
+  
    typedef detail::generic_hook
    < get_any_node_algo<typename packed_options::void_pointer>
    , typename packed_options::tag
@@ -63,13 +63,13 @@
 
 //! Derive a class from this hook in order to store objects of that class
 //! in an intrusive container.
-//! 
+//!
 //! The hook admits the following options: \c tag<>, \c void_pointer<> and
 //! \c link_mode<>.
 //!
-//! \c tag<> defines a tag to identify the node. 
-//! The same tag value can be used in different classes, but if a class is 
-//! derived from more than one \c any_base_hook, then each \c any_base_hook needs its 
+//! \c tag<> defines a tag to identify the node.
+//! The same tag value can be used in different classes, but if a class is
+//! derived from more than one \c any_base_hook, then each \c any_base_hook needs its
 //! unique tag.
 //!
 //! \c link_mode<> will specify the linking mode of the hook (\c normal_link, \c safe_link).
@@ -94,27 +94,27 @@
    public:
    //! <b>Effects</b>: If link_mode is or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    any_base_hook();
 
    //! <b>Effects</b>: If link_mode is or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    any_base_hook(const any_base_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    any_base_hook& operator=(const any_base_hook& );
@@ -122,17 +122,17 @@
    //! <b>Effects</b>: If link_mode is \c normal_link, the destructor does
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in a container an assertion is raised.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~any_base_hook();
 
    //! <b>Precondition</b>: link_mode must be \c safe_link.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c container::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c container::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
    #endif
 };
@@ -148,7 +148,7 @@
 {
    /// @cond
    typedef typename pack_options
-      < hook_defaults, 
+      < hook_defaults,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3
       #else
@@ -168,10 +168,10 @@
 
 //! Store this hook in a class to be inserted
 //! in an intrusive container.
-//! 
+//!
 //! The hook admits the following options: \c void_pointer<> and
 //! \c link_mode<>.
-//! 
+//!
 //! \c link_mode<> will specify the linking mode of the hook (\c normal_link or \c safe_link).
 //!
 //! \c void_pointer<> is the pointer type that will be used internally in the hook
@@ -194,27 +194,27 @@
    public:
    //! <b>Effects</b>: If link_mode is or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    any_member_hook();
 
    //! <b>Effects</b>: If link_mode is or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    any_member_hook(const any_member_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    any_member_hook& operator=(const any_member_hook& );
@@ -222,17 +222,17 @@
    //! <b>Effects</b>: If link_mode is \c normal_link, the destructor does
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in a container an assertion is raised.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~any_member_hook();
 
    //! <b>Precondition</b>: link_mode must be \c safe_link.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c container::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c container::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
    #endif
 };
@@ -336,8 +336,8 @@
 {};
 
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/avl_set.hpp
==============================================================================
--- trunk/boost/intrusive/avl_set.hpp	(original)
+++ trunk/boost/intrusive/avl_set.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -22,9 +22,9 @@
 namespace boost {
 namespace intrusive {
 
-//! The class template avl_set is an intrusive container, that mimics most of 
+//! The class template avl_set is an intrusive container, that mimics most of
 //! the interface of std::set as described in the C++ standard.
-//! 
+//!
 //! The template parameter \c T is the type to be managed by the container.
 //! The user can specify additional options and if no options are provided
 //! default options are used.
@@ -79,30 +79,30 @@
    /// @endcond
 
    public:
-   //! <b>Effects</b>: Constructs an empty avl_set. 
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //! <b>Effects</b>: Constructs an empty avl_set.
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor of the value_compare object throws. 
+   //!   or the copy constructor of the value_compare object throws.
    avl_set_impl( const value_compare &cmp = value_compare()
-           , const value_traits &v_traits = value_traits()) 
+           , const value_traits &v_traits = value_traits())
       :  tree_(cmp, v_traits)
    {}
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type. 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
    //!   cmp must be a comparison function that induces a strict weak ordering.
-   //! 
-   //! <b>Effects</b>: Constructs an empty avl_set and inserts elements from 
+   //!
+   //! <b>Effects</b>: Constructs an empty avl_set and inserts elements from
    //!   [b, e).
-   //! 
-   //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using 
+   //!
+   //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise N * log N, where N is std::distance(last, first).
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare object throws. 
+   //!   or the copy constructor/operator() of the value_compare object throws.
    template<class Iterator>
    avl_set_impl( Iterator b, Iterator e
            , const value_compare &cmp = value_compare()
@@ -111,135 +111,135 @@
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   avl_set_impl(BOOST_RV_REF(avl_set_impl) x) 
+   //!  
+   avl_set_impl(BOOST_RV_REF(avl_set_impl) x)
       :  tree_(::boost::move(x.tree_))
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   avl_set_impl& operator=(BOOST_RV_REF(avl_set_impl) x) 
+   //!  
+   avl_set_impl& operator=(BOOST_RV_REF(avl_set_impl) x)
    {  tree_ = ::boost::move(x.tree_);  return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the avl_set 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the avl_set
    //!   are not deleted (i.e. no destructors are called).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~avl_set_impl() 
+   ~avl_set_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    { return tree_.cbegin();  }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    { return tree_.cend();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    { return tree_.crbegin();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    { return tree_.crend();  }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of avl_set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the avl_set associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static avl_set_impl &container_from_end_iterator(iterator end_iterator)
    {
@@ -250,11 +250,11 @@
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of avl_set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the set associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const avl_set_impl &container_from_end_iterator(const_iterator end_iterator)
    {
@@ -264,11 +264,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid iterator of set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a reference to the set associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static avl_set_impl &container_from_iterator(iterator it)
    {
@@ -278,11 +278,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid const_iterator of set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the set associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static const avl_set_impl &container_from_iterator(const_iterator it)
    {
@@ -292,42 +292,42 @@
    }
 
    //! <b>Effects</b>: Returns the key_compare object used by the avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If key_compare copy-constructor throws.
    key_compare key_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns the value_compare object used by the avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns true is the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    { return tree_.empty(); }
 
    //! <b>Effects</b>: Returns the number of elements stored in the avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this if,
    //!   constant-time size option is enabled. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    { return tree_.size(); }
 
    //! <b>Effects</b>: Swaps the contents of two sets.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the swap() call for the comparison functor
    //!   found using ADL throws. Strong guarantee.
    void swap(avl_set_impl& other)
@@ -337,22 +337,22 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const avl_set_impl &src, Cloner cloner, Disposer disposer)
    {  tree_.clone_from(src.tree_, cloner, disposer);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Treaps to inserts value into the avl_set.
    //!
    //! <b>Returns</b>: If the value
@@ -360,39 +360,39 @@
    //!   iterator to the new value and true. If there is an equivalent value
    //!   returns a pair containing an iterator to the already present value
    //!   and false.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    std::pair<iterator, bool> insert(reference value)
    {  return tree_.insert_unique(value);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
-   //! <b>Effects</b>: Treaps to to insert x into the avl_set, using "hint" 
+   //!
+   //! <b>Effects</b>: Treaps to to insert x into the avl_set, using "hint"
    //!   as a hint to where it will be inserted.
    //!
-   //! <b>Returns</b>: An iterator that points to the position where the 
+   //! <b>Returns</b>: An iterator that points to the position where the
    //!   new element was inserted into the avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(const_iterator hint, reference value)
    {  return tree_.insert_unique(hint, value);  }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the avl_set, using
    //!   a user provided key instead of the value itself.
    //!
@@ -401,16 +401,16 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   node that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that 
+   //!   than the value_type and this function offers the possibility to use that
    //!   part to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
@@ -424,12 +424,12 @@
       (const KeyType &key, KeyValueCompare key_value_comp, insert_commit_data &commit_data)
    {  return tree_.insert_unique_check(key, key_value_comp, commit_data); }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the avl_set, using
-   //!   a user provided key instead of the value itself, using "hint" 
+   //!   a user provided key instead of the value itself, using "hint"
    //!   as a hint to where it will be inserted.
    //!
    //! <b>Returns</b>: If there is an equivalent value
@@ -437,23 +437,23 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   constructing that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that key 
+   //!   than the value_type and this function offers the possibility to use that key
    //!   to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
    //!   "insert_commit" to insert the object in constant-time. This can give a total
    //!   constant-time complexity to the insertion: check(O(1)) + commit(O(1)).
-   //!   
+   //!  
    //!   "commit_data" remains valid for a subsequent "insert_commit" only if no more
    //!   objects are inserted or erased from the avl_set.
    template<class KeyType, class KeyValueCompare>
@@ -466,33 +466,33 @@
    //!   must have been obtained from a previous call to "insert_check".
    //!   No objects should have been inserted or erased from the avl_set between
    //!   the "insert_check" that filled "commit_data" and the call to "insert_commit".
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the avl_set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Returns</b>: An iterator to the newly inserted object.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
    iterator insert_commit(reference value, const insert_commit_data &commit_data)
    {  return tree_.insert_unique_commit(value, commit_data); }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a range into the avl_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -505,11 +505,11 @@
    //!   inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the tree before "pos".
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if "pos" is not
    //! the successor of "value" or "value" is not unique tree ordering and uniqueness
    //! invariants will be broken respectively.
@@ -522,11 +522,11 @@
    //!   any inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the tree in the last position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   less than or equal to the greatest inserted key tree ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -539,11 +539,11 @@
    //!   than any inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the tree in the first position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   greater than or equal to the the mimum inserted key tree ordering or uniqueness
    //!   invariants will be broken.
@@ -553,41 +553,41 @@
    void push_front(reference value)
    {  tree_.push_front(value);  }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
    {  return tree_.erase(i);  }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, const_iterator e)
    {  return tree_.erase(b, e);  }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size()) + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -595,13 +595,13 @@
 
    //! <b>Effects</b>: Erases all the elements that compare equal with
    //!   the given key and the given comparison functor.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If the comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
@@ -614,16 +614,16 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -639,14 +639,14 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -657,13 +657,13 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(value)). Basic guarantee.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -677,11 +677,11 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -693,26 +693,26 @@
    {  return tree_.erase_and_dispose(key, comp, disposer);  }
 
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
    {  return tree_.clear();  }
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
-   //! 
+   //!
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -720,20 +720,20 @@
    {  return tree_.clear_and_dispose(disposer);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    size_type count(const_reference value) const
    {  return tree_.find(value) != end();  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the same key
    //!   compared with the given comparison functor.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType& key, KeyValueCompare comp) const
@@ -741,9 +741,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator lower_bound(const_reference value)
    {  return tree_.lower_bound(value);  }
@@ -753,13 +753,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -769,9 +769,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator lower_bound(const_reference value) const
    {  return tree_.lower_bound(value);  }
@@ -781,13 +781,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -797,9 +797,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator upper_bound(const_reference value)
    {  return tree_.upper_bound(value);  }
@@ -809,11 +809,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -825,9 +825,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator upper_bound(const_reference value) const
    {  return tree_.upper_bound(value);  }
@@ -837,11 +837,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -851,11 +851,11 @@
    const_iterator upper_bound(const KeyType& key, KeyValueCompare comp) const
    {  return tree_.upper_bound(key, comp);  }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator find(const_reference value)
    {  return tree_.find(value);  }
@@ -864,12 +864,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -879,11 +879,11 @@
    iterator find(const KeyType& key, KeyValueCompare comp)
    {  return tree_.find(key, comp);  }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator find(const_reference value) const
    {  return tree_.find(value);  }
@@ -892,12 +892,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -910,9 +910,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return tree_.equal_range(value);  }
@@ -921,13 +921,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -940,9 +940,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
@@ -952,13 +952,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -971,14 +971,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a avl_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the avl_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -986,14 +986,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a avl_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   avl_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static const_iterator s_iterator_to(const_reference value)
@@ -1001,48 +1001,48 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a avl_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the avl_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a avl_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   avl_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value shall not be in a avl_set/avl_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
    { tree_type::init_node(value);   }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -1052,14 +1052,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   tree with with_this. The tree does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -1233,9 +1233,9 @@
 
 #endif
 
-//! The class template avl_multiset is an intrusive container, that mimics most of 
+//! The class template avl_multiset is an intrusive container, that mimics most of
 //! the interface of std::avl_multiset as described in the C++ standard.
-//! 
+//!
 //! The template parameter \c T is the type to be managed by the container.
 //! The user can specify additional options and if no options are provided
 //! default options are used.
@@ -1289,30 +1289,30 @@
    /// @endcond
 
    public:
-   //! <b>Effects</b>: Constructs an empty avl_multiset. 
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //! <b>Effects</b>: Constructs an empty avl_multiset.
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare object throws. 
+   //!   or the copy constructor/operator() of the value_compare object throws.
    avl_multiset_impl( const value_compare &cmp = value_compare()
-                , const value_traits &v_traits = value_traits()) 
+                , const value_traits &v_traits = value_traits())
       :  tree_(cmp, v_traits)
    {}
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type. 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
    //!   cmp must be a comparison function that induces a strict weak ordering.
-   //! 
-   //! <b>Effects</b>: Constructs an empty avl_multiset and inserts elements from 
+   //!
+   //! <b>Effects</b>: Constructs an empty avl_multiset and inserts elements from
    //!   [b, e).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise N * log N, where N is the distance between first and last
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare object throws. 
+   //!   or the copy constructor/operator() of the value_compare object throws.
    template<class Iterator>
    avl_multiset_impl( Iterator b, Iterator e
                 , const value_compare &cmp = value_compare()
@@ -1321,135 +1321,135 @@
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   avl_multiset_impl(BOOST_RV_REF(avl_multiset_impl) x) 
+   //!  
+   avl_multiset_impl(BOOST_RV_REF(avl_multiset_impl) x)
       :  tree_(::boost::move(x.tree_))
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   avl_multiset_impl& operator=(BOOST_RV_REF(avl_multiset_impl) x) 
+   //!  
+   avl_multiset_impl& operator=(BOOST_RV_REF(avl_multiset_impl) x)
    {  tree_ = ::boost::move(x.tree_);  return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the avl_multiset 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the avl_multiset
    //!   are not deleted (i.e. no destructors are called).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~avl_multiset_impl() 
+   ~avl_multiset_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    { return tree_.cbegin();  }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    { return tree_.cend();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    { return tree_.crbegin();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    { return tree_.crend();  }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of avl_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the avl_multiset associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static avl_multiset_impl &container_from_end_iterator(iterator end_iterator)
    {
@@ -1460,11 +1460,11 @@
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of avl_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the avl_multiset associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const avl_multiset_impl &container_from_end_iterator(const_iterator end_iterator)
    {
@@ -1474,11 +1474,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid iterator of multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the multiset associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static avl_multiset_impl &container_from_iterator(iterator it)
    {
@@ -1488,11 +1488,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid const_iterator of multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the multiset associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static const avl_multiset_impl &container_from_iterator(const_iterator it)
    {
@@ -1502,42 +1502,42 @@
    }
 
    //! <b>Effects</b>: Returns the key_compare object used by the avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If key_compare copy-constructor throws.
    key_compare key_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns the value_compare object used by the avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns true is the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    { return tree_.empty(); }
 
    //! <b>Effects</b>: Returns the number of elements stored in the avl_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this if,
    //!   constant-time size option is enabled. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    { return tree_.size(); }
 
    //! <b>Effects</b>: Swaps the contents of two avl_multisets.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the swap() call for the comparison functor
    //!   found using ADL throws. Strong guarantee.
    void swap(avl_multiset_impl& other)
@@ -1547,69 +1547,69 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const avl_multiset_impl &src, Cloner cloner, Disposer disposer)
    {  tree_.clone_from(src.tree_, cloner, disposer);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the avl_multiset.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(reference value)
    {  return tree_.insert_equal(value);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts x into the avl_multiset, using pos as a hint to
    //!   where it will be inserted.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(const_iterator hint, reference value)
    {  return tree_.insert_equal(hint, value);  }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a range into the avl_multiset.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -1622,11 +1622,11 @@
    //!   inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the tree before "pos".
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if "pos" is not
    //! the successor of "value" or "value" is not unique tree ordering and uniqueness
    //! invariants will be broken respectively.
@@ -1639,11 +1639,11 @@
    //!   any inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the tree in the last position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   less than or equal to the greatest inserted key tree ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -1656,11 +1656,11 @@
    //!   than any inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the tree in the first position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   greater than or equal to the the mimum inserted key tree ordering or uniqueness
    //!   invariants will be broken.
@@ -1670,41 +1670,41 @@
    void push_front(reference value)
    {  tree_.push_front(value);  }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
    {  return tree_.erase(i);  }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, const_iterator e)
    {  return tree_.erase(b, e);  }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -1712,13 +1712,13 @@
 
    //! <b>Effects</b>: Erases all the elements that compare equal with
    //!   the given key and the given comparison functor.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
@@ -1733,14 +1733,14 @@
    //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -1758,12 +1758,12 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -1774,13 +1774,13 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1794,11 +1794,11 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -1810,26 +1810,26 @@
    {  return tree_.erase_and_dispose(key, comp, disposer);  }
 
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
    {  return tree_.clear();  }
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
-   //! 
+   //!
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1837,20 +1837,20 @@
    {  return tree_.clear_and_dispose(disposer);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    size_type count(const_reference value) const
    {  return tree_.count(value);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the same key
    //!   compared with the given comparison functor.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType& key, KeyValueCompare comp) const
@@ -1858,9 +1858,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator lower_bound(const_reference value)
    {  return tree_.lower_bound(value);  }
@@ -1870,13 +1870,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -1886,9 +1886,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator lower_bound(const_reference value) const
    {  return tree_.lower_bound(value);  }
@@ -1898,13 +1898,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -1914,9 +1914,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator upper_bound(const_reference value)
    {  return tree_.upper_bound(value);  }
@@ -1926,11 +1926,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1942,9 +1942,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator upper_bound(const_reference value) const
    {  return tree_.upper_bound(value);  }
@@ -1954,11 +1954,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1968,11 +1968,11 @@
    const_iterator upper_bound(const KeyType& key, KeyValueCompare comp) const
    {  return tree_.upper_bound(key, comp);  }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator find(const_reference value)
    {  return tree_.find(value);  }
@@ -1981,12 +1981,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1996,11 +1996,11 @@
    iterator find(const KeyType& key, KeyValueCompare comp)
    {  return tree_.find(key, comp);  }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator find(const_reference value) const
    {  return tree_.find(value);  }
@@ -2009,12 +2009,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2027,9 +2027,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return tree_.equal_range(value);  }
@@ -2038,13 +2038,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2057,9 +2057,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
@@ -2069,13 +2069,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2088,14 +2088,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a avl_multiset of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the avl_multiset
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -2103,14 +2103,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a avl_multiset of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   avl_multiset that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static const_iterator s_iterator_to(const_reference value)
@@ -2118,48 +2118,48 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a avl_multiset of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the avl_multiset
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a avl_multiset of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   avl_multiset that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value shall not be in a avl_multiset/avl_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
    { tree_type::init_node(value);   }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -2169,14 +2169,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   tree with with_this. The tree does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -2290,7 +2290,7 @@
 template<class T, class ...Options>
 #endif
 class avl_multiset
-   :  public make_avl_multiset<T, 
+   :  public make_avl_multiset<T,
    #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
    O1, O2, O3, O4
    #else
@@ -2350,8 +2350,8 @@
 
 #endif
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/avl_set_hook.hpp
==============================================================================
--- trunk/boost/intrusive/avl_set_hook.hpp	(original)
+++ trunk/boost/intrusive/avl_set_hook.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -61,16 +61,16 @@
    typedef implementation_defined type;
 };
 
-//! Derive a class from avl_set_base_hook in order to store objects in 
-//! in an avl_set/avl_multiset. avl_set_base_hook holds the data necessary to maintain 
+//! Derive a class from avl_set_base_hook in order to store objects in
+//! in an avl_set/avl_multiset. avl_set_base_hook holds the data necessary to maintain
 //! the avl_set/avl_multiset and provides an appropriate value_traits class for avl_set/avl_multiset.
-//! 
+//!
 //! The hook admits the following options: \c tag<>, \c void_pointer<>,
 //! \c link_mode<> and \c optimize_size<>.
 //!
-//! \c tag<> defines a tag to identify the node. 
-//! The same tag value can be used in different classes, but if a class is 
-//! derived from more than one \c list_base_hook, then each \c list_base_hook needs its 
+//! \c tag<> defines a tag to identify the node.
+//! The same tag value can be used in different classes, but if a class is
+//! derived from more than one \c list_base_hook, then each \c list_base_hook needs its
 //! unique tag.
 //!
 //! \c void_pointer<> is the pointer type that will be used internally in the hook
@@ -99,27 +99,27 @@
    public:
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    avl_set_base_hook();
 
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    avl_set_base_hook(const avl_set_base_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    avl_set_base_hook& operator=(const avl_set_base_hook& );
@@ -128,37 +128,37 @@
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in a set an assertion is raised. If link_mode is
    //!   \c auto_unlink and \c is_linked() is true, the node is unlinked.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~avl_set_base_hook();
 
-   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements 
-   //!   related to those nodes in one or two containers. That is, if the node 
-   //!   this is part of the element e1, the node x is part of the element e2 
-   //!   and both elements are included in the containers s1 and s2, then after 
-   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1 
-   //!   at the position of e1. If one element is not in a container, then 
-   //!   after the swap-operation the other element is not in a container. 
-   //!   Iterators to e1 and e2 related to those nodes are invalidated. 
+   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements
+   //!   related to those nodes in one or two containers. That is, if the node
+   //!   this is part of the element e1, the node x is part of the element e2
+   //!   and both elements are included in the containers s1 and s2, then after
+   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1
+   //!   at the position of e1. If one element is not in a container, then
+   //!   after the swap-operation the other element is not in a container.
+   //!   Iterators to e1 and e2 related to those nodes are invalidated.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
-   //! <b>Throws</b>: Nothing. 
+   //! <b>Throws</b>: Nothing.
    void swap_nodes(avl_set_base_hook &other);
 
    //! <b>Precondition</b>: link_mode must be \c safe_link or \c auto_unlink.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c set::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c set::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
 
    //! <b>Effects</b>: Removes the node if it's inserted in a container.
    //!   This function is only allowed if link_mode is \c auto_unlink.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    void unlink();
    #endif
 };
@@ -195,7 +195,7 @@
 //! Put a public data member avl_set_member_hook in order to store objects of this class in
 //! an avl_set/avl_multiset. avl_set_member_hook holds the data necessary for maintaining the
 //! avl_set/avl_multiset and provides an appropriate value_traits class for avl_set/avl_multiset.
-//! 
+//!
 //! The hook admits the following options: \c void_pointer<>,
 //! \c link_mode<> and \c optimize_size<>.
 //!
@@ -225,27 +225,27 @@
    public:
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    avl_set_member_hook();
 
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    avl_set_member_hook(const avl_set_member_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    avl_set_member_hook& operator=(const avl_set_member_hook& );
@@ -254,43 +254,43 @@
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in a set an assertion is raised. If link_mode is
    //!   \c auto_unlink and \c is_linked() is true, the node is unlinked.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~avl_set_member_hook();
 
-   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements 
-   //!   related to those nodes in one or two containers. That is, if the node 
-   //!   this is part of the element e1, the node x is part of the element e2 
-   //!   and both elements are included in the containers s1 and s2, then after 
-   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1 
-   //!   at the position of e1. If one element is not in a container, then 
-   //!   after the swap-operation the other element is not in a container. 
-   //!   Iterators to e1 and e2 related to those nodes are invalidated. 
+   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements
+   //!   related to those nodes in one or two containers. That is, if the node
+   //!   this is part of the element e1, the node x is part of the element e2
+   //!   and both elements are included in the containers s1 and s2, then after
+   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1
+   //!   at the position of e1. If one element is not in a container, then
+   //!   after the swap-operation the other element is not in a container.
+   //!   Iterators to e1 and e2 related to those nodes are invalidated.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
-   //! <b>Throws</b>: Nothing. 
+   //! <b>Throws</b>: Nothing.
    void swap_nodes(avl_set_member_hook &other);
 
    //! <b>Precondition</b>: link_mode must be \c safe_link or \c auto_unlink.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c set::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c set::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
 
    //! <b>Effects</b>: Removes the node if it's inserted in a container.
    //!   This function is only allowed if link_mode is \c auto_unlink.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    void unlink();
    #endif
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/avltree.hpp
==============================================================================
--- trunk/boost/intrusive/avltree.hpp	(original)
+++ trunk/boost/intrusive/avltree.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -65,7 +65,7 @@
 
 //! The class template avltree is an intrusive AVL tree container, that
 //! is used to construct intrusive avl_set and avl_multiset containers.
-//! The no-throw guarantee holds only, if the value_compare object 
+//! The no-throw guarantee holds only, if the value_compare object
 //! doesn't throw.
 //!
 //! The template parameter \c T is the type to be managed by the container.
@@ -134,7 +134,7 @@
    //noncopyable, movable
    BOOST_MOVABLE_BUT_NOT_COPYABLE(avltree_impl)
 
-   enum { safemode_or_autounlink  = 
+   enum { safemode_or_autounlink  =
             (int)real_value_traits::link_mode == (int)auto_unlink   ||
             (int)real_value_traits::link_mode == (int)safe_link     };
 
@@ -160,7 +160,7 @@
       {}
       node_plus_pred_t node_plus_pred_;
    } data_;
-  
+ 
    const value_compare &priv_comp() const
    {  return data_.node_plus_pred_.get();  }
 
@@ -212,18 +212,18 @@
 
    typedef typename node_algorithms::insert_commit_data insert_commit_data;
 
-   //! <b>Effects</b>: Constructs an empty tree. 
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //! <b>Effects</b>: Constructs an empty tree.
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
    //!   or the copy constructor of the value_compare object throws. Basic guarantee.
    avltree_impl( const value_compare &cmp = value_compare()
-               , const value_traits &v_traits = value_traits()) 
+               , const value_traits &v_traits = value_traits())
       :  data_(cmp, v_traits)
-   {  
-      node_algorithms::init_header(this->priv_header_ptr());  
+   { 
+      node_algorithms::init_header(this->priv_header_ptr()); 
       this->priv_size_traits().set_size(size_type(0));
    }
 
@@ -235,7 +235,7 @@
    //!
    //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise N * log N, where N is the distance between first and last.
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
    //!   or the copy constructor/operator() of the value_compare object throws. Basic guarantee.
@@ -254,58 +254,58 @@
    }
 
    //! <b>Effects</b>: to-do
-   //!   
+   //!  
    avltree_impl(BOOST_RV_REF(avltree_impl) x)
       : data_(::boost::move(x.priv_comp()), ::boost::move(x.priv_value_traits()))
    {
-      node_algorithms::init_header(this->priv_header_ptr());  
+      node_algorithms::init_header(this->priv_header_ptr()); 
       this->priv_size_traits().set_size(size_type(0));
       this->swap(x);
    }
 
    //! <b>Effects</b>: to-do
-   //!   
-   avltree_impl& operator=(BOOST_RV_REF(avltree_impl) x) 
+   //!  
+   avltree_impl& operator=(BOOST_RV_REF(avltree_impl) x)
    {  this->swap(x); return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the set 
-   //!   are not deleted (i.e. no destructors are called), but the nodes according to 
-   //!   the value_traits template parameter are reinitialized and thus can be reused. 
-   //! 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the set
+   //!   are not deleted (i.e. no destructors are called), but the nodes according to
+   //!   the value_traits template parameter are reinitialized and thus can be reused.
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~avltree_impl() 
+   ~avltree_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    {  return iterator (node_traits::get_left(this->priv_header_ptr()), this);   }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    {  return cbegin();   }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    {  return const_iterator (node_traits::get_left(this->priv_header_ptr()), this);   }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    {  return iterator (this->priv_header_ptr(), this);  }
@@ -313,138 +313,138 @@
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the tree.
    //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    {  return cend();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    {  return const_iterator (uncast(this->priv_header_ptr()), this);  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    {  return reverse_iterator(end());  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    {  return const_reverse_iterator(end());  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    {  return const_reverse_iterator(end());  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    {  return reverse_iterator(begin());   }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    {  return const_reverse_iterator(begin());   }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    {  return const_reverse_iterator(begin());   }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of avltree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the avltree associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static avltree_impl &container_from_end_iterator(iterator end_iterator)
    {  return priv_container_from_end_iterator(end_iterator);   }
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of avltree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the avltree associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const avltree_impl &container_from_end_iterator(const_iterator end_iterator)
    {  return priv_container_from_end_iterator(end_iterator);   }
 
    //! <b>Precondition</b>: it must be a valid iterator
    //!   of rbtree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the tree associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static avltree_impl &container_from_iterator(iterator it)
    {  return priv_container_from_iterator(it);   }
 
    //! <b>Precondition</b>: it must be a valid end const_iterator
    //!   of rbtree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the tree associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static const avltree_impl &container_from_iterator(const_iterator it)
    {  return priv_container_from_iterator(it);   }
 
    //! <b>Effects</b>: Returns the value_compare object used by the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    {  return priv_comp();   }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    {  return node_algorithms::unique(this->priv_header_ptr());   }
 
    //! <b>Effects</b>: Returns the number of elements stored in the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this
    //!   if constant-time size option is disabled. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    {
@@ -456,9 +456,9 @@
    }
 
    //! <b>Effects</b>: Swaps the contents of two avltrees.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the comparison functor's swap call throws.
    void swap(avltree_impl& other)
    {
@@ -475,14 +475,14 @@
    }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the tree before the upper bound.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_equal(reference value)
@@ -500,16 +500,16 @@
 
    //! <b>Requires</b>: value must be an lvalue, and "hint" must be
    //!   a valid iterator.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts x into the tree, using "hint" as a hint to
    //!   where it will be inserted. If "hint" is the upper_bound
    //!   the insertion takes constant time (two comparisons in the worst case)
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_equal(const_iterator hint, reference value)
@@ -525,18 +525,18 @@
       return ret;
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a each element of a range into the tree
    //!   before the upper bound of the key of each element.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -548,15 +548,15 @@
    }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the tree if the value
    //!   is not already present.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    std::pair<iterator, bool> insert_unique(reference value)
@@ -570,16 +570,16 @@
 
    //! <b>Requires</b>: value must be an lvalue, and "hint" must be
    //!   a valid iterator
-   //! 
+   //!
    //! <b>Effects</b>: Tries to insert x into the tree, using "hint" as a hint
    //!   to where it will be inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time (two comparisons in the worst case)
    //!   if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_unique(const_iterator hint, reference value)
@@ -591,17 +591,17 @@
       return insert_unique_commit(value, commit_data);
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Tries to insert each element of a range into the tree.
-   //! 
-   //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the 
-   //!   size of the range. However, it is linear in N if the range is already sorted 
+   //!
+   //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
+   //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -618,10 +618,10 @@
       }
    }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the container, using
    //!   a user provided key instead of the value itself.
    //!
@@ -630,16 +630,16 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   node that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that 
+   //!   than the value_type and this function offers the possibility to use that
    //!   part to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
@@ -654,18 +654,18 @@
    {
       detail::key_nodeptr_comp<KeyValueCompare, avltree_impl>
          comp(key_value_comp, this);
-      std::pair<node_ptr, bool> ret = 
+      std::pair<node_ptr, bool> ret =
          (node_algorithms::insert_unique_check
             (this->priv_header_ptr(), key, comp, commit_data));
       return std::pair<iterator, bool>(iterator(ret.first, this), ret.second);
    }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the container, using
-   //!   a user provided key instead of the value itself, using "hint" 
+   //!   a user provided key instead of the value itself, using "hint"
    //!   as a hint to where it will be inserted.
    //!
    //! <b>Returns</b>: If there is an equivalent value
@@ -673,23 +673,23 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   constructing that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that key 
+   //!   than the value_type and this function offers the possibility to use that key
    //!   to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
    //!   "insert_commit" to insert the object in constant-time. This can give a total
    //!   constant-time complexity to the insertion: check(O(1)) + commit(O(1)).
-   //!   
+   //!  
    //!   "commit_data" remains valid for a subsequent "insert_commit" only if no more
    //!   objects are inserted or erased from the container.
    template<class KeyType, class KeyValueCompare>
@@ -699,7 +699,7 @@
    {
       detail::key_nodeptr_comp<KeyValueCompare, avltree_impl>
          comp(key_value_comp, this);
-      std::pair<node_ptr, bool> ret = 
+      std::pair<node_ptr, bool> ret =
          (node_algorithms::insert_unique_check
             (this->priv_header_ptr(), hint.pointed_node(), key, comp, commit_data));
       return std::pair<iterator, bool>(iterator(ret.first, this), ret.second);
@@ -709,16 +709,16 @@
    //!   must have been obtained from a previous call to "insert_check".
    //!   No objects should have been inserted or erased from the container between
    //!   the "insert_check" that filled "commit_data" and the call to "insert_commit".
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the avl_set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Returns</b>: An iterator to the newly inserted object.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
@@ -738,11 +738,11 @@
    //!   once inserted according to the predicate
    //!
    //! <b>Effects</b>: Inserts x into the tree before "pos".
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if "pos" is not
    //! the successor of "value" tree ordering invariant will be broken.
    //! This is a low-level function to be used only for performance reasons
@@ -762,11 +762,11 @@
    //!   than the greatest inserted key
    //!
    //! <b>Effects</b>: Inserts x into the tree in the last position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   less than the greatest inserted key tree ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -785,11 +785,11 @@
    //!   than the minimum inserted key
    //!
    //! <b>Effects</b>: Inserts x into the tree in the first position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   greater than the minimum inserted key tree ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -804,12 +804,12 @@
       this->priv_size_traits().increment();
    }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
@@ -826,26 +826,26 @@
       return ret.unconst();
    }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, const_iterator e)
    {  size_type n;   return private_erase(b, e, n);   }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -855,11 +855,11 @@
    //!   according to the comparison functor "comp".
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
@@ -877,14 +877,14 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -905,12 +905,12 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -921,13 +921,13 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -946,11 +946,11 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -966,13 +966,13 @@
       return n;
    }
 
-   //! <b>Effects</b>: Erases all of the elements. 
-   //! 
+   //! <b>Effects</b>: Erases all of the elements.
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
@@ -990,9 +990,9 @@
    //!   each node to be erased.
    //! <b>Complexity</b>: Average complexity for is at most O(log(size() + N)),
    //!   where N is the number of elements in the container.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. Calls N times to disposer functor.
    template<class Disposer>
@@ -1005,19 +1005,19 @@
    }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given value
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given value.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type count(const_reference value) const
    {  return this->count(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType &key, KeyValueCompare comp) const
@@ -1028,27 +1028,27 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator lower_bound(const_reference value)
    {  return this->lower_bound(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator lower_bound(const_reference value) const
    {  return this->lower_bound(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator lower_bound(const KeyType &key, KeyValueCompare comp)
@@ -1061,9 +1061,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator lower_bound(const KeyType &key, KeyValueCompare comp) const
@@ -1076,9 +1076,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator upper_bound(const_reference value)
    {  return this->upper_bound(value, priv_comp());   }
@@ -1088,7 +1088,7 @@
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator upper_bound(const KeyType &key, KeyValueCompare comp)
@@ -1101,9 +1101,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator upper_bound(const_reference value) const
    {  return this->upper_bound(value, priv_comp());   }
@@ -1113,7 +1113,7 @@
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator upper_bound(const KeyType &key, KeyValueCompare comp) const
@@ -1124,20 +1124,20 @@
          (this->priv_header_ptr(), key, key_node_comp), this);
    }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   k or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator find(const_reference value)
    {  return this->find(value, priv_comp()); }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   k or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator find(const KeyType &key, KeyValueCompare comp)
@@ -1148,20 +1148,20 @@
          (node_algorithms::find(this->priv_header_ptr(), key, key_node_comp), this);
    }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
    //!   k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator find(const_reference value) const
    {  return this->find(value, priv_comp()); }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
    //!   k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator find(const KeyType &key, KeyValueCompare comp) const
@@ -1175,9 +1175,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return this->equal_range(value, priv_comp());   }
@@ -1185,9 +1185,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    std::pair<iterator,iterator> equal_range(const KeyType &key, KeyValueCompare comp)
@@ -1202,9 +1202,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
@@ -1213,9 +1213,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    std::pair<const_iterator, const_iterator>
@@ -1232,15 +1232,15 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const avltree_impl &src, Cloner cloner, Disposer disposer)
@@ -1261,11 +1261,11 @@
    }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -1284,14 +1284,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   tree with with_this. The tree does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -1307,14 +1307,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -1325,17 +1325,17 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
-   static const_iterator s_iterator_to(const_reference value) 
+   static const_iterator s_iterator_to(const_reference value)
    {
       BOOST_STATIC_ASSERT((!stateful_value_traits));
       return const_iterator (value_traits::to_node_ptr(const_cast<reference> (value)), 0);
@@ -1343,37 +1343,37 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return iterator (value_traits::to_node_ptr(value), this); }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return const_iterator (value_traits::to_node_ptr(const_cast<reference> (value)), this); }
 
    //! <b>Requires</b>: value shall not be in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
@@ -1381,12 +1381,12 @@
 
 /*
    //! <b>Effects</b>: removes x from a tree of the appropriate type. It has no effect,
-   //! if x is not in such a tree. 
-   //! 
+   //! if x is not in such a tree.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This static function is only usable with the "safe mode"
    //! hook and non-constant time size lists. Otherwise, the user must use
    //! the non-static "erase(reference )" member. If the user calls
@@ -1396,7 +1396,7 @@
    static void remove_node(T& value)
    {
       //This function is only usable for safe mode hooks and non-constant
-      //time lists. 
+      //time lists.
       //BOOST_STATIC_ASSERT((!(safemode_or_autounlink && constant_time_size)));
       BOOST_STATIC_ASSERT((!constant_time_size));
       BOOST_STATIC_ASSERT((boost::is_convertible<T, value_type>::value));
@@ -1680,8 +1680,8 @@
 #endif
 
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/avltree_algorithms.hpp
==============================================================================
--- trunk/boost/intrusive/avltree_algorithms.hpp	(original)
+++ trunk/boost/intrusive/avltree_algorithms.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -45,25 +45,25 @@
 //! <b>Static functions</b>:
 //!
 //! <tt>static node_ptr get_parent(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_parent(node_ptr n, node_ptr parent);</tt>
 //!
 //! <tt>static node_ptr get_left(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_left(node_ptr n, node_ptr left);</tt>
 //!
 //! <tt>static node_ptr get_right(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_right(node_ptr n, node_ptr right);</tt>
-//! 
+//!
 //! <tt>static balance get_balance(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_balance(node_ptr n, balance b);</tt>
-//! 
+//!
 //! <tt>static balance negative();</tt>
-//! 
+//!
 //! <tt>static balance zero();</tt>
-//! 
+//!
 //! <tt>static balance positive();</tt>
 template<class NodeTraits>
 class avltree_algorithms
@@ -88,7 +88,7 @@
       avltree_node_cloner(F f)
          :  base_t(f)
       {}
-      
+     
       node_ptr operator()(const node_ptr &p)
       {
          node_ptr n = base_t::get()(p);
@@ -120,27 +120,27 @@
 
    //! <b>Requires</b>: header1 and header2 must be the header nodes
    //!  of two trees.
-   //! 
-   //! <b>Effects</b>: Swaps two trees. After the function header1 will contain 
+   //!
+   //! <b>Effects</b>: Swaps two trees. After the function header1 will contain
    //!   links to the second tree and header2 will have links to the first tree.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
    static void swap_tree(const node_ptr & header1, const node_ptr & header2)
    {  return tree_algorithms::swap_tree(header1, header2);  }
 
    //! <b>Requires</b>: node1 and node2 can't be header nodes
    //!  of two trees.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps two nodes. After the function node1 will be inserted
    //!   in the position node2 before the function. node2 will be inserted in the
    //!   position node1 had before the function.
-   //! 
-   //! <b>Complexity</b>: Logarithmic. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Logarithmic.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   node1 and node2 are not equivalent according to the ordering rules.
    //!
@@ -149,22 +149,22 @@
    {
       if(node1 == node2)
          return;
-   
+  
       node_ptr header1(tree_algorithms::get_header(node1)), header2(tree_algorithms::get_header(node2));
       swap_nodes(node1, header1, node2, header2);
    }
 
    //! <b>Requires</b>: node1 and node2 can't be header nodes
    //!  of two trees with header header1 and header2.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps two nodes. After the function node1 will be inserted
    //!   in the position node2 before the function. node2 will be inserted in the
    //!   position node1 had before the function.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   node1 and node2 are not equivalent according to the ordering rules.
    //!
@@ -176,20 +176,20 @@
       tree_algorithms::swap_nodes(node1, header1, node2, header2);
       //Swap balance
       balance c = NodeTraits::get_balance(node1);
-      NodeTraits::set_balance(node1, NodeTraits::get_balance(node2)); 
-      NodeTraits::set_balance(node2, c); 
+      NodeTraits::set_balance(node1, NodeTraits::get_balance(node2));
+      NodeTraits::set_balance(node2, c);
    }
 
    //! <b>Requires</b>: node_to_be_replaced must be inserted in a tree
    //!   and new_node must not be inserted in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces node_to_be_replaced in its position in the
    //!   tree with new_node. The tree does not need to be rebalanced
-   //! 
-   //! <b>Complexity</b>: Logarithmic. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Logarithmic.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   new_node is not equivalent to node_to_be_replaced according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -205,14 +205,14 @@
 
    //! <b>Requires</b>: node_to_be_replaced must be inserted in a tree
    //!   with header "header" and new_node must not be inserted in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces node_to_be_replaced in its position in the
    //!   tree with new_node. The tree does not need to be rebalanced
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   new_node is not equivalent to node_to_be_replaced according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -222,15 +222,15 @@
    static void replace_node(const node_ptr & node_to_be_replaced, const node_ptr & header, const node_ptr & new_node)
    {
       tree_algorithms::replace_node(node_to_be_replaced, header, new_node);
-      NodeTraits::set_balance(new_node, NodeTraits::get_balance(node_to_be_replaced)); 
+      NodeTraits::set_balance(new_node, NodeTraits::get_balance(node_to_be_replaced));
    }
 
    //! <b>Requires</b>: node is a tree node but not the header.
-   //! 
+   //!
    //! <b>Effects</b>: Unlinks the node and rebalances the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static void unlink(const node_ptr & node)
    {
@@ -243,14 +243,14 @@
    }
 
    //! <b>Requires</b>: header is the header of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Unlinks the leftmost node from the tree, and
    //!   updates the header link to the new leftmost node.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -260,51 +260,51 @@
 
    //! <b>Requires</b>: node is a node of the tree or an node initialized
    //!   by init(...).
-   //! 
+   //!
    //! <b>Effects</b>: Returns true if the node is initialized by init().
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool unique(const const_node_ptr & node)
    {  return tree_algorithms::unique(node);  }
 
    //! <b>Requires</b>: node is a node of the tree but it's not the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes of the subtree.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static std::size_t count(const const_node_ptr & node)
    {  return tree_algorithms::count(node);   }
 
    //! <b>Requires</b>: header is the header node of the tree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes above the header.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static std::size_t size(const const_node_ptr & header)
    {  return tree_algorithms::size(header);   }
 
    //! <b>Requires</b>: p is a node from the tree except the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the next node of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr next_node(const node_ptr & p)
    {  return tree_algorithms::next_node(p); }
 
    //! <b>Requires</b>: p is a node from the tree except the leftmost node.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the previous node of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr prev_node(const node_ptr & p)
    {  return tree_algorithms::prev_node(p); }
@@ -312,9 +312,9 @@
    //! <b>Requires</b>: node must not be part of any tree.
    //!
    //! <b>Effects</b>: After the function unique(node) == true.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
@@ -325,25 +325,25 @@
    //!
    //! <b>Effects</b>: Initializes the header to represent an empty tree.
    //!   unique(header) == true.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
    static void init_header(const node_ptr & header)
    {
       tree_algorithms::init_header(header);
-      NodeTraits::set_balance(header, NodeTraits::zero()); 
+      NodeTraits::set_balance(header, NodeTraits::zero());
    }
 
    //! <b>Requires</b>: header must be the header of a tree, z a node
    //!    of that tree and z != header.
    //!
    //! <b>Effects</b>: Erases node "z" from the tree with header "header".
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr erase(const node_ptr & header, const node_ptr & z)
    {
@@ -361,18 +361,18 @@
    //!   object taking a node_ptr and returning a new cloned node of it. "disposer" must
    //!   take a node_ptr and shouldn't throw.
    //!
-   //! <b>Effects</b>: First empties target tree calling 
+   //! <b>Effects</b>: First empties target tree calling
    //!   <tt>void disposer::operator()(const node_ptr &)</tt> for every node of the tree
    //!    except the header.
-   //!    
+   //!   
    //!   Then, duplicates the entire tree pointed by "source_header" cloning each
-   //!   source node with <tt>node_ptr Cloner::operator()(const node_ptr &)</tt> to obtain 
+   //!   source node with <tt>node_ptr Cloner::operator()(const node_ptr &)</tt> to obtain
    //!   the nodes of the target tree. If "cloner" throws, the cloned target nodes
    //!   are disposed using <tt>void disposer(const node_ptr &)</tt>.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of element of the source tree plus the.
    //!   number of elements of tree target tree when calling this function.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner functor throws. If this happens target nodes are disposed.
    template <class Cloner, class Disposer>
    static void clone
@@ -385,13 +385,13 @@
    //! <b>Requires</b>: "disposer" must be an object function
    //!   taking a node_ptr parameter and shouldn't throw.
    //!
-   //! <b>Effects</b>: Empties the target tree calling 
+   //! <b>Effects</b>: Empties the target tree calling
    //!   <tt>void disposer::operator()(const node_ptr &)</tt> for every node of the tree
    //!    except the header.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of element of the source tree plus the.
    //!   number of elements of tree target tree when calling this function.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner functor throws. If this happens target nodes are disposed.
    template<class Disposer>
    static void clear_and_dispose(const node_ptr & header, Disposer disposer)
@@ -407,7 +407,7 @@
    //!   not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr lower_bound
@@ -423,7 +423,7 @@
    //!   than "key" according to "comp" or "header" if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr upper_bound
@@ -439,7 +439,7 @@
    //!   "key" according to "comp" or "header" if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr find
@@ -457,7 +457,7 @@
    //!   if they there are no equivalent elements.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static std::pair<node_ptr, node_ptr> equal_range
@@ -471,10 +471,10 @@
    //!
    //! <b>Effects</b>: Inserts new_node into the tree before the upper bound
    //!   according to "comp".
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class NodePtrCompare>
    static node_ptr insert_equal_upper_bound
@@ -492,10 +492,10 @@
    //!
    //! <b>Effects</b>: Inserts new_node into the tree before the lower bound
    //!   according to "comp".
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class NodePtrCompare>
    static node_ptr insert_equal_lower_bound
@@ -511,14 +511,14 @@
    //!   ordering compatible with the strict weak ordering used to create the
    //!   the tree. NodePtrCompare compares two node_ptrs. "hint" is node from
    //!   the "header"'s tree.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree, using "hint" as a hint to
    //!   where it will be inserted. If "hint" is the upper_bound
    //!   the insertion takes constant time (two comparisons in the worst case).
    //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time if new_node is inserted immediately before "hint".
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class NodePtrCompare>
    static node_ptr insert_equal
@@ -534,13 +534,13 @@
    //!   "pos" must be an iterator pointing to the successor to "new_node"
    //!   once inserted according to the order of already inserted nodes. This function does not
    //!   check "pos" and this precondition must be guaranteed by the caller.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree before "pos".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: If "pos" is not the successor of the newly inserted "new_node"
    //! tree invariants might be broken.
    static node_ptr insert_before
@@ -554,13 +554,13 @@
    //! <b>Requires</b>: "header" must be the header node of a tree.
    //!   "new_node" must be, according to the used ordering no less than the
    //!   greatest inserted key.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree before "pos".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: If "new_node" is less than the greatest inserted key
    //! tree invariants are broken. This function is slightly faster than
    //! using "insert_before".
@@ -573,13 +573,13 @@
    //! <b>Requires</b>: "header" must be the header node of a tree.
    //!   "new_node" must be, according to the used ordering, no greater than the
    //!   lowest inserted key.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree before "pos".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: If "new_node" is greater than the lowest inserted key
    //! tree invariants are broken. This function is slightly faster than
    //! using "insert_before".
@@ -593,7 +593,7 @@
    //!   KeyNodePtrCompare is a function object that induces a strict weak
    //!   ordering compatible with the strict weak ordering used to create the
    //!   the tree. NodePtrCompare compares KeyType with a node_ptr.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if there is an equivalent node to "key" in the
    //!   tree according to "comp" and obtains the needed information to realize
    //!   a constant-time node insertion if there is no equivalent node.
@@ -604,11 +604,11 @@
    //!   in the returned pair's boolean and fills "commit_data" that is meant to
    //!   be used with the "insert_commit" function to achieve a constant-time
    //!   insertion function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If "comp" throws.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a node is expensive and the user does not want to have two equivalent nodes
    //!   in the tree: if there is an equivalent value
@@ -634,12 +634,12 @@
    //!   ordering compatible with the strict weak ordering used to create the
    //!   the tree. NodePtrCompare compares KeyType with a node_ptr.
    //!   "hint" is node from the "header"'s tree.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if there is an equivalent node to "key" in the
    //!   tree according to "comp" using "hint" as a hint to where it should be
    //!   inserted and obtains the needed information to realize
-   //!   a constant-time node insertion if there is no equivalent node. 
-   //!   If "hint" is the upper_bound the function has constant time 
+   //!   a constant-time node insertion if there is no equivalent node.
+   //!   If "hint" is the upper_bound the function has constant time
    //!   complexity (two comparisons in the worst case).
    //!
    //! <b>Returns</b>: If there is an equivalent value
@@ -648,12 +648,12 @@
    //!   in the returned pair's boolean and fills "commit_data" that is meant to
    //!   be used with the "insert_commit" function to achieve a constant-time
    //!   insertion function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic, but it is
    //!   amortized constant time if new_node should be inserted immediately before "hint".
    //!
    //! <b>Throws</b>: If "comp" throws.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a node is expensive and the user does not want to have two equivalent nodes
    //!   in the tree: if there is an equivalent value
@@ -678,16 +678,16 @@
    //!   "commit_data" must have been obtained from a previous call to
    //!   "insert_unique_check". No objects should have been inserted or erased
    //!   from the set between the "insert_unique_check" that filled "commit_data"
-   //!   and the call to "insert_commit". 
-   //! 
-   //! 
+   //!   and the call to "insert_commit".
+   //!
+   //!
    //! <b>Effects</b>: Inserts new_node in the set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_unique_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
@@ -703,7 +703,7 @@
    //! <b>Effects</b>: Returns a pointer to the header node of the tree.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr get_header(const node_ptr & n)
    {  return tree_algorithms::get_header(n);   }
@@ -712,11 +712,11 @@
    private:
 
    //! <b>Requires</b>: p is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns true if p is the header of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool is_header(const const_node_ptr & p)
    {  return NodeTraits::get_balance(p) == NodeTraits::zero() && tree_algorithms::is_header(p);  }
@@ -727,7 +727,7 @@
       for (node_ptr root = NodeTraits::get_parent(header); x != root; root = NodeTraits::get_parent(header)) {
          const balance x_parent_balance = NodeTraits::get_balance(x_parent);
          if(x_parent_balance == NodeTraits::zero()){
-            NodeTraits::set_balance(x_parent, 
+            NodeTraits::set_balance(x_parent,
                (x == NodeTraits::get_right(x_parent) ? NodeTraits::negative() : NodeTraits::positive()));
             break;       // the height didn't change, let's stop here
          }
@@ -935,8 +935,8 @@
    /// @endcond
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/bs_set_hook.hpp
==============================================================================
--- trunk/boost/intrusive/bs_set_hook.hpp	(original)
+++ trunk/boost/intrusive/bs_set_hook.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -63,16 +63,16 @@
    typedef implementation_defined type;
 };
 
-//! Derive a class from bs_set_base_hook in order to store objects in 
-//! in a bs_set/bs_multiset. bs_set_base_hook holds the data necessary to maintain 
+//! Derive a class from bs_set_base_hook in order to store objects in
+//! in a bs_set/bs_multiset. bs_set_base_hook holds the data necessary to maintain
 //! the bs_set/bs_multiset and provides an appropriate value_traits class for bs_set/bs_multiset.
-//! 
+//!
 //! The hook admits the following options: \c tag<>, \c void_pointer<>,
 //! \c link_mode<>.
 //!
-//! \c tag<> defines a tag to identify the node. 
-//! The same tag value can be used in different classes, but if a class is 
-//! derived from more than one \c list_base_hook, then each \c list_base_hook needs its 
+//! \c tag<> defines a tag to identify the node.
+//! The same tag value can be used in different classes, but if a class is
+//! derived from more than one \c list_base_hook, then each \c list_base_hook needs its
 //! unique tag.
 //!
 //! \c void_pointer<> is the pointer type that will be used internally in the hook
@@ -99,27 +99,27 @@
    public:
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    bs_set_base_hook();
 
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    bs_set_base_hook(const bs_set_base_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    bs_set_base_hook& operator=(const bs_set_base_hook& );
@@ -128,37 +128,37 @@
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in a set an assertion is raised. If link_mode is
    //!   \c auto_unlink and \c is_linked() is true, the node is unlinked.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~bs_set_base_hook();
 
-   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements 
-   //!   related to those nodes in one or two containers. That is, if the node 
-   //!   this is part of the element e1, the node x is part of the element e2 
-   //!   and both elements are included in the containers s1 and s2, then after 
-   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1 
-   //!   at the position of e1. If one element is not in a container, then 
-   //!   after the swap-operation the other element is not in a container. 
-   //!   Iterators to e1 and e2 related to those nodes are invalidated. 
+   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements
+   //!   related to those nodes in one or two containers. That is, if the node
+   //!   this is part of the element e1, the node x is part of the element e2
+   //!   and both elements are included in the containers s1 and s2, then after
+   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1
+   //!   at the position of e1. If one element is not in a container, then
+   //!   after the swap-operation the other element is not in a container.
+   //!   Iterators to e1 and e2 related to those nodes are invalidated.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
-   //! <b>Throws</b>: Nothing. 
+   //! <b>Throws</b>: Nothing.
    void swap_nodes(bs_set_base_hook &other);
 
    //! <b>Precondition</b>: link_mode must be \c safe_link or \c auto_unlink.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c set::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c set::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
 
    //! <b>Effects</b>: Removes the node if it's inserted in a container.
    //!   This function is only allowed if link_mode is \c auto_unlink.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    void unlink();
    #endif
 };
@@ -198,7 +198,7 @@
 //! Put a public data member bs_set_member_hook in order to store objects of this class in
 //! a bs_set/bs_multiset. bs_set_member_hook holds the data necessary for maintaining the
 //! bs_set/bs_multiset and provides an appropriate value_traits class for bs_set/bs_multiset.
-//! 
+//!
 //! The hook admits the following options: \c void_pointer<>, \c link_mode<>.
 //!
 //! \c void_pointer<> is the pointer type that will be used internally in the hook
@@ -224,27 +224,27 @@
    public:
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    bs_set_member_hook();
 
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    bs_set_member_hook(const bs_set_member_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    bs_set_member_hook& operator=(const bs_set_member_hook& );
@@ -253,43 +253,43 @@
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in a set an assertion is raised. If link_mode is
    //!   \c auto_unlink and \c is_linked() is true, the node is unlinked.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~bs_set_member_hook();
 
-   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements 
-   //!   related to those nodes in one or two containers. That is, if the node 
-   //!   this is part of the element e1, the node x is part of the element e2 
-   //!   and both elements are included in the containers s1 and s2, then after 
-   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1 
-   //!   at the position of e1. If one element is not in a container, then 
-   //!   after the swap-operation the other element is not in a container. 
-   //!   Iterators to e1 and e2 related to those nodes are invalidated. 
+   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements
+   //!   related to those nodes in one or two containers. That is, if the node
+   //!   this is part of the element e1, the node x is part of the element e2
+   //!   and both elements are included in the containers s1 and s2, then after
+   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1
+   //!   at the position of e1. If one element is not in a container, then
+   //!   after the swap-operation the other element is not in a container.
+   //!   Iterators to e1 and e2 related to those nodes are invalidated.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
-   //! <b>Throws</b>: Nothing. 
+   //! <b>Throws</b>: Nothing.
    void swap_nodes(bs_set_member_hook &other);
 
    //! <b>Precondition</b>: link_mode must be \c safe_link or \c auto_unlink.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c set::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c set::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
 
    //! <b>Effects</b>: Removes the node if it's inserted in a container.
    //!   This function is only allowed if link_mode is \c auto_unlink.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    void unlink();
    #endif
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/circular_list_algorithms.hpp
==============================================================================
--- trunk/boost/intrusive/circular_list_algorithms.hpp	(original)
+++ trunk/boost/intrusive/circular_list_algorithms.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -40,11 +40,11 @@
 //! <b>Static functions</b>:
 //!
 //! <tt>static node_ptr get_previous(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_previous(node_ptr n, node_ptr prev);</tt>
-//! 
+//!
 //! <tt>static node_ptr get_next(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_next(node_ptr n, node_ptr next);</tt>
 template<class NodeTraits>
 class circular_list_algorithms
@@ -57,9 +57,9 @@
 
    //! <b>Effects</b>: Constructs an non-used list element, so that
    //! inited(this_node) == true
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void init(const node_ptr &this_node)
    {
@@ -69,20 +69,20 @@
 
    //! <b>Effects</b>: Returns true is "this_node" is in a non-used state
    //! as if it was initialized by the "init" function.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
-   static bool inited(const const_node_ptr &this_node)  
+   static bool inited(const const_node_ptr &this_node) 
    {  return !NodeTraits::get_next(this_node); }
 
    //! <b>Effects</b>: Constructs an empty list, making this_node the only
    //!   node of the circular list:
    //!  <tt>NodeTraits::get_next(this_node) == NodeTraits::get_previous(this_node)
    //!  == this_node</tt>.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void init_header(const node_ptr &this_node)
    {
@@ -92,12 +92,12 @@
 
 
    //! <b>Requires</b>: this_node must be in a circular list or be an empty circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Returns true is "this_node" is the only node of a circular list:
    //!  <tt>return NodeTraits::get_next(this_node) == this_node</tt>
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static bool unique(const const_node_ptr &this_node)
    {
@@ -106,14 +106,14 @@
    }
 
    //! <b>Requires</b>: this_node must be in a circular list or be an empty circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes in a circular list. If the circular list
    //!  is empty, returns 1.
-   //! 
-   //! <b>Complexity</b>: Linear 
-   //! 
+   //!
+   //! <b>Complexity</b>: Linear
+   //!
    //! <b>Throws</b>: Nothing.
-   static std::size_t count(const const_node_ptr &this_node) 
+   static std::size_t count(const const_node_ptr &this_node)
    {
       std::size_t result = 0;
       const_node_ptr p = this_node;
@@ -125,11 +125,11 @@
    }
 
    //! <b>Requires</b>: this_node must be in a circular list or be an empty circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Unlinks the node from the circular list.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr unlink(const node_ptr &this_node)
    {
@@ -146,11 +146,11 @@
    }
 
    //! <b>Requires</b>: b and e must be nodes of the same circular list or an empty range.
-   //! 
+   //!
    //! <b>Effects</b>: Unlinks the node [b, e) from the circular list.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void unlink(const node_ptr &b, const node_ptr &e)
    {
@@ -162,11 +162,11 @@
    }
 
    //! <b>Requires</b>: nxt_node must be a node of a circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Links this_node before nxt_node in the circular list.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void link_before(const node_ptr &nxt_node, const node_ptr &this_node)
    {
@@ -181,11 +181,11 @@
    }
 
    //! <b>Requires</b>: prev_node must be a node of a circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Links this_node after prev_node in the circular list.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void link_after(const node_ptr &prev_node, const node_ptr &this_node)
    {
@@ -201,13 +201,13 @@
 
    //! <b>Requires</b>: this_node and other_node must be nodes inserted
    //!  in circular lists or be empty circular lists.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps the position of the nodes: this_node is inserted in
    //!   other_nodes position in the second circular list and the other_node is inserted
    //!   in this_node's position in the first circular list.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
 /*
    static void swap_nodes(const node_ptr &this_node, const node_ptr &other_node)
@@ -248,22 +248,22 @@
 */
 
    //Watanabe version
-   private: 
-   static void swap_prev(const node_ptr &this_node, const node_ptr &other_node) 
-   { 
-      node_ptr temp(NodeTraits::get_previous(this_node)); 
-      NodeTraits::set_previous(this_node, NodeTraits::get_previous(other_node)); 
-      NodeTraits::set_previous(other_node, temp); 
-   } 
-   static void swap_next(const node_ptr &this_node, const node_ptr &other_node) 
-   { 
-      node_ptr temp(NodeTraits::get_next(this_node)); 
-      NodeTraits::set_next(this_node, NodeTraits::get_next(other_node)); 
-      NodeTraits::set_next(other_node, temp); 
-   } 
+   private:
+   static void swap_prev(const node_ptr &this_node, const node_ptr &other_node)
+   {
+      node_ptr temp(NodeTraits::get_previous(this_node));
+      NodeTraits::set_previous(this_node, NodeTraits::get_previous(other_node));
+      NodeTraits::set_previous(other_node, temp);
+   }
+   static void swap_next(const node_ptr &this_node, const node_ptr &other_node)
+   {
+      node_ptr temp(NodeTraits::get_next(this_node));
+      NodeTraits::set_next(this_node, NodeTraits::get_next(other_node));
+      NodeTraits::set_next(other_node, temp);
+   }
 
-   public: 
-   static void swap_nodes(const node_ptr &this_node, const node_ptr &other_node) 
+   public:
+   static void swap_nodes(const node_ptr &this_node, const node_ptr &other_node)
    {
       if (other_node == this_node)
          return;
@@ -276,15 +276,15 @@
          init_header(other_node);
       }
 
-      node_ptr next_this(NodeTraits::get_next(this_node)); 
-      node_ptr prev_this(NodeTraits::get_previous(this_node)); 
-      node_ptr next_other(NodeTraits::get_next(other_node)); 
-      node_ptr prev_other(NodeTraits::get_previous(other_node)); 
-      //these first two swaps must happen before the other two 
-      swap_prev(next_this, next_other); 
-      swap_next(prev_this, prev_other); 
-      swap_next(this_node, other_node); 
-      swap_prev(this_node, other_node); 
+      node_ptr next_this(NodeTraits::get_next(this_node));
+      node_ptr prev_this(NodeTraits::get_previous(this_node));
+      node_ptr next_other(NodeTraits::get_next(other_node));
+      node_ptr prev_other(NodeTraits::get_previous(other_node));
+      //these first two swaps must happen before the other two
+      swap_prev(next_this, next_other);
+      swap_next(prev_this, prev_other);
+      swap_next(this_node, other_node);
+      swap_prev(this_node, other_node);
 
       if(this_inited){
          init(other_node);
@@ -295,14 +295,14 @@
    }
 
    //! <b>Requires</b>: b and e must be nodes of the same circular list or an empty range.
-   //!   and p must be a node of a different circular list or may not be an iterator in 
+   //!   and p must be a node of a different circular list or may not be an iterator in
    //    [b, e).
-   //! 
+   //!
    //! <b>Effects</b>: Removes the nodes from [b, e) range from their circular list and inserts
    //!   them before p in p's circular list.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void transfer(const node_ptr &p, const node_ptr &b, const node_ptr &e)
    {
@@ -321,13 +321,13 @@
 
    //! <b>Requires</b>: i must a node of a circular list
    //!   and p must be a node of a different circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Removes the node i from its circular list and inserts
-   //!   it before p in p's circular list. 
+   //!   it before p in p's circular list.
    //!   If p == i or p == NodeTraits::get_next(i), this function is a null operation.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void transfer(const node_ptr &p, const node_ptr &i)
    {
@@ -345,16 +345,16 @@
       }
    }
 
-   //! <b>Effects</b>: Reverses the order of elements in the list. 
-   //! 
+   //! <b>Effects</b>: Reverses the order of elements in the list.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: This function is linear time.
    static void reverse(const node_ptr &p)
    {
       node_ptr f(NodeTraits::get_next(p));
       node_ptr i(NodeTraits::get_next(f)), e(p);
-      
+     
       while(i != e) {
          node_ptr n = i;
          i = NodeTraits::get_next(i);
@@ -364,9 +364,9 @@
    }
 
    //! <b>Effects</b>: Moves the node p n positions towards the end of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of moved positions.
    static void move_backwards(const node_ptr &p, std::size_t n)
    {
@@ -384,9 +384,9 @@
    }
 
    //! <b>Effects</b>: Moves the node p n positions towards the beginning of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of moved positions.
    static void move_forward(const node_ptr &p, std::size_t n)
    {
@@ -405,8 +405,8 @@
    }
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/circular_slist_algorithms.hpp
==============================================================================
--- trunk/boost/intrusive/circular_slist_algorithms.hpp	(original)
+++ trunk/boost/intrusive/circular_slist_algorithms.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -42,7 +42,7 @@
 //! <b>Static functions</b>:
 //!
 //! <tt>static node_ptr get_next(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_next(node_ptr n, node_ptr next);</tt>
 template<class NodeTraits>
 class circular_slist_algorithms
@@ -64,37 +64,37 @@
    //! <b>Effects</b>: Constructs an non-used list element, putting the next
    //!   pointer to null:
    //!  <tt>NodeTraits::get_next(this_node) == node_ptr()</tt>
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void init(node_ptr this_node);
 
    //! <b>Requires</b>: this_node must be in a circular list or be an empty circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Returns true is "this_node" is the only node of a circular list:
    //!  or it's a not inserted node:
    //!  <tt>return node_ptr() == NodeTraits::get_next(this_node) || NodeTraits::get_next(this_node) == this_node</tt>
-   //! 
+   //!
    //! <b>Complexity</b>: Constant
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool unique(const_node_ptr this_node);
 
    //! <b>Effects</b>: Returns true is "this_node" has the same state as
    //!  if it was inited using "init(node_ptr)"
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static bool inited(const_node_ptr this_node);
 
    //! <b>Requires</b>: prev_node must be in a circular list or be an empty circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Unlinks the next node of prev_node from the circular list.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void unlink_after(node_ptr prev_node);
 
@@ -103,28 +103,28 @@
    //!
    //! <b>Effects</b>: Unlinks the range (prev_node, last_node) from the circular list.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
    //! <b>Throws</b>: Nothing.
    static void unlink_after(node_ptr prev_node, node_ptr last_node);
 
    //! <b>Requires</b>: prev_node must be a node of a circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Links this_node after prev_node in the circular list.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void link_after(node_ptr prev_node, node_ptr this_node);
 
    //! <b>Requires</b>: b and e must be nodes of the same circular list or an empty range.
    //!   and p must be a node of a different circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Removes the nodes from (b, e] range from their circular list and inserts
    //!   them after p in p's circular list.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void transfer_after(node_ptr p, node_ptr b, node_ptr e);
 
@@ -133,53 +133,53 @@
    //! <b>Effects</b>: Constructs an empty list, making this_node the only
    //!   node of the circular list:
    //!  <tt>NodeTraits::get_next(this_node) == this_node</tt>.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void init_header(const node_ptr &this_node)
-   {  NodeTraits::set_next(this_node, this_node);  } 
+   {  NodeTraits::set_next(this_node, this_node);  }
 
    //! <b>Requires</b>: this_node and prev_init_node must be in the same circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the previous node of this_node in the circular list starting.
    //!   the search from prev_init_node. The first node checked for equality
    //!   is NodeTraits::get_next(prev_init_node).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements between prev_init_node and this_node.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr get_previous_node(const node_ptr &prev_init_node, const node_ptr &this_node)
    {  return base_t::get_previous_node(prev_init_node, this_node);   }
 
    //! <b>Requires</b>: this_node must be in a circular list or be an empty circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the previous node of this_node in the circular list.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements in the circular list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr get_previous_node(const node_ptr & this_node)
    {  return base_t::get_previous_node(this_node, this_node); }
 
    //! <b>Requires</b>: this_node must be in a circular list or be an empty circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the previous node of the previous node of this_node in the circular list.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements in the circular list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr get_previous_previous_node(const node_ptr & this_node)
    {  return get_previous_previous_node(this_node, this_node); }
 
    //! <b>Requires</b>: this_node and prev_prev_init_node must be in the same circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the previous node of the previous node of this_node in the
    //!   circular list starting. the search from prev_init_node. The first node checked
    //!   for equality is NodeTraits::get_next((NodeTraits::get_next(prev_prev_init_node)).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements in the circular list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr get_previous_previous_node(const node_ptr & prev_prev_init_node, const node_ptr & this_node)
    {
@@ -195,14 +195,14 @@
    }
 
    //! <b>Requires</b>: this_node must be in a circular list or be an empty circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes in a circular list. If the circular list
    //!  is empty, returns 1.
-   //! 
-   //! <b>Complexity</b>: Linear 
-   //! 
+   //!
+   //! <b>Complexity</b>: Linear
+   //!
    //! <b>Throws</b>: Nothing.
-   static std::size_t count(const const_node_ptr & this_node) 
+   static std::size_t count(const const_node_ptr & this_node)
    {
       std::size_t result = 0;
       const_node_ptr p = this_node;
@@ -214,11 +214,11 @@
    }
 
    //! <b>Requires</b>: this_node must be in a circular list, be an empty circular list or be inited.
-   //! 
+   //!
    //! <b>Effects</b>: Unlinks the node from the circular list.
-   //! 
-   //! <b>Complexity</b>: Linear to the number of elements in the circular list 
-   //! 
+   //!
+   //! <b>Complexity</b>: Linear to the number of elements in the circular list
+   //!
    //! <b>Throws</b>: Nothing.
    static void unlink(const node_ptr & this_node)
    {
@@ -227,24 +227,24 @@
    }
 
    //! <b>Requires</b>: nxt_node must be a node of a circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Links this_node before nxt_node in the circular list.
-   //! 
-   //! <b>Complexity</b>: Linear to the number of elements in the circular list. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Linear to the number of elements in the circular list.
+   //!
    //! <b>Throws</b>: Nothing.
    static void link_before (const node_ptr & nxt_node, const node_ptr & this_node)
    {  base_t::link_after(get_previous_node(nxt_node), this_node);   }
 
    //! <b>Requires</b>: this_node and other_node must be nodes inserted
    //!  in circular lists or be empty circular lists.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps the position of the nodes: this_node is inserted in
    //!   other_nodes position in the second circular list and the other_node is inserted
    //!   in this_node's position in the first circular list.
-   //! 
-   //! <b>Complexity</b>: Linear to number of elements of both lists 
-   //! 
+   //!
+   //! <b>Complexity</b>: Linear to number of elements of both lists
+   //!
    //! <b>Throws</b>: Nothing.
    static void swap_nodes(const node_ptr & this_node, const node_ptr & other_node)
    {
@@ -279,14 +279,14 @@
       }
    }
 
-   //! <b>Effects</b>: Reverses the order of elements in the list. 
-   //! 
+   //! <b>Effects</b>: Reverses the order of elements in the list.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: This function is linear to the contained elements.
    static void reverse(const node_ptr & p)
    {
-      node_ptr i = NodeTraits::get_next(p), e(p); 
+      node_ptr i = NodeTraits::get_next(p), e(p);
       for (;;) {
          node_ptr nxt(NodeTraits::get_next(i));
          if (nxt == e)
@@ -301,7 +301,7 @@
    //!   Null if n leads to no movement.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements plus the number moved positions.
    static node_ptr move_backwards(const node_ptr & p, std::size_t n)
    {
@@ -348,12 +348,12 @@
    }
 
    //! <b>Effects</b>: Moves the node p n positions towards the beginning of the list.
-   //! 
+   //!
    //! <b>Returns</b>: The previous node of p after the function if there has been any movement,
    //!   Null if n leads equals to no movement.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements plus the number moved positions.
    static node_ptr move_forward(const node_ptr & p, std::size_t n)
    {
@@ -382,7 +382,7 @@
          std::size_t new_before_last_pos = (distance - (n % distance))% distance;
          //If the shift is a multiple of the size there is nothing to do
          if(!new_before_last_pos)   return node_ptr();
-         
+        
          for( new_last = p
             ; new_before_last_pos--
             ; new_last = node_traits::get_next(new_last)){
@@ -397,8 +397,8 @@
    }
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/derivation_value_traits.hpp
==============================================================================
--- trunk/boost/intrusive/derivation_value_traits.hpp	(original)
+++ trunk/boost/intrusive/derivation_value_traits.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -47,7 +47,7 @@
    static const_node_ptr to_node_ptr(const_reference value)
    { return node_ptr(&value); }
 
-   static pointer to_value_ptr(const node_ptr &n) 
+   static pointer to_value_ptr(const node_ptr &n)
    {
 //      This still fails in gcc < 4.4 so forget about it
 //      using ::boost::static_pointer_cast;
@@ -64,7 +64,7 @@
    }
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #endif //BOOST_INTRUSIVE_DERIVATION_VALUE_TRAITS_HPP
Modified: trunk/boost/intrusive/detail/any_node_and_algorithms.hpp
==============================================================================
--- trunk/boost/intrusive/detail/any_node_and_algorithms.hpp	(original)
+++ trunk/boost/intrusive/detail/any_node_and_algorithms.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -18,7 +18,7 @@
 #include <boost/intrusive/detail/assert.hpp>
 #include <boost/intrusive/pointer_traits.hpp>
 #include <cstddef>
-#include <boost/intrusive/detail/mpl.hpp> 
+#include <boost/intrusive/detail/mpl.hpp>
 #include <boost/pointer_cast.hpp>
 
 namespace boost {
@@ -100,10 +100,10 @@
    {  n->node_ptr_2 = prev;  }
 
    static std::size_t get_hash(const const_node_ptr & n)
-   {  return n->size_t_1;  }  
+   {  return n->size_t_1;  } 
 
    static void set_hash(const node_ptr & n, std::size_t h)
-   {  n->size_t_1 = h;  }  
+   {  n->size_t_1 = h;  } 
 };
 
 
@@ -255,9 +255,9 @@
    //! <b>Requires</b>: node must not be part of any tree.
    //!
    //! <b>Effects</b>: After the function unique(node) == true.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
@@ -265,9 +265,9 @@
    {  node->node_ptr_1 = 0;   };
 
    //! <b>Effects</b>: Returns true if node is in the same state as if called init(node)
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool inited(const const_node_ptr & node)
    {  return !node->node_ptr_1;  };
@@ -289,8 +289,8 @@
    }
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/detail/assert.hpp
==============================================================================
--- trunk/boost/intrusive/detail/assert.hpp	(original)
+++ trunk/boost/intrusive/detail/assert.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -11,7 +11,7 @@
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef BOOST_INTRUSIVE_DETAIL_ASSERT_HPP
-#define BOOST_INTRUSIVE_DETAIL_ASSERT_HPP 
+#define BOOST_INTRUSIVE_DETAIL_ASSERT_HPP
 
 #if defined(_MSC_VER)&&(_MSC_VER>=1200)
 #pragma once
Modified: trunk/boost/intrusive/detail/avltree_node.hpp
==============================================================================
--- trunk/boost/intrusive/detail/avltree_node.hpp	(original)
+++ trunk/boost/intrusive/detail/avltree_node.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -172,13 +172,13 @@
          , OptimizeSize &&
             max_pointer_plus_bits
             < VoidPointer
-            , detail::alignment_of<compact_avltree_node<VoidPointer> >::value 
+            , detail::alignment_of<compact_avltree_node<VoidPointer> >::value
             >::value >= 2u
          >
 {};
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/detail/common_slist_algorithms.hpp
==============================================================================
--- trunk/boost/intrusive/detail/common_slist_algorithms.hpp	(original)
+++ trunk/boost/intrusive/detail/common_slist_algorithms.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -44,11 +44,11 @@
       return p;
    }
 
-   static void init_header(const node_ptr & this_node)  
-   {  NodeTraits::set_next(this_node, this_node);  }  
+   static void init_header(const node_ptr & this_node) 
+   {  NodeTraits::set_next(this_node, this_node);  } 
 
-   static void init(const node_ptr & this_node)  
-   {  NodeTraits::set_next(this_node, node_ptr());  }  
+   static void init(const node_ptr & this_node) 
+   {  NodeTraits::set_next(this_node, node_ptr());  } 
 
    static bool unique(const const_node_ptr & this_node)
    {
@@ -56,7 +56,7 @@
       return !next || next == this_node;
    }
 
-   static bool inited(const const_node_ptr & this_node)  
+   static bool inited(const const_node_ptr & this_node) 
    {  return !NodeTraits::get_next(this_node); }
 
    static void unlink_after(const node_ptr & prev_node)
@@ -80,7 +80,7 @@
       NodeTraits::set_next(bp, b);
       NodeTraits::set_next(be, p);
    }
-   
+  
    static void transfer_after(const node_ptr & bp, const node_ptr & bb, const node_ptr & be)
    {
       if (bp != bb && bp != be && bb != be) {
@@ -95,8 +95,8 @@
 };
 
 } //namespace detail
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/detail/config_begin.hpp
==============================================================================
--- trunk/boost/intrusive/detail/config_begin.hpp	(original)
+++ trunk/boost/intrusive/detail/config_begin.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -20,10 +20,10 @@
    #pragma warning (push)
    //
    //'function' : resolved overload was found by argument-dependent lookup
-   //A function found by argument-dependent lookup (Koenig lookup) was eventually 
+   //A function found by argument-dependent lookup (Koenig lookup) was eventually
    //chosen by overload resolution.
    //
-   //In Visual C++ .NET and earlier compilers, a different function would have 
+   //In Visual C++ .NET and earlier compilers, a different function would have
    //been called. To pick the original function, use an explicitly qualified name.
    //
 
Modified: trunk/boost/intrusive/detail/function_detector.hpp
==============================================================================
--- trunk/boost/intrusive/detail/function_detector.hpp	(original)
+++ trunk/boost/intrusive/detail/function_detector.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -15,7 +15,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Copyright 2007 Alexandre Courpron
 //
-// Permission to use, copy, modify, redistribute and sell this software, 
+// Permission to use, copy, modify, redistribute and sell this software,
 // provided that this copyright notice appears on all copies of the software.
 ///////////////////////////////////////////////////////////////////////////////
 
@@ -74,7 +74,7 @@
    public : \
       static const int check = NotFound + (sizeof(Test<T>(0, 0)) - sizeof(NotFoundType));\
    };\
-}}} //namespace boost::intrusive::function_detector { 
+}}} //namespace boost::intrusive::function_detector {
 
 #define BOOST_INTRUSIVE_DETECT_FUNCTION(Class, InstantiationKey, ReturnType, Identifier, Params) \
     ::boost::intrusive::function_detector::DetectMember_##InstantiationKey_##Identifier< Class,\
Modified: trunk/boost/intrusive/detail/generic_hook.hpp
==============================================================================
--- trunk/boost/intrusive/detail/generic_hook.hpp	(original)
+++ trunk/boost/intrusive/detail/generic_hook.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -143,7 +143,7 @@
       typedef Tag                                           tag;
       typedef typename GetNodeAlgorithms::type::node_traits node_traits;
       static const bool is_base_hook = !detail::is_same<Tag, member_tag>::value;
-      static const bool safemode_or_autounlink = 
+      static const bool safemode_or_autounlink =
          (int)link_mode == (int)auto_unlink || (int)link_mode == (int)safe_link;
    };
 
@@ -163,14 +163,14 @@
       }
    }
 
-   generic_hook(const generic_hook& ) 
+   generic_hook(const generic_hook& )
    {
       if(boost_intrusive_tags::safemode_or_autounlink){
          node_algorithms::init(this->this_ptr());
       }
    }
 
-   generic_hook& operator=(const generic_hook& ) 
+   generic_hook& operator=(const generic_hook& )
    {  return *this;  }
 
    ~generic_hook()
@@ -179,13 +179,13 @@
          (*this, detail::link_dispatch<boost_intrusive_tags::link_mode>());
    }
 
-   void swap_nodes(generic_hook &other) 
+   void swap_nodes(generic_hook &other)
    {
       node_algorithms::swap_nodes
          (this->this_ptr(), other.this_ptr());
    }
 
-   bool is_linked() const 
+   bool is_linked() const
    {
       //is_linked() can be only used in safe-mode or auto-unlink
       BOOST_STATIC_ASSERT(( boost_intrusive_tags::safemode_or_autounlink ));
@@ -201,8 +201,8 @@
 };
 
 } //namespace detail
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/detail/has_member_function_callable_with.hpp
==============================================================================
--- trunk/boost/intrusive/detail/has_member_function_callable_with.hpp	(original)
+++ trunk/boost/intrusive/detail/has_member_function_callable_with.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -21,7 +21,7 @@
       #include <boost/static_assert.hpp>
       #include <boost/move/move.hpp>
 
-      //Mark that we don't support 0 arg calls due to compiler ICE in GCC 3.4/4.0/4.1 and 
+      //Mark that we don't support 0 arg calls due to compiler ICE in GCC 3.4/4.0/4.1 and
       //wrong SFINAE for GCC 4.2/4.3
       #if defined(__GNUC__) && !defined(__clang__) && ((__GNUC__*100 + __GNUC_MINOR__*10) >= 340) && ((__GNUC__*100 + __GNUC_MINOR__*10) <= 430)
       #define BOOST_INTRUSIVE_DETAIL_HAS_MEMBER_FUNCTION_CALLABLE_WITH_0_ARGS_UNSUPPORTED
@@ -121,7 +121,7 @@
             struct BOOST_PP_CAT(BOOST_PP_CAT(has_member_function_callable_with_, BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME),_impl)
                <Fun, true BOOST_PP_ENUM_TRAILING(BOOST_PP_SUB(BOOST_PP_ITERATION_FINISH(), BOOST_PP_ITERATION()), BOOST_INTRUSIVE_PP_IDENTITY, void)>
             {
-               //Mark that we don't support 0 arg calls due to compiler ICE in GCC 3.4/4.0/4.1 and 
+               //Mark that we don't support 0 arg calls due to compiler ICE in GCC 3.4/4.0/4.1 and
                //wrong SFINAE for GCC 4.2/4.3
                static const bool value = true;
             };
@@ -130,7 +130,7 @@
 
             //Special case for 0 args
             template< class F
-                  , std::size_t N = 
+                  , std::size_t N =
                         sizeof((boost::move_detail::declval<F>().
                            BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME (), 0))>
             struct BOOST_PP_CAT(zeroarg_checker_, BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME)
@@ -156,9 +156,9 @@
                static BOOST_PP_CAT(zeroarg_checker_, BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME)<U>
                   Test(BOOST_PP_CAT(zeroarg_checker_, BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME)<U>*);
 
-               template <class U> 
+               template <class U>
                static boost_intrusive_has_member_function_callable_with::no_type Test(...);
-               
+              
                static const bool value = sizeof(Test< Fun >(0))
                                     == sizeof(boost_intrusive_has_member_function_callable_with::yes_type);
             };
@@ -196,7 +196,7 @@
 
          //Special case for 0 args
          template< class F
-               , std::size_t N = 
+               , std::size_t N =
                      sizeof((boost::move_detail::declval<F>().
                         BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME (), 0))>
          struct BOOST_PP_CAT(zeroarg_checker_, BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME)
@@ -222,9 +222,9 @@
             static BOOST_PP_CAT(zeroarg_checker_, BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME)
                <U> Test(BOOST_PP_CAT(zeroarg_checker_, BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME)<U>*);
 
-            template <class U> 
+            template <class U>
             static boost_intrusive_has_member_function_callable_with::no_type Test(...);
-            
+           
             static const bool value = sizeof(Test< Fun >(0))
                                  == sizeof(boost_intrusive_has_member_function_callable_with::yes_type);
          };
Modified: trunk/boost/intrusive/detail/hashtable_node.hpp
==============================================================================
--- trunk/boost/intrusive/detail/hashtable_node.hpp	(original)
+++ trunk/boost/intrusive/detail/hashtable_node.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -40,7 +40,7 @@
 
 template<int Dummy>
 const std::size_t prime_list_holder<Dummy>::prime_list[] = {
-   3ul, 7ul, 11ul, 17ul, 29ul, 
+   3ul, 7ul, 11ul, 17ul, 29ul,
    53ul, 97ul, 193ul, 389ul, 769ul,
    1543ul, 3079ul, 6151ul, 12289ul, 24593ul,
    49157ul, 98317ul, 196613ul, 393241ul, 786433ul,
@@ -180,9 +180,9 @@
    {  return hashtable_iterator<Container, false>(this->slist_it(), this->get_container());   }
 
    public:
-   hashtable_iterator& operator++() 
+   hashtable_iterator& operator++()
    {  this->increment();   return *this;   }
-   
+  
    hashtable_iterator operator++(int)
    {
       hashtable_iterator result (*this);
@@ -219,7 +219,7 @@
       size_type   buckets_len    = cont->bucket_count();
 
       ++slist_it_;
-      if(buckets[0].cend().pointed_node()    <= slist_it_.pointed_node() && 
+      if(buckets[0].cend().pointed_node()    <= slist_it_.pointed_node() &&
          slist_it_.pointed_node()<= buckets[buckets_len].cend().pointed_node()      ){
          //Now get the bucket_impl from the iterator
          const bucket_type &b = static_cast<const bucket_type&>
Modified: trunk/boost/intrusive/detail/list_node.hpp
==============================================================================
--- trunk/boost/intrusive/detail/list_node.hpp	(original)
+++ trunk/boost/intrusive/detail/list_node.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -57,7 +57,7 @@
    {  n->next_ = next;  }
 };
 
-// list_iterator provides some basic functions for a 
+// list_iterator provides some basic functions for a
 // node oriented bidirectional iterator:
 template<class Container, bool IsConst>
 class list_iterator
@@ -76,7 +76,7 @@
    typedef typename node_traits::node_ptr          node_ptr;
    typedef typename pointer_traits<node_ptr>::
       template rebind_pointer<void>::type          void_pointer;
-   static const bool store_container_ptr = 
+   static const bool store_container_ptr =
       detail::store_cont_ptr_on_it<Container>::value;
 
    public:
@@ -103,14 +103,14 @@
    {  members_.nodeptr_ = node;  return static_cast<list_iterator&>(*this);  }
 
    public:
-   list_iterator& operator++() 
+   list_iterator& operator++()
    {
       node_ptr p = node_traits::get_next(members_.nodeptr_);
       members_.nodeptr_ = p;
-      //members_.nodeptr_ = node_traits::get_next(members_.nodeptr_); 
-      return static_cast<list_iterator&> (*this); 
+      //members_.nodeptr_ = node_traits::get_next(members_.nodeptr_);
+      return static_cast<list_iterator&> (*this);
    }
-   
+  
    list_iterator operator++(int)
    {
       list_iterator result (*this);
@@ -118,12 +118,12 @@
       return result;
    }
 
-   list_iterator& operator--() 
-   { 
-      members_.nodeptr_ = node_traits::get_previous(members_.nodeptr_); 
-      return static_cast<list_iterator&> (*this); 
+   list_iterator& operator--()
+   {
+      members_.nodeptr_ = node_traits::get_previous(members_.nodeptr_);
+      return static_cast<list_iterator&> (*this);
    }
-   
+  
    list_iterator operator--(int)
    {
       list_iterator result (*this);
@@ -182,8 +182,8 @@
    } members_;
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/detail/mpl.hpp
==============================================================================
--- trunk/boost/intrusive/detail/mpl.hpp	(original)
+++ trunk/boost/intrusive/detail/mpl.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -127,7 +127,7 @@
 #if defined(BOOST_MSVC) || defined(__BORLANDC_)
 #define BOOST_INTRUSIVE_TT_DECL __cdecl
 #else
-#define BOOST_INTRUSIVE_TT_DECL 
+#define BOOST_INTRUSIVE_TT_DECL
 #endif
 
 #if defined(_MSC_EXTENSIONS) && !defined(__BORLAND__) && !defined(_WIN64) && !defined(UNDER_CE)
@@ -346,9 +346,9 @@
    static const std::size_t value = 0;
 };
 
-} //namespace detail 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace detail
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/detail/preprocessor.hpp
==============================================================================
--- trunk/boost/intrusive/detail/preprocessor.hpp	(original)
+++ trunk/boost/intrusive/detail/preprocessor.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -18,7 +18,7 @@
 #include <boost/intrusive/detail/config_begin.hpp>
 #include <boost/intrusive/detail/workaround.hpp>
 
-#include <boost/preprocessor/iteration/local.hpp> 
+#include <boost/preprocessor/iteration/local.hpp>
 #include <boost/preprocessor/punctuation/paren_if.hpp>
 #include <boost/preprocessor/punctuation/comma_if.hpp>
 #include <boost/preprocessor/control/expr_if.hpp>
Modified: trunk/boost/intrusive/detail/rbtree_node.hpp
==============================================================================
--- trunk/boost/intrusive/detail/rbtree_node.hpp	(original)
+++ trunk/boost/intrusive/detail/rbtree_node.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -164,13 +164,13 @@
          ,  OptimizeSize &&
            (max_pointer_plus_bits
             < VoidPointer
-            , detail::alignment_of<compact_rbtree_node<VoidPointer> >::value 
+            , detail::alignment_of<compact_rbtree_node<VoidPointer> >::value
             >::value >= 1)
          >
 {};
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/detail/slist_node.hpp
==============================================================================
--- trunk/boost/intrusive/detail/slist_node.hpp	(original)
+++ trunk/boost/intrusive/detail/slist_node.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -43,13 +43,13 @@
       <VoidPointer>::template rebind_pointer<const node>::type    const_node_ptr;
 
    static const node_ptr &get_next(const const_node_ptr & n)
-   {  return n->next_;  }  
+   {  return n->next_;  } 
 
    static void set_next(const node_ptr & n, const node_ptr & next)
-   {  n->next_ = next;  }  
+   {  n->next_ = next;  } 
 };
 
-// slist_iterator provides some basic functions for a 
+// slist_iterator provides some basic functions for a
 // node oriented bidirectional iterator:
 template<class Container, bool IsConst>
 class slist_iterator
@@ -68,7 +68,7 @@
    typedef typename node_traits::node_ptr          node_ptr;
    typedef typename pointer_traits
       <node_ptr>::template rebind_pointer <void>::type                       void_pointer;
-   static const bool store_container_ptr = 
+   static const bool store_container_ptr =
       detail::store_cont_ptr_on_it<Container>::value;
 
    public:
@@ -95,12 +95,12 @@
    {  members_.nodeptr_ = node;  return static_cast<slist_iterator&>(*this);  }
 
    public:
-   slist_iterator& operator++() 
-   { 
-      members_.nodeptr_ = node_traits::get_next(members_.nodeptr_); 
-      return static_cast<slist_iterator&> (*this); 
+   slist_iterator& operator++()
+   {
+      members_.nodeptr_ = node_traits::get_next(members_.nodeptr_);
+      return static_cast<slist_iterator&> (*this);
    }
-   
+  
    slist_iterator operator++(int)
    {
       slist_iterator result (*this);
@@ -155,8 +155,8 @@
    } members_;
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/detail/transform_iterator.hpp
==============================================================================
--- trunk/boost/intrusive/detail/transform_iterator.hpp	(original)
+++ trunk/boost/intrusive/detail/transform_iterator.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -71,7 +71,7 @@
    {  return members_.m_it;   }
 
    //Constructors
-   transform_iterator& operator++() 
+   transform_iterator& operator++()
    { increment();   return *this;   }
 
    transform_iterator operator++(int)
Modified: trunk/boost/intrusive/detail/tree_algorithms.hpp
==============================================================================
--- trunk/boost/intrusive/detail/tree_algorithms.hpp	(original)
+++ trunk/boost/intrusive/detail/tree_algorithms.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -25,20 +25,20 @@
 namespace detail {
 
 //!   This is an implementation of a binary search tree.
-//!   A node in the search tree has references to its children and its parent. This 
-//!   is to allow traversal of the whole tree from a given node making the 
+//!   A node in the search tree has references to its children and its parent. This
+//!   is to allow traversal of the whole tree from a given node making the
 //!   implementation of iterator a pointer to a node.
-//!   At the top of the tree a node is used specially. This node's parent pointer 
-//!   is pointing to the root of the tree. Its left pointer points to the 
+//!   At the top of the tree a node is used specially. This node's parent pointer
+//!   is pointing to the root of the tree. Its left pointer points to the
 //!   leftmost node in the tree and the right pointer to the rightmost one.
 //!   This node is used to represent the end-iterator.
 //!
-//!                                            +---------+ 
-//!       header------------------------------>|         | 
-//!                                            |         | 
-//!                   +----------(left)--------|         |--------(right)---------+ 
-//!                   |                        +---------+                        | 
-//!                   |                             |                             | 
+//!                                            +---------+
+//!       header------------------------------>|         |
+//!                                            |         |
+//!                   +----------(left)--------|         |--------(right)---------+
+//!                   |                        +---------+                        |
+//!                   |                             |                             |
 //!                   |                             | (parent)                    |
 //!                   |                             |                             |
 //!                   |                             |                             |
@@ -61,10 +61,10 @@
 //!                   |       |               |           |               |       |
 //!                   |       |               |           |               |       |
 //!                   |   +---+-----+   +-----+---+   +---+-----+   +-----+---+   |
-//!                   +-->|         |   |         |   |         |   |         |<--+ 
-//!                       |    A    |   |    C    |   |    E    |   |    G    | 
-//!                       |         |   |         |   |         |   |         | 
-//!                       +---------+   +---------+   +---------+   +---------+ 
+//!                   +-->|         |   |         |   |         |   |         |<--+
+//!                       |    A    |   |    C    |   |    E    |   |    G    |
+//!                       |         |   |         |   |         |   |         |
+//!                       +---------+   +---------+   +---------+   +---------+
 //!
 
 //! tree_algorithms is configured with a NodeTraits class, which encapsulates the
@@ -82,15 +82,15 @@
 //! <b>Static functions</b>:
 //!
 //! <tt>static node_ptr get_parent(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_parent(node_ptr n, node_ptr parent);</tt>
 //!
 //! <tt>static node_ptr get_left(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_left(node_ptr n, node_ptr left);</tt>
 //!
 //! <tt>static node_ptr get_right(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_right(node_ptr n, node_ptr right);</tt>
 template<class NodeTraits>
 class tree_algorithms
@@ -153,11 +153,11 @@
 
    //! <b>Requires</b>: 'node' is a node of the tree or an node initialized
    //!   by init(...) or init_node.
-   //! 
+   //!
    //! <b>Effects</b>: Returns true if the node is initialized by init() or init_node().
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool unique(const const_node_ptr & node)
    { return !NodeTraits::get_parent(node); }
@@ -175,15 +175,15 @@
 
    //! <b>Requires</b>: node1 and node2 can't be header nodes
    //!  of two trees.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps two nodes. After the function node1 will be inserted
    //!   in the position node2 before the function. node2 will be inserted in the
    //!   position node1 had before the function.
-   //! 
-   //! <b>Complexity</b>: Logarithmic. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Logarithmic.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   node1 and node2 are not equivalent according to the ordering rules.
    //!
@@ -192,22 +192,22 @@
    {
       if(node1 == node2)
          return;
-   
+  
       node_ptr header1(get_header(node1)), header2(get_header(node2));
       swap_nodes(node1, header1, node2, header2);
    }
 
    //! <b>Requires</b>: node1 and node2 can't be header nodes
    //!  of two trees with header header1 and header2.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps two nodes. After the function node1 will be inserted
    //!   in the position node2 before the function. node2 will be inserted in the
    //!   position node1 had before the function.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   node1 and node2 are not equivalent according to the ordering rules.
    //!
@@ -216,8 +216,8 @@
    {
       if(node1 == node2)
          return;
-   
-      //node1 and node2 must not be header nodes 
+  
+      //node1 and node2 must not be header nodes
       //BOOST_INTRUSIVE_INVARIANT_ASSERT((header1 != node1 && header2 != node2));
       if(header1 != header2){
          //Update header1 if necessary
@@ -347,14 +347,14 @@
 
    //! <b>Requires</b>: node_to_be_replaced must be inserted in a tree
    //!   and new_node must not be inserted in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces node_to_be_replaced in its position in the
    //!   tree with new_node. The tree does not need to be rebalanced
-   //! 
-   //! <b>Complexity</b>: Logarithmic. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Logarithmic.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   new_node is not equivalent to node_to_be_replaced according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -370,14 +370,14 @@
 
    //! <b>Requires</b>: node_to_be_replaced must be inserted in a tree
    //!   with header "header" and new_node must not be inserted in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces node_to_be_replaced in its position in the
    //!   tree with new_node. The tree does not need to be rebalanced
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   new_node is not equivalent to node_to_be_replaced according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -388,7 +388,7 @@
    {
       if(node_to_be_replaced == new_node)
          return;
-   
+  
       //Update header if necessary
       if(node_to_be_replaced == NodeTraits::get_left(header)){
          NodeTraits::set_left(header, new_node);
@@ -428,11 +428,11 @@
    }
 
    //! <b>Requires</b>: 'node' is a node from the tree except the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the next node of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr next_node(const node_ptr & node)
    {
@@ -452,11 +452,11 @@
    }
 
    //! <b>Requires</b>: 'node' is a node from the tree except the leftmost node.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the previous node of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr prev_node(const node_ptr & node)
    {
@@ -479,11 +479,11 @@
    }
 
    //! <b>Requires</b>: 'node' is a node of a tree but not the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the minimum node of the subtree starting at p.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the size of the subtree.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr minimum (const node_ptr & node)
    {
@@ -497,11 +497,11 @@
    }
 
    //! <b>Requires</b>: 'node' is a node of a tree but not the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the maximum node of the subtree starting at p.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the size of the subtree.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr maximum(const node_ptr & node)
    {
@@ -517,9 +517,9 @@
    //! <b>Requires</b>: 'node' must not be part of any tree.
    //!
    //! <b>Effects</b>: After the function unique(node) == true.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
@@ -527,17 +527,17 @@
    {
       NodeTraits::set_parent(node, node_ptr());
       NodeTraits::set_left(node, node_ptr());
-      NodeTraits::set_right(node, node_ptr()); 
+      NodeTraits::set_right(node, node_ptr());
    };
 
    //! <b>Effects</b>: Returns true if node is in the same state as if called init(node)
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool inited(const const_node_ptr & node)
    {
-      return !NodeTraits::get_parent(node) && 
+      return !NodeTraits::get_parent(node) &&
              !NodeTraits::get_left(node)   &&
              !NodeTraits::get_right(node)  ;
    };
@@ -546,9 +546,9 @@
    //!
    //! <b>Effects</b>: Initializes the header to represent an empty tree.
    //!   unique(header) == true.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
@@ -556,19 +556,19 @@
    {
       NodeTraits::set_parent(header, node_ptr());
       NodeTraits::set_left(header, header);
-      NodeTraits::set_right(header, header); 
+      NodeTraits::set_right(header, header);
    }
 
    //! <b>Requires</b>: "disposer" must be an object function
    //!   taking a node_ptr parameter and shouldn't throw.
    //!
-   //! <b>Effects</b>: Empties the target tree calling 
+   //! <b>Effects</b>: Empties the target tree calling
    //!   <tt>void disposer::operator()(const node_ptr &)</tt> for every node of the tree
    //!    except the header.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of element of the source tree plus the.
    //!   number of elements of tree target tree when calling this function.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner functor throws. If this happens target nodes are disposed.
    template<class Disposer>
    static void clear_and_dispose(const node_ptr & header, Disposer disposer)
@@ -581,14 +581,14 @@
    }
 
    //! <b>Requires</b>: header is the header of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Unlinks the leftmost node from the tree, and
    //!   updates the header link to the new leftmost node.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -624,11 +624,11 @@
    }
 
    //! <b>Requires</b>: node is a node of the tree but it's not the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes of the subtree.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static std::size_t count(const const_node_ptr & subtree)
    {
@@ -660,11 +660,11 @@
    }
 
    //! <b>Requires</b>: node is a node of the tree but it's not the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes of the subtree.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static std::size_t size(const const_node_ptr & header)
    {
@@ -677,18 +677,18 @@
 
    //! <b>Requires</b>: header1 and header2 must be the header nodes
    //!  of two trees.
-   //! 
-   //! <b>Effects</b>: Swaps two trees. After the function header1 will contain 
+   //!
+   //! <b>Effects</b>: Swaps two trees. After the function header1 will contain
    //!   links to the second tree and header2 will have links to the first tree.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
    static void swap_tree(const node_ptr & header1, const node_ptr & header2)
    {
       if(header1 == header2)
          return;
-   
+  
       node_ptr tmp;
 
       //Parent swap
@@ -734,7 +734,7 @@
                (NodeTraits::get_parent(p_left)  != p ||
                 NodeTraits::get_parent(p_right) != p ))
                //When tree size > 1 headers can't be leftmost's
-               //and rightmost's parent 
+               //and rightmost's parent
           )){
          return true;
       }
@@ -750,7 +750,7 @@
    //!   "key" according to "comp" or "header" if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr find
@@ -772,7 +772,7 @@
    //!   if they there are no equivalent elements.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static std::pair<node_ptr, node_ptr> equal_range
@@ -829,7 +829,7 @@
    //!   not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr lower_bound
@@ -858,7 +858,7 @@
    //!   than "key" according to "comp" or "header" if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr upper_bound
@@ -882,16 +882,16 @@
    //!   "commit_data" must have been obtained from a previous call to
    //!   "insert_unique_check". No objects should have been inserted or erased
    //!   from the set between the "insert_unique_check" that filled "commit_data"
-   //!   and the call to "insert_commit". 
-   //! 
-   //! 
+   //!   and the call to "insert_commit".
+   //!
+   //!
    //! <b>Effects</b>: Inserts new_node in the set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_unique_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
@@ -929,7 +929,7 @@
    //!   KeyNodePtrCompare is a function object that induces a strict weak
    //!   ordering compatible with the strict weak ordering used to create the
    //!   the tree. NodePtrCompare compares KeyType with a node_ptr.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if there is an equivalent node to "key" in the
    //!   tree according to "comp" and obtains the needed information to realize
    //!   a constant-time node insertion if there is no equivalent node.
@@ -940,11 +940,11 @@
    //!   in the returned pair's boolean and fills "commit_data" that is meant to
    //!   be used with the "insert_commit" function to achieve a constant-time
    //!   insertion function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If "comp" throws.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a node is expensive and the user does not want to have two equivalent nodes
    //!   in the tree: if there is an equivalent value
@@ -976,7 +976,7 @@
       while(x){
          ++depth;
          y = x;
-         x = (left_child = comp(key, x)) ? 
+         x = (left_child = comp(key, x)) ?
                NodeTraits::get_left(x) : (prev = y, NodeTraits::get_right(x));
       }
 
@@ -1026,7 +1026,7 @@
    {
       if(hint == header || !comp(hint, new_node)){
          node_ptr prev(hint);
-         if(hint == NodeTraits::get_left(header) || 
+         if(hint == NodeTraits::get_left(header) ||
             !comp(new_node, (prev = prev_node(hint)))){
             bool link_left = unique(header) || !NodeTraits::get_left(hint);
             commit_data.link_left = link_left;
@@ -1147,13 +1147,13 @@
    }
 
    //! <b>Requires</b>: 'node' can't be a header node.
-   //! 
+   //!
    //! <b>Effects</b>: Calculates the depth of a node: the depth of a
    //! node is the length (number of edges) of the path from the root
    //! to that node. (The root node is at depth 0.)
-   //! 
-   //! <b>Complexity</b>: Logarithmic to the number of nodes in the tree. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Logarithmic to the number of nodes in the tree.
+   //!
    //! <b>Throws</b>: Nothing.
    static std::size_t depth(const const_node_ptr & node)
    {
@@ -1171,18 +1171,18 @@
    //!   object taking a node_ptr and returning a new cloned node of it. "disposer" must
    //!   take a node_ptr and shouldn't throw.
    //!
-   //! <b>Effects</b>: First empties target tree calling 
+   //! <b>Effects</b>: First empties target tree calling
    //!   <tt>void disposer::operator()(const node_ptr &)</tt> for every node of the tree
    //!    except the header.
-   //!    
+   //!   
    //!   Then, duplicates the entire tree pointed by "source_header" cloning each
-   //!   source node with <tt>node_ptr Cloner::operator()(const node_ptr &)</tt> to obtain 
+   //!   source node with <tt>node_ptr Cloner::operator()(const node_ptr &)</tt> to obtain
    //!   the nodes of the target tree. If "cloner" throws, the cloned target nodes
    //!   are disposed using <tt>void disposer(const node_ptr &)</tt>.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of element of the source tree plus the.
    //!   number of elements of tree target tree when calling this function.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner functor throws. If this happens target nodes are disposed.
    template <class Cloner, class Disposer>
    static void clone
@@ -1247,7 +1247,7 @@
                   leftmost = insertion_point;
             }
             //Then clone right nodes
-            else if( NodeTraits::get_right(current) && 
+            else if( NodeTraits::get_right(current) &&
                      !NodeTraits::get_right(insertion_point)){
                current = NodeTraits::get_right(current);
                node_ptr temp = insertion_point;
@@ -1300,21 +1300,21 @@
    }
 
    //! <b>Requires</b>: p is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns true if p is a left child.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool is_left_child(const node_ptr & p)
    {  return NodeTraits::get_left(NodeTraits::get_parent(p)) == p;  }
 
    //! <b>Requires</b>: p is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns true if p is a right child.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool is_right_child(const node_ptr & p)
    {  return NodeTraits::get_right(NodeTraits::get_parent(p)) == p;  }
@@ -1449,7 +1449,7 @@
       if(!old_root)   return node_ptr();
 
       //To avoid irregularities in the algorithm (old_root can be a
-      //left or right child or even the root of the tree) just put the 
+      //left or right child or even the root of the tree) just put the
       //root as the right child of its parent. Before doing this backup
       //information to restore the original relationship after
       //the algorithm is applied.
@@ -1521,7 +1521,7 @@
       if(!old_root)   return old_root;
 
       //To avoid irregularities in the algorithm (old_root can be
-      //left or right child or even the root of the tree) just put the 
+      //left or right child or even the root of the tree) just put the
       //root as the right child of its parent. First obtain
       //information to restore the original relationship after
       //the algorithm is applied.
@@ -1536,7 +1536,7 @@
       //Put old_root as right child
       NodeTraits::set_right(super_root, old_root);
 
-      //Start the compression algorithm            
+      //Start the compression algorithm           
       node_ptr even_parent = super_root;
       node_ptr new_root = old_root;
 
@@ -1578,7 +1578,7 @@
    //! <b>Effects</b>: Returns a pointer to the header node of the tree.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr get_root(const node_ptr & node)
    {
@@ -1609,7 +1609,7 @@
          while(x){
             ++depth;
             y = x;
-            x = comp(new_node, x) ? 
+            x = comp(new_node, x) ?
                   NodeTraits::get_left(x) : NodeTraits::get_right(x);
          }
          link_left = (y == h) || comp(new_node, y);
@@ -1618,7 +1618,7 @@
          while(x){
             ++depth;
             y = x;
-            x = !comp(x, new_node) ? 
+            x = !comp(x, new_node) ?
                   NodeTraits::get_left(x) : NodeTraits::get_right(x);
          }
          link_left = (y == h) || !comp(y, new_node);
@@ -1689,8 +1689,8 @@
 };
 
 }  //namespace detail {
-}  //namespace intrusive 
-}  //namespace boost 
+}  //namespace intrusive
+}  //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/detail/tree_node.hpp
==============================================================================
--- trunk/boost/intrusive/detail/tree_node.hpp	(original)
+++ trunk/boost/intrusive/detail/tree_node.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -66,7 +66,7 @@
 //                                                                         //
 /////////////////////////////////////////////////////////////////////////////
 
-// tree_iterator provides some basic functions for a 
+// tree_iterator provides some basic functions for a
 // node oriented bidirectional iterator:
 template<class Container, bool IsConst>
 class tree_iterator
@@ -86,7 +86,7 @@
    typedef typename node_traits::node_ptr          node_ptr;
    typedef typename pointer_traits<node_ptr>::template
       rebind_pointer<void>::type                   void_pointer;
-   static const bool store_container_ptr = 
+   static const bool store_container_ptr =
       detail::store_cont_ptr_on_it<Container>::value;
 
    public:
@@ -114,12 +114,12 @@
    {  members_.nodeptr_ = nodeptr;  return static_cast<tree_iterator&>(*this);  }
 
    public:
-   tree_iterator& operator++() 
-   { 
-      members_.nodeptr_ = node_algorithms::next_node(members_.nodeptr_); 
-      return static_cast<tree_iterator&> (*this); 
+   tree_iterator& operator++()
+   {
+      members_.nodeptr_ = node_algorithms::next_node(members_.nodeptr_);
+      return static_cast<tree_iterator&> (*this);
    }
-   
+  
    tree_iterator operator++(int)
    {
       tree_iterator result (*this);
@@ -127,12 +127,12 @@
       return result;
    }
 
-   tree_iterator& operator--() 
-   { 
-      members_.nodeptr_ = node_algorithms::prev_node(members_.nodeptr_); 
-      return static_cast<tree_iterator&> (*this); 
+   tree_iterator& operator--()
+   {
+      members_.nodeptr_ = node_algorithms::prev_node(members_.nodeptr_);
+      return static_cast<tree_iterator&> (*this);
    }
-   
+  
    tree_iterator operator--(int)
    {
       tree_iterator result (*this);
@@ -182,8 +182,8 @@
    } members_;
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/detail/utilities.hpp
==============================================================================
--- trunk/boost/intrusive/detail/utilities.hpp	(original)
+++ trunk/boost/intrusive/detail/utilities.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -200,7 +200,7 @@
    key_nodeptr_comp(KeyValueCompare kcomp, const Container *cont)
       :  base_t(kcomp), cont_(cont)
    {}
-   
+  
    template<class T>
    struct is_node_ptr
    {
@@ -236,7 +236,7 @@
    typedef typename real_value_traits::node_ptr          node_ptr;
    typedef typename real_value_traits::const_node_ptr    const_node_ptr;
    typedef detail::ebo_functor_holder<F>                 base_t;
-   enum { safemode_or_autounlink  = 
+   enum { safemode_or_autounlink  =
             (int)real_value_traits::link_mode == (int)auto_unlink   ||
             (int)real_value_traits::link_mode == (int)safe_link     };
 
@@ -270,7 +270,7 @@
    typedef typename real_value_traits::node_ptr    node_ptr;
    typedef detail::ebo_functor_holder<F>           base_t;
    typedef typename Container::node_algorithms     node_algorithms;
-   enum { safemode_or_autounlink  = 
+   enum { safemode_or_autounlink  =
             (int)real_value_traits::link_mode == (int)auto_unlink   ||
             (int)real_value_traits::link_mode == (int)safe_link     };
 
@@ -378,7 +378,7 @@
 
    static const link_mode_type link_mode = LinkMode;
 
-   static pointer to_value_ptr(const node_ptr & n) 
+   static pointer to_value_ptr(const node_ptr & n)
    {
       return pointer_traits<pointer>::pointer_to
          (static_cast<reference>(static_cast<node_holder_reference>(*n)));
@@ -504,7 +504,7 @@
 
    std::size_t n = x;
    std::size_t log2 = 0;
-   
+  
    for(std::size_t shift = Bits >> 1; shift; shift >>= 1){
       std::size_t tmp = n >> shift;
       if (tmp)
@@ -655,7 +655,7 @@
       , detail::store_cont_ptr_on_it<Container>::value
       >::type
 {
-   static const bool store_container_ptr = 
+   static const bool store_container_ptr =
       detail::store_cont_ptr_on_it<Container>::value;
 
    typedef typename Container::real_value_traits         real_value_traits;
@@ -871,8 +871,8 @@
 };
 
 } //namespace detail
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/hashtable.hpp
==============================================================================
--- trunk/boost/intrusive/hashtable.hpp	(original)
+++ trunk/boost/intrusive/hashtable.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -57,7 +57,7 @@
    static const std::size_t incremental_pos        = 32u;
 };
 
-template 
+template
    < class  ValueTraits
    , class  Hash
    , class  Equal
@@ -161,7 +161,7 @@
 template<class SupposedValueTraits>
 struct unordered_bucket_impl
 {
-   typedef typename 
+   typedef typename
       get_slist_impl_from_supposed_value_traits
          <SupposedValueTraits>::type            slist_impl;
    typedef detail::bucket_impl<slist_impl>      implementation_defined;
@@ -490,7 +490,7 @@
       //itself, as group list does not link bucket
       node_ptr prev_in_group(group_traits::get_next(elem));
       bool first_in_group = node_traits::get_next(prev_in_group) != elem;
-      
+     
       if(first_in_group){
          node_ptr start_pos;
          if(last_in_group){
@@ -810,7 +810,7 @@
       node_cast_adaptor(const ConvertibleToF &c2f, const hashtable_impl *cont)
          :  base_t(base_t(c2f, cont))
       {}
-      
+     
       typename base_t::node_ptr operator()(const typename slist_impl::node &to_clone)
       {  return base_t::operator()(static_cast<const node &>(to_clone));   }
 
@@ -824,7 +824,7 @@
    //noncopyable, movable
    BOOST_MOVABLE_BUT_NOT_COPYABLE(hashtable_impl)
 
-   enum { safemode_or_autounlink  = 
+   enum { safemode_or_autounlink  =
             (int)real_value_traits::link_mode == (int)auto_unlink   ||
             (int)real_value_traits::link_mode == (int)safe_link     };
 
@@ -879,19 +879,19 @@
    //!
    //! <b>Effects</b>: Constructs an empty unordered_set, storing a reference
    //!   to the bucket array and copies of the key_hasher and equal_func functors.
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor or invocation of hash_func or equal_func throws. 
+   //!   or the copy constructor or invocation of hash_func or equal_func throws.
    //!
    //! <b>Notes</b>: buckets array must be disposed only after
    //!   *this is disposed.
    hashtable_impl ( const bucket_traits &b_traits
                   , const hasher & hash_func = hasher()
                   , const key_equal &equal_func = key_equal()
-                  , const value_traits &v_traits = value_traits()) 
+                  , const value_traits &v_traits = value_traits())
       :  data_(b_traits, hash_func, equal_func, v_traits)
    {
       priv_initialize_buckets();
@@ -905,7 +905,7 @@
    }
 
    //! <b>Effects</b>: to-do
-   //!   
+   //!  
    hashtable_impl(BOOST_RV_REF(hashtable_impl) x)
       : data_( ::boost::move(x.priv_bucket_traits())
              , ::boost::move(x.priv_hasher())
@@ -927,25 +927,25 @@
    }
 
    //! <b>Effects</b>: to-do
-   //!   
-   hashtable_impl& operator=(BOOST_RV_REF(hashtable_impl) x) 
+   //!  
+   hashtable_impl& operator=(BOOST_RV_REF(hashtable_impl) x)
    {  this->swap(x); return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the unordered_set 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the unordered_set
    //!   are not deleted (i.e. no destructors are called).
-   //! 
-   //! <b>Complexity</b>: Linear to the number of elements in the unordered_set, if 
+   //!
+   //! <b>Complexity</b>: Linear to the number of elements in the unordered_set, if
    //!   it's a safe-mode or auto-unlink value. Otherwise constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~hashtable_impl() 
+   ~hashtable_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized constant time.
    //!   Worst case (empty unordered_set): O(this->bucket_count())
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    {  return iterator(this->priv_begin(), this);   }
@@ -955,7 +955,7 @@
    //!
    //! <b>Complexity</b>: Amortized constant time.
    //!   Worst case (empty unordered_set): O(this->bucket_count())
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    {  return this->cbegin();  }
@@ -965,57 +965,57 @@
    //!
    //! <b>Complexity</b>: Amortized constant time.
    //!   Worst case (empty unordered_set): O(this->bucket_count())
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    {  return const_iterator(this->priv_begin(), this);   }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    {  return iterator(priv_invalid_local_it(), 0);   }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    {  return this->cend(); }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    {  return const_iterator(priv_invalid_local_it(), 0);  }
 
    //! <b>Effects</b>: Returns the hasher object used by the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If hasher copy-constructor throws.
    hasher hash_function() const
    {  return this->priv_hasher();  }
 
    //! <b>Effects</b>: Returns the key_equal object used by the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If key_equal copy-constructor throws.
    key_equal key_eq() const
    {  return this->priv_equal();   }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: if constant-time size and cache_begin options are disabled,
    //!   average constant time (worst case, with empty() == true: O(this->bucket_count()).
    //!   Otherwise constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    {
@@ -1038,10 +1038,10 @@
    }
 
    //! <b>Effects</b>: Returns the number of elements stored in the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this if
    //!   constant_time_size is false. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    {
@@ -1060,10 +1060,10 @@
 
    //! <b>Requires</b>: the hasher and the equality function unqualified swap
    //!   call should not throw.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps the contents of two unordered_sets.
    //!   Swaps also the contained bucket array and equality and hasher functors.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    //!
    //! <b>Throws</b>: If the swap() call for the comparison or hash functors
@@ -1095,7 +1095,7 @@
    //!   hash than the original node.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. The hash function and the equality
    //!   predicate are copied from the source.
@@ -1106,7 +1106,7 @@
    //!   calling Disposer::operator()(pointer).
    //!
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner or hasher throw or hash or equality predicate copying
    //!   throws. Basic guarantee.
    template <class Cloner, class Disposer>
@@ -1131,7 +1131,7 @@
             typedef node_cast_adaptor<detail::node_disposer<Disposer, hashtable_impl> > NodeDisposer;
             typedef node_cast_adaptor<detail::node_cloner<Cloner, hashtable_impl> > NodeCloner;
             NodeDisposer node_disp(disposer, this);
-   
+  
             detail::exception_array_disposer<bucket_type, NodeDisposer, size_type>
                rollback(dst_buckets[0], node_disp, constructed);
             for( constructed = 0
@@ -1191,15 +1191,15 @@
    }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value into the unordered_set.
    //!
    //! <b>Returns</b>: An iterator to the inserted value.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_equal(reference value)
@@ -1212,16 +1212,16 @@
       return priv_insert_equal_find(value, bucket_num, hash_value, it);
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Equivalent to this->insert_equal(t) for each element in [b, e).
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(N), where N is std::distance(b, e).
    //!   Worst case O(N*this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -1232,7 +1232,7 @@
    }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Tries to inserts value into the unordered_set.
    //!
    //! <b>Returns</b>: If the value
@@ -1240,11 +1240,11 @@
    //!   iterator to the new value and true. If there is an equivalent value
    //!   returns a pair containing an iterator to the already present value
    //!   and false.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    std::pair<iterator, bool> insert_unique(reference value)
@@ -1254,20 +1254,20 @@
          (value, this->priv_hasher(), this->priv_equal(), commit_data);
       if(!ret.second)
          return ret;
-      return std::pair<iterator, bool> 
+      return std::pair<iterator, bool>
          (this->insert_unique_commit(value, commit_data), true);
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Equivalent to this->insert_unique(t) for each element in [b, e).
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(N), where N is std::distance(b, e).
    //!   Worst case O(N*this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -1277,14 +1277,14 @@
          this->insert_unique(*b);
    }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "equal_func" must be a equality function that induces 
+   //!   "equal_func" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "equal_func" compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the unordered_set, using
    //!   a user provided key instead of the value itself.
    //!
@@ -1293,11 +1293,11 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
    //!
    //! <b>Throws</b>: If hash_func or equal_func throw. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
@@ -1334,16 +1334,16 @@
    //!   must have been obtained from a previous call to "insert_check".
    //!   No objects should have been inserted or erased from the unordered_set between
    //!   the "insert_check" that filled "commit_data" and the call to "insert_commit".
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the unordered_set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Returns</b>: An iterator to the newly inserted object.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
@@ -1363,62 +1363,62 @@
       return iterator(b.insert_after(b.before_begin(), *n), this);
    }
 
-   //! <b>Effects</b>: Erases the element pointed to by i. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by i.
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased element. No destructors are called.
    void erase(const_iterator i)
    {  this->erase_and_dispose(i, detail::null_disposer());  }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
-   //! 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
+   //!
    //! <b>Complexity</b>: Average case O(std::distance(b, e)),
    //!   worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void erase(const_iterator b, const_iterator e)
    {  this->erase_and_dispose(b, e, detail::null_disposer());  }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)).
    //!   Worst case O(this->size()).
-   //! 
-   //! <b>Throws</b>: If the internal hasher or the equality functor throws. 
+   //!
+   //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    //!   Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
    {  return this->erase(value, this->priv_hasher(), this->priv_equal());  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "equal_func" must be a equality function that induces 
+   //!   "equal_func" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "equal_func" compares an arbitrary key with the contained values.
    //!
    //! <b>Effects</b>: Erases all the elements that have the same hash and
    //!   compare equal with the given key.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func or equal_func throw. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyHasher, class KeyValueEqual>
@@ -1427,14 +1427,14 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by i. 
+   //! <b>Effects</b>: Erases the element pointed to by i.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    void erase_and_dispose(const_iterator i, Disposer disposer
@@ -1452,12 +1452,12 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(std::distance(b, e)),
    //!   worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -1492,15 +1492,15 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    //!   Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1514,12 +1514,12 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func or equal_func throw. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyHasher, class KeyValueEqual, class Disposer>
@@ -1565,13 +1565,13 @@
       return count;
    }
 
-   //! <b>Effects</b>: Erases all of the elements. 
-   //! 
+   //! <b>Effects</b>: Erases all of the elements.
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
@@ -1581,14 +1581,14 @@
    }
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
-   //! 
-   //! <b>Effects</b>: Erases all of the elements. 
-   //! 
+   //!
+   //! <b>Effects</b>: Erases all of the elements.
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1606,25 +1606,25 @@
    }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given value
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    size_type count(const_reference value) const
    {  return this->count(value, this->priv_hasher(), this->priv_equal());  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "equal_func" must be a equality function that induces 
+   //!   "equal_func" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "equal_func" compares an arbitrary key with the contained values.
    //!
    //! <b>Effects</b>: Returns the number of contained elements with the given key
    //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func or equal throw.
    template<class KeyType, class KeyHasher, class KeyValueEqual>
    size_type count(const KeyType &key, const KeyHasher &hash_func, const KeyValueEqual &equal_func) const
@@ -1638,25 +1638,25 @@
    //!   "value" or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    iterator find(const_reference value)
    {  return this->find(value, this->priv_hasher(), this->priv_equal());   }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "equal_func" must be a equality function that induces 
+   //!   "equal_func" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "equal_func" compares an arbitrary key with the contained values.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   "key" according to the given hash and equality functor or end() if
    //!   that element does not exist.
    //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func or equal_func throw.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1672,29 +1672,29 @@
       return iterator(local_it, this);
    }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
    //!   "key" or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    const_iterator find(const_reference value) const
    {  return this->find(value, this->priv_hasher(), this->priv_equal());   }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "equal_func" must be a equality function that induces 
+   //!   "equal_func" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "equal_func" compares an arbitrary key with the contained values.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   "key" according to the given hasher and equality functor or end() if
    //!   that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func or equal_func throw.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1712,30 +1712,30 @@
    }
 
    //! <b>Effects</b>: Returns a range containing all elements with values equivalent
-   //!   to value. Returns std::make_pair(this->end(), this->end()) if no such 
+   //!   to value. Returns std::make_pair(this->end(), this->end()) if no such
    //!   elements exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)). Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return this->equal_range(value, this->priv_hasher(), this->priv_equal());  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "equal_func" must be a equality function that induces 
+   //!   "equal_func" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "equal_func" compares an arbitrary key with the contained values.
    //!
    //! <b>Effects</b>: Returns a range containing all elements with equivalent
-   //!   keys. Returns std::make_pair(this->end(), this->end()) if no such 
+   //!   keys. Returns std::make_pair(this->end(), this->end()) if no such
    //!   elements exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(key, hash_func, equal_func)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func or the equal_func throw.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1753,31 +1753,31 @@
    }
 
    //! <b>Effects</b>: Returns a range containing all elements with values equivalent
-   //!   to value. Returns std::make_pair(this->end(), this->end()) if no such 
+   //!   to value. Returns std::make_pair(this->end(), this->end()) if no such
    //!   elements exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)). Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
    {  return this->equal_range(value, this->priv_hasher(), this->priv_equal());  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "equal_func" must be a equality function that induces 
+   //!   "equal_func" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "equal_func" compares an arbitrary key with the contained values.
    //!
    //! <b>Effects</b>: Returns a range containing all elements with equivalent
-   //!   keys. Returns std::make_pair(this->end(), this->end()) if no such 
+   //!   keys. Returns std::make_pair(this->end(), this->end()) if no such
    //!   elements exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(key, hash_func, equal_func)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the hasher or equal_func throw.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1796,12 +1796,12 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator belonging to the unordered_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hash function throws.
    iterator iterator_to(reference value)
    {
@@ -1810,12 +1810,12 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator belonging to the
    //!   unordered_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hash function throws.
    const_iterator iterator_to(const_reference value) const
    {
@@ -1825,78 +1825,78 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid local_iterator belonging to the unordered_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static local_iterator s_local_iterator_to(reference value)
    {
       BOOST_STATIC_ASSERT((!stateful_value_traits));
       siterator sit = bucket_type::s_iterator_to(((hashtable_impl*)0)->priv_value_to_node(value));
-      return local_iterator(sit, (hashtable_impl*)0);  
+      return local_iterator(sit, (hashtable_impl*)0); 
    }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_local_iterator belonging to
    //!   the unordered_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static const_local_iterator s_local_iterator_to(const_reference value)
    {
       BOOST_STATIC_ASSERT((!stateful_value_traits));
       siterator sit = bucket_type::s_iterator_to(((hashtable_impl*)0)->priv_value_to_node(const_cast<value_type&>(value)));
-      return const_local_iterator(sit, (hashtable_impl*)0);  
+      return const_local_iterator(sit, (hashtable_impl*)0); 
    }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid local_iterator belonging to the unordered_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    local_iterator local_iterator_to(reference value)
    {
       siterator sit = bucket_type::s_iterator_to(this->priv_value_to_node(value));
-      return local_iterator(sit, this);  
+      return local_iterator(sit, this); 
    }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_local_iterator belonging to
    //!   the unordered_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_local_iterator local_iterator_to(const_reference value) const
    {
       siterator sit = bucket_type::s_iterator_to
          (const_cast<node &>(this->priv_value_to_node(value)));
-      return const_local_iterator(sit, this);  
+      return const_local_iterator(sit, this); 
    }
 
    //! <b>Effects</b>: Returns the number of buckets passed in the constructor
    //!   or the last rehash function.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type bucket_count() const
    {  return this->priv_buckets_len();   }
@@ -1904,33 +1904,33 @@
    //! <b>Requires</b>: n is in the range [0, this->bucket_count()).
    //!
    //! <b>Effects</b>: Returns the number of elements in the nth bucket.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type bucket_size(size_type n) const
    {  return this->priv_buckets()[n].size();   }
 
    //! <b>Effects</b>: Returns the index of the bucket in which elements
    //!   with keys equivalent to k would be found, if any such element existed.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the hash functor throws.
    //!
    //! <b>Note</b>: the return value is in the range [0, this->bucket_count()).
    size_type bucket(const key_type& k)  const
    {  return this->bucket(k, this->priv_hasher());   }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
    //! <b>Effects</b>: Returns the index of the bucket in which elements
    //!   with keys equivalent to k would be found, if any such element existed.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func throws.
    //!
    //! <b>Note</b>: the return value is in the range [0, this->bucket_count()).
@@ -1940,9 +1940,9 @@
 
    //! <b>Effects</b>: Returns the bucket array pointer passed in the constructor
    //!   or the last rehash function.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bucket_ptr bucket_pointer() const
    {  return this->priv_buckets();   }
@@ -1951,13 +1951,13 @@
    //!
    //! <b>Effects</b>: Returns a local_iterator pointing to the beginning
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    local_iterator begin(size_type n)
    {  return local_iterator(this->priv_buckets()[n].begin(), this);  }
 
@@ -1965,13 +1965,13 @@
    //!
    //! <b>Effects</b>: Returns a const_local_iterator pointing to the beginning
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    const_local_iterator begin(size_type n) const
    {  return this->cbegin(n);  }
 
@@ -1979,13 +1979,13 @@
    //!
    //! <b>Effects</b>: Returns a const_local_iterator pointing to the beginning
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    const_local_iterator cbegin(size_type n) const
    {
       siterator sit = const_cast<bucket_type&>(this->priv_buckets()[n]).begin();
@@ -1996,13 +1996,13 @@
    //!
    //! <b>Effects</b>: Returns a local_iterator pointing to the end
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    local_iterator end(size_type n)
    {  return local_iterator(this->priv_buckets()[n].end(), this);  }
 
@@ -2010,11 +2010,11 @@
    //!
    //! <b>Effects</b>: Returns a const_local_iterator pointing to the end
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
    //!   containing all of the elements in the nth bucket.
    const_local_iterator end(size_type n) const
@@ -2024,13 +2024,13 @@
    //!
    //! <b>Effects</b>: Returns a const_local_iterator pointing to the end
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    const_local_iterator cend(size_type n) const
    {  return const_local_iterator(const_cast<bucket_type&>(this->priv_buckets()[n]).end(), this);  }
 
@@ -2044,12 +2044,12 @@
    //!   the values from the old bucket and inserts then in the new one.
    //!   Bucket traits hold by *this is assigned from new_bucket_traits.
    //!   If the container is configured as incremental<>, the split bucket is set
-   //!   to the new bucket_len(). 
+   //!   to the new bucket_len().
    //!
    //!   If store_hash option is true, this method does not use the hash function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case linear in this->size(), worst case quadratic.
-   //! 
+   //!
    //! <b>Throws</b>: If the hasher functor throws. Basic guarantee.
    void rehash(const bucket_traits &new_bucket_traits)
    {
@@ -2058,7 +2058,7 @@
       bucket_ptr old_buckets     = this->priv_buckets();
       size_type  old_buckets_len = this->priv_buckets_len();
 
-      //Check power of two bucket array if the option is activated      
+      //Check power of two bucket array if the option is activated     
       BOOST_INTRUSIVE_INVARIANT_ASSERT
       (!power_2_buckets || (0 == (new_buckets_len & (new_buckets_len-1u))));
 
@@ -2066,7 +2066,7 @@
       const bool same_buffer = old_buckets == new_buckets;
       //If the new bucket length is a common factor
       //of the old one we can avoid hash calculations.
-      const bool fast_shrink = (!incremental) && (old_buckets_len > new_buckets_len) && 
+      const bool fast_shrink = (!incremental) && (old_buckets_len > new_buckets_len) &&
          (power_2_buckets ||(old_buckets_len % new_buckets_len) == 0);
       //If we are shrinking the same bucket array and it's
       //is a fast shrink, just rehash the last nodes
@@ -2147,11 +2147,11 @@
 
    //! <b>Requires</b>:
    //!
-   //! <b>Effects</b>: 
-   //! 
-   //! <b>Complexity</b>: 
-   //! 
-   //! <b>Throws</b>: 
+   //! <b>Effects</b>:
+   //!
+   //! <b>Complexity</b>:
+   //!
+   //! <b>Throws</b>:
    //!
    //! <b>Note</b>: this method is only available if incremental<true> option is activated.
    bool incremental_rehash(bool grow = true)
@@ -2214,15 +2214,15 @@
    }
 
    //! <b>Effects</b>: If new_bucket_traits.bucket_count() is not
-   //!   this->bucket_count()/2 or this->bucket_count()*2, or 
+   //!   this->bucket_count()/2 or this->bucket_count()*2, or
    //!   this->split_bucket() != new_bucket_traits.bucket_count() returns false
    //!   and does nothing.
    //!
    //!   Otherwise, copy assigns new_bucket_traits to the internal bucket_traits
    //!   and transfers all the objects from old buckets to the new ones.
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to size().
-   //! 
+   //!
    //! <b>Throws</b>: Nothing
    //!
    //! <b>Note</b>: this method is only available if incremental<true> option is activated.
@@ -2267,11 +2267,11 @@
 
    //! <b>Requires</b>:
    //!
-   //! <b>Effects</b>: 
-   //! 
-   //! <b>Complexity</b>: 
-   //! 
-   //! <b>Throws</b>: 
+   //! <b>Effects</b>:
+   //!
+   //! <b>Complexity</b>:
+   //!
+   //! <b>Throws</b>:
    size_type split_count() const
    {
       //This function is only available if incremental hashing is activated
@@ -2282,11 +2282,11 @@
    //! <b>Effects</b>: Returns the nearest new bucket count optimized for
    //!   the container that is bigger or equal than n. This suggestion can be
    //!   used to create bucket arrays with a size that will usually improve
-   //!   container's performance. If such value does not exist, the 
+   //!   container's performance. If such value does not exist, the
    //!   higher possible value is returned.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static size_type suggested_upper_bucket_count(size_type n)
    {
@@ -2301,11 +2301,11 @@
    //! <b>Effects</b>: Returns the nearest new bucket count optimized for
    //!   the container that is smaller or equal than n. This suggestion can be
    //!   used to create bucket arrays with a size that will usually improve
-   //!   container's performance. If such value does not exist, the 
+   //!   container's performance. If such value does not exist, the
    //!   lowest possible value is returned.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static size_type suggested_lower_bucket_count(size_type n)
    {
@@ -2613,7 +2613,7 @@
       bool last_in_group = (first_end_ptr <= nxt && nxt <= last_end_ptr) ||
                             (group_traits::get_next(nxt) != elem);
       bool first_in_group = node_traits::get_next(prev_in_group) != elem;
-      
+     
       if(first_in_group){
          node_ptr start_pos;
          if(last_in_group){
@@ -2684,7 +2684,7 @@
       slist_node_ptr elem(i.slist_it().pointed_node());
       slist_node_ptr f_bucket_end, l_bucket_end;
       if(store_hash){
-         f_bucket_end = l_bucket_end = 
+         f_bucket_end = l_bucket_end =
          (this->priv_buckets()
             [this->priv_hash_to_bucket
                (this->priv_stored_hash(elem, store_hash_t()))
@@ -2720,7 +2720,7 @@
       const real_bucket_traits &rbt = this->priv_real_bucket_traits();
       return rbt.bucket_begin() + rbt.bucket_count();
    }
-   
+  
    siterator priv_invalid_local_it() const
    {  return priv_invalid_bucket()->end();  }
 
@@ -2887,7 +2887,7 @@
       if(constant_time_size && this->empty()){
          return priv_invalid_local_it();
       }
-      
+     
       siterator it = previt;
       ++it;
 
@@ -3008,7 +3008,7 @@
             ++count;
          }
       }
-   
+  
       //If we reached the end, find the first, non-empty bucket
       for(bucket_number_second = bucket_number_first+1
          ; bucket_number_second != this->priv_buckets_len()
@@ -3043,7 +3043,7 @@
 struct make_hashtable_opt
 {
    typedef typename pack_options
-      < uset_defaults<T>, 
+      < uset_defaults<T>,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4, O5, O6, O7, O8, O9, O10
          #else
@@ -3061,7 +3061,7 @@
       , detail::eval_value_traits<value_traits>
       , detail::identity<value_traits>
       >::type                                            real_value_traits;
-   typedef typename packed_options::bucket_traits        specified_bucket_traits;   
+   typedef typename packed_options::bucket_traits        specified_bucket_traits;  
 
    //Real bucket traits must be calculated from options and calculated value_traits
    typedef typename detail::get_slist_impl
@@ -3111,7 +3111,7 @@
    /// @cond
    typedef hashtable_impl
       <  typename make_hashtable_opt
-            <T, false, 
+            <T, false,
             #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
             O1, O2, O3, O4, O5, O6, O7, O8, O9, O10
             #else
@@ -3132,7 +3132,7 @@
 template<class T, class O1, class O2, class O3, class O4, class O5, class O6, class O7, class O8, class O9, class O10>
 #endif
 class hashtable
-   :  public make_hashtable<T, 
+   :  public make_hashtable<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4, O5, O6, O7, O8, O9, O10
          #else
@@ -3140,7 +3140,7 @@
          #endif
          >::type
 {
-   typedef typename make_hashtable<T, 
+   typedef typename make_hashtable<T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4, O5, O6, O7, O8, O9, O10
       #else
@@ -3180,8 +3180,8 @@
 
 #endif
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/linear_slist_algorithms.hpp
==============================================================================
--- trunk/boost/intrusive/linear_slist_algorithms.hpp	(original)
+++ trunk/boost/intrusive/linear_slist_algorithms.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -41,7 +41,7 @@
 //! <b>Static functions</b>:
 //!
 //! <tt>static node_ptr get_next(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_next(node_ptr n, node_ptr next);</tt>
 template<class NodeTraits>
 class linear_slist_algorithms
@@ -63,37 +63,37 @@
    //! <b>Effects</b>: Constructs an non-used list element, putting the next
    //!   pointer to null:
    //!  <tt>NodeTraits::get_next(this_node) == node_ptr()</tt>
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void init(const node_ptr & this_node);
 
    //! <b>Requires</b>: this_node must be in a circular list or be an empty circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Returns true is "this_node" is the only node of a circular list:
    //!  or it's a not inserted node:
    //!  <tt>return node_ptr() == NodeTraits::get_next(this_node) || NodeTraits::get_next(this_node) == this_node</tt>
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static bool unique(const_node_ptr this_node);
 
    //! <b>Effects</b>: Returns true is "this_node" has the same state as if
    //!  it was inited using "init(node_ptr)"
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static bool inited(const_node_ptr this_node);
 
    //! <b>Requires</b>: prev_node must be in a circular list or be an empty circular list.
-   //! 
+   //!
    //! <b>Effects</b>: Unlinks the next node of prev_node from the circular list.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void unlink_after(const node_ptr & prev_node);
 
@@ -102,28 +102,28 @@
    //!
    //! <b>Effects</b>: Unlinks the range (prev_node, last_node) from the linear list.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
    //! <b>Throws</b>: Nothing.
    static void unlink_after(const node_ptr & prev_node, const node_ptr & last_node);
 
    //! <b>Requires</b>: prev_node must be a node of a linear list.
-   //! 
+   //!
    //! <b>Effects</b>: Links this_node after prev_node in the linear list.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void link_after(const node_ptr & prev_node, const node_ptr & this_node);
 
    //! <b>Requires</b>: b and e must be nodes of the same linear list or an empty range.
    //!   and p must be a node of a different linear list.
-   //! 
+   //!
    //! <b>Effects</b>: Removes the nodes from (b, e] range from their linear list and inserts
    //!   them after p in p's linear list.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void transfer_after(const node_ptr & p, const node_ptr & b, const node_ptr & e);
 
@@ -132,34 +132,34 @@
    //! <b>Effects</b>: Constructs an empty list, making this_node the only
    //!   node of the circular list:
    //!  <tt>NodeTraits::get_next(this_node) == this_node</tt>.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void init_header(const node_ptr & this_node)
    {  NodeTraits::set_next(this_node, node_ptr ());  }
 
    //! <b>Requires</b>: this_node and prev_init_node must be in the same linear list.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the previous node of this_node in the linear list starting.
    //!   the search from prev_init_node. The first node checked for equality
    //!   is NodeTraits::get_next(prev_init_node).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements between prev_init_node and this_node.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr get_previous_node(const node_ptr & prev_init_node, const node_ptr & this_node)
    {  return base_t::get_previous_node(prev_init_node, this_node);   }
 
    //! <b>Requires</b>: this_node must be in a linear list or be an empty linear list.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes in a linear list. If the linear list
    //!  is empty, returns 1.
-   //! 
-   //! <b>Complexity</b>: Linear 
-   //! 
+   //!
+   //! <b>Complexity</b>: Linear
+   //!
    //! <b>Throws</b>: Nothing.
-   static std::size_t count(const const_node_ptr & this_node) 
+   static std::size_t count(const const_node_ptr & this_node)
    {
       std::size_t result = 0;
       const_node_ptr p = this_node;
@@ -172,12 +172,12 @@
 
    //! <b>Requires</b>: this_node and other_node must be nodes inserted
    //!  in linear lists or be empty linear lists.
-   //! 
+   //!
    //! <b>Effects</b>: Moves all the nodes previously chained after this_node after other_node
    //!   and vice-versa.
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: Nothing.
    static void swap_trailing_nodes(const node_ptr & this_node, const node_ptr & other_node)
    {
@@ -187,17 +187,17 @@
       NodeTraits::set_next(other_node, this_nxt);
    }
 
-   //! <b>Effects</b>: Reverses the order of elements in the list. 
-   //! 
-   //! <b>Returns</b>: The new first node of the list. 
-   //! 
+   //! <b>Effects</b>: Reverses the order of elements in the list.
+   //!
+   //! <b>Returns</b>: The new first node of the list.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: This function is linear to the contained elements.
    static node_ptr reverse(const node_ptr & p)
    {
       if(!p) return node_ptr();
-      node_ptr i = NodeTraits::get_next(p); 
+      node_ptr i = NodeTraits::get_next(p);
       node_ptr first(p);
       while(i){
          node_ptr nxti(NodeTraits::get_next(i));
@@ -213,9 +213,9 @@
    //!
    //! <b>Returns</b>: A pair containing the new first and last node of the list or
    //!   if there has been any movement, a null pair if n leads to no movement.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements plus the number moved positions.
    static std::pair<node_ptr, node_ptr> move_first_n_backwards(const node_ptr & p, std::size_t n)
    {
@@ -255,7 +255,7 @@
       if(!end_found){
          old_last = base_t::get_previous_node(first, node_ptr());
       }
-      
+     
       //Now link p after the new last node
       NodeTraits::set_next(old_last, p);
       NodeTraits::set_next(new_last, node_ptr());
@@ -268,9 +268,9 @@
    //!
    //! <b>Returns</b>: A pair containing the new first and last node of the list or
    //!   if there has been any movement, a null pair if n leads to no movement.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements plus the number moved positions.
    static std::pair<node_ptr, node_ptr> move_first_n_forward(const node_ptr & p, std::size_t n)
    {
@@ -300,7 +300,7 @@
          //If the shift is a multiple of the size there is nothing to do
          if(!new_before_last_pos)
             return ret;
-         
+        
          for( new_last = p
             ; --new_before_last_pos
             ; new_last = node_traits::get_next(new_last)){
@@ -319,8 +319,8 @@
    }
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/link_mode.hpp
==============================================================================
--- trunk/boost/intrusive/link_mode.hpp	(original)
+++ trunk/boost/intrusive/link_mode.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -40,7 +40,7 @@
    //!the container without using any function provided by the containers.
    auto_unlink
 };
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #endif //BOOST_INTRUSIVE_VALUE_LINK_TYPE_HPP
Modified: trunk/boost/intrusive/list.hpp
==============================================================================
--- trunk/boost/intrusive/list.hpp	(original)
+++ trunk/boost/intrusive/list.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -59,7 +59,7 @@
 
 /// @endcond
 
-//! The class template list is an intrusive container that mimics most of the 
+//! The class template list is an intrusive container that mimics most of the
 //! interface of std::list as described in the C++ standard.
 //!
 //! The template parameter \c T is the type to be managed by the container.
@@ -118,12 +118,12 @@
    //noncopyable
    BOOST_MOVABLE_BUT_NOT_COPYABLE(list_impl)
 
-   enum { safemode_or_autounlink  = 
+   enum { safemode_or_autounlink  =
             (int)real_value_traits::link_mode == (int)auto_unlink   ||
             (int)real_value_traits::link_mode == (int)safe_link     };
 
    //Constant-time size is incompatible with auto-unlink hooks!
-   BOOST_STATIC_ASSERT(!(constant_time_size && 
+   BOOST_STATIC_ASSERT(!(constant_time_size &&
                         ((int)real_value_traits::link_mode == (int)auto_unlink)
                       ));
 
@@ -196,25 +196,25 @@
    real_value_traits &get_real_value_traits()
    {  return this->get_real_value_traits(detail::bool_<external_value_traits>());  }
 
-   //! <b>Effects</b>: constructs an empty list. 
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //! <b>Effects</b>: constructs an empty list.
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: If real_value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks).
    list_impl(const value_traits &v_traits = value_traits())
       :  data_(v_traits)
-   {  
+   { 
       this->priv_size_traits().set_size(size_type(0));
-      node_algorithms::init_header(this->get_root_node());  
+      node_algorithms::init_header(this->get_root_node()); 
    }
 
    //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Constructs a list equal to the range [first,last).
-   //! 
-   //! <b>Complexity</b>: Linear in std::distance(b, e). No copy constructors are called.  
-   //! 
+   //!
+   //! <b>Complexity</b>: Linear in std::distance(b, e). No copy constructors are called. 
+   //!
    //! <b>Throws</b>: If real_value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks).
    template<class Iterator>
@@ -227,43 +227,43 @@
    }
 
    //! <b>Effects</b>: to-do
-   //!   
+   //!  
    list_impl(BOOST_RV_REF(list_impl) x)
       : data_(::boost::move(x.priv_value_traits()))
    {
       this->priv_size_traits().set_size(size_type(0));
-      node_algorithms::init_header(this->get_root_node());  
+      node_algorithms::init_header(this->get_root_node()); 
       this->swap(x);
    }
 
    //! <b>Effects</b>: to-do
-   //!   
-   list_impl& operator=(BOOST_RV_REF(list_impl) x) 
+   //!  
+   list_impl& operator=(BOOST_RV_REF(list_impl) x)
    {  this->swap(x); return *this;  }
 
-   //! <b>Effects</b>: If it's not a safe-mode or an auto-unlink value_type 
+   //! <b>Effects</b>: If it's not a safe-mode or an auto-unlink value_type
    //!   the destructor does nothing
-   //!   (ie. no code is generated). Otherwise it detaches all elements from this. 
-   //!   In this case the objects in the list are not deleted (i.e. no destructors 
+   //!   (ie. no code is generated). Otherwise it detaches all elements from this.
+   //!   In this case the objects in the list are not deleted (i.e. no destructors
    //!   are called), but the hooks according to the ValueTraits template parameter
    //!   are set to their default value.
-   //! 
-   //! <b>Complexity</b>: Linear to the number of elements in the list, if 
-   //!   it's a safe-mode or auto-unlink value . Otherwise constant. 
-   ~list_impl() 
+   //!
+   //! <b>Complexity</b>: Linear to the number of elements in the list, if
+   //!   it's a safe-mode or auto-unlink value . Otherwise constant.
+   ~list_impl()
    {}
 
    //! <b>Requires</b>: value must be an lvalue.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the back of the list.
    //!   No copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
-   void push_back(reference value) 
+   void push_back(reference value)
    {
       node_ptr to_insert = get_real_value_traits().to_node_ptr(value);
       if(safemode_or_autounlink)
@@ -273,31 +273,31 @@
    }
 
    //! <b>Requires</b>: value must be an lvalue.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the front of the list.
    //!   No copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
-   void push_front(reference value) 
+   void push_front(reference value)
    {
       node_ptr to_insert = get_real_value_traits().to_node_ptr(value);
       if(safemode_or_autounlink)
          BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::inited(to_insert));
-      node_algorithms::link_before(node_traits::get_next(this->get_root_node()), to_insert); 
+      node_algorithms::link_before(node_traits::get_next(this->get_root_node()), to_insert);
       this->priv_size_traits().increment();
    }
 
    //! <b>Effects</b>: Erases the last element of the list.
    //!   No destructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references) to the erased element.
    void pop_back()
    {  return this->pop_back_and_dispose(detail::null_disposer());   }
@@ -307,11 +307,11 @@
    //! <b>Effects</b>: Erases the last element of the list.
    //!   No destructors are called.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators to the erased element.
    template<class Disposer>
    void pop_back_and_dispose(Disposer disposer)
@@ -326,11 +326,11 @@
 
    //! <b>Effects</b>: Erases the first element of the list.
    //!   No destructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references) to the erased element.
    void pop_front()
    {  return this->pop_front_and_dispose(detail::null_disposer());   }
@@ -340,15 +340,15 @@
    //! <b>Effects</b>: Erases the first element of the list.
    //!   No destructors are called.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators to the erased element.
    template<class Disposer>
    void pop_front_and_dispose(Disposer disposer)
-   { 
+   {
       node_ptr to_erase = node_traits::get_next(this->get_root_node());
       node_algorithms::unlink(to_erase);
       this->priv_size_traits().decrement();
@@ -358,197 +358,197 @@
    }
 
    //! <b>Effects</b>: Returns a reference to the first element of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   reference front() 
+   reference front()
    { return *get_real_value_traits().to_value_ptr(node_traits::get_next(this->get_root_node())); }
 
    //! <b>Effects</b>: Returns a const_reference to the first element of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_reference front() const 
+   const_reference front() const
    { return *get_real_value_traits().to_value_ptr(uncast(node_traits::get_next(this->get_root_node()))); }
 
    //! <b>Effects</b>: Returns a reference to the last element of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   reference back() 
+   reference back()
    { return *get_real_value_traits().to_value_ptr(node_traits::get_previous(this->get_root_node())); }
 
    //! <b>Effects</b>: Returns a const_reference to the last element of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_reference back() const 
+   const_reference back() const
    { return *get_real_value_traits().to_value_ptr(uncast(node_traits::get_previous(this->get_root_node()))); }
 
    //! <b>Effects</b>: Returns an iterator to the first element contained in the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   iterator begin() 
+   iterator begin()
    { return iterator(node_traits::get_next(this->get_root_node()), this); }
 
    //! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_iterator begin() const 
+   const_iterator begin() const
    { return this->cbegin(); }
 
    //! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_iterator cbegin() const 
+   const_iterator cbegin() const
    { return const_iterator(node_traits::get_next(this->get_root_node()), this); }
 
    //! <b>Effects</b>: Returns an iterator to the end of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   iterator end() 
+   iterator end()
    { return iterator(this->get_root_node(), this); }
 
    //! <b>Effects</b>: Returns a const_iterator to the end of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_iterator end() const 
+   const_iterator end() const
    { return this->cend(); }
 
    //! <b>Effects</b>: Returns a constant iterator to the end of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    const_iterator cend() const
    { return const_iterator(uncast(this->get_root_node()), this); }
 
-   //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning 
-   //! of the reversed list. 
-   //! 
+   //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
+   //! of the reversed list.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    reverse_iterator rbegin()
    { return reverse_iterator(this->end()); }
 
-   //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning 
-   //! of the reversed list. 
-   //! 
+   //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
+   //! of the reversed list.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_reverse_iterator rbegin() const 
+   const_reverse_iterator rbegin() const
    { return this->crbegin(); }
 
-   //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning 
-   //! of the reversed list. 
-   //! 
+   //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
+   //! of the reversed list.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_reverse_iterator crbegin() const 
+   const_reverse_iterator crbegin() const
    { return const_reverse_iterator(end()); }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
-   //! of the reversed list. 
-   //! 
+   //! of the reversed list.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   reverse_iterator rend()   
+   reverse_iterator rend()  
    { return reverse_iterator(begin()); }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
-   //! of the reversed list. 
-   //! 
+   //! of the reversed list.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_reverse_iterator rend() const   
+   const_reverse_iterator rend() const  
    { return this->crend(); }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
-   //! of the reversed list. 
-   //! 
+   //! of the reversed list.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_reverse_iterator crend() const   
+   const_reverse_iterator crend() const  
    { return const_reverse_iterator(this->begin()); }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of list.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the list associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static list_impl &container_from_end_iterator(iterator end_iterator)
    {  return list_impl::priv_container_from_end_iterator(end_iterator);   }
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of list.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the list associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const list_impl &container_from_end_iterator(const_iterator end_iterator)
    {  return list_impl::priv_container_from_end_iterator(end_iterator);   }
 
    //! <b>Effects</b>: Returns the number of the elements contained in the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements contained in the list.
    //!   if constant-time size option is disabled. Constant time otherwise.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    size_type size() const
    {
       if(constant_time_size)
          return this->priv_size_traits().get_size();
       else
-         return node_algorithms::count(this->get_root_node()) - 1; 
+         return node_algorithms::count(this->get_root_node()) - 1;
    }
 
    //! <b>Effects</b>: Returns true if the list contains no elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    bool empty() const
    {  return node_algorithms::unique(this->get_root_node());   }
 
    //! <b>Effects</b>: Swaps the elements of x and *this.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    void swap(list_impl& other)
    {
-      node_algorithms::swap_nodes(this->get_root_node(), other.get_root_node()); 
+      node_algorithms::swap_nodes(this->get_root_node(), other.get_root_node());
       if(constant_time_size){
          size_type backup = this->priv_size_traits().get_size();
          this->priv_size_traits().set_size(other.priv_size_traits().get_size());
@@ -559,11 +559,11 @@
    //! <b>Effects</b>: Moves backwards all the elements, so that the first
    //!   element becomes the second, the second becomes the third...
    //!   the last element becomes the first one.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of shifts.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    void shift_backwards(size_type n = 1)
    {  node_algorithms::move_forward(this->get_root_node(), n);  }
@@ -571,11 +571,11 @@
    //! <b>Effects</b>: Moves forward all the elements, so that the second
    //!   element becomes the first, the third becomes the second...
    //!   the first element becomes the last one.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of shifts.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    void shift_forward(size_type n = 1)
    {  node_algorithms::move_backwards(this->get_root_node(), n);  }
@@ -587,9 +587,9 @@
    //!   or end() if no such element exists.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references) to the
    //!   erased element.
    iterator erase(const_iterator i)
@@ -602,13 +602,13 @@
    //!
    //! <b>Returns</b>: the first element remaining beyond the removed elements,
    //!   or end() if no such element exists.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of erased elements if it's a safe-mode
    //!   or auto-unlink value, or constant-time size is enabled. Constant-time otherwise.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators (but not the references) to the 
+   //!
+   //! <b>Note</b>: Invalidates the iterators (but not the references) to the
    //!   erased elements.
    iterator erase(const_iterator b, const_iterator e)
    {
@@ -629,13 +629,13 @@
    //!
    //! <b>Returns</b>: the first element remaining beyond the removed elements,
    //!   or end() if no such element exists.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of erased elements if it's a safe-mode
    //!   or auto-unlink value is enabled. Constant-time otherwise.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators (but not the references) to the 
+   //!
+   //! <b>Note</b>: Invalidates the iterators (but not the references) to the
    //!   erased elements.
    iterator erase(const_iterator b, const_iterator e, difference_type n)
    {
@@ -662,9 +662,9 @@
    //!   or end() if no such element exists.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators to the erased element.
    template <class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -693,11 +693,11 @@
    //!
    //! <b>Returns</b>: the first element remaining beyond the removed elements,
    //!   or end() if no such element exists.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements erased.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators to the erased elements.
    template <class Disposer>
    iterator erase_and_dispose(const_iterator b, const_iterator e, Disposer disposer)
@@ -717,17 +717,17 @@
 
    //! <b>Effects</b>: Erases all the elements of the container.
    //!   No destructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements of the list.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references) to the erased elements.
    void clear()
    {
       if(safemode_or_autounlink){
-         this->clear_and_dispose(detail::null_disposer()); 
+         this->clear_and_dispose(detail::null_disposer());
       }
       else{
          node_algorithms::init_header(this->get_root_node());
@@ -740,11 +740,11 @@
    //! <b>Effects</b>: Erases all the elements of the container.
    //!   No destructors are called.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements of the list.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators to the erased elements.
    template <class Disposer>
    void clear_and_dispose(Disposer disposer)
@@ -765,15 +765,15 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const list_impl &src, Cloner cloner, Disposer disposer)
@@ -793,11 +793,11 @@
    //! <b>Effects</b>: Inserts the value before the position pointed by p.
    //!
    //! <b>Returns</b>: An iterator to the inserted element.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time. No copy constructors are called.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    iterator insert(const_iterator p, reference value)
    {
@@ -809,16 +809,16 @@
       return iterator(to_insert, this);
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield 
+   //! <b>Requires</b>: Dereferencing iterator must yield
    //!   an lvalue of type value_type and p must be a valid iterator of *this.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the range pointed by b and e before the position p.
    //!   No copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements inserted.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    template<class Iterator>
    void insert(const_iterator p, Iterator b, Iterator e)
@@ -827,19 +827,19 @@
          this->insert(p, *b);
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield 
+   //! <b>Requires</b>: Dereferencing iterator must yield
    //!   an lvalue of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Clears the list and inserts the range pointed by b and e.
    //!   No destructors or copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements inserted plus
    //!   linear to the elements contained in the list if it's a safe-mode
    //!   or auto-unlink value.
    //!   Linear to the number of elements inserted in the list otherwise.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!   to the erased elements.
    template<class Iterator>
@@ -851,18 +851,18 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Requires</b>: Dereferencing iterator must yield 
+   //! <b>Requires</b>: Dereferencing iterator must yield
    //!   an lvalue of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Clears the list and inserts the range pointed by b and e.
    //!   No destructors or copy constructors are called.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements inserted plus
    //!   linear to the elements contained in the list.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!   to the erased elements.
    template<class Iterator, class Disposer>
@@ -880,7 +880,7 @@
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Iterators of values obtained from list x now point to elements of
    //!    this list. Iterators of this list and all the references are not invalidated.
    void splice(const_iterator p, list_impl& x)
@@ -897,15 +897,15 @@
 
    //! <b>Requires</b>: p must be a valid iterator of *this.
    //!   new_ele must point to an element contained in list x.
-   //! 
-   //! <b>Effects</b>: Transfers the value pointed by new_ele, from list x to this list, 
+   //!
+   //! <b>Effects</b>: Transfers the value pointed by new_ele, from list x to this list,
    //!   before the the element pointed by p. No destructors or copy constructors are called.
-   //!   If p == new_ele or p == ++new_ele, this function is a null operation. 
-   //! 
+   //!   If p == new_ele or p == ++new_ele, this function is a null operation.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
    //!   list. Iterators of this list and all the references are not invalidated.
    void splice(const_iterator p, list_impl&x, const_iterator new_ele)
@@ -917,15 +917,15 @@
 
    //! <b>Requires</b>: p must be a valid iterator of *this.
    //!   start and end must point to elements contained in list x.
-   //! 
-   //! <b>Effects</b>: Transfers the range pointed by start and end from list x to this list, 
+   //!
+   //! <b>Effects</b>: Transfers the range pointed by start and end from list x to this list,
    //!   before the the element pointed by p. No destructors or copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements transferred
    //!   if constant-time size option is enabled. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
    //!   list. Iterators of this list and all the references are not invalidated.
    void splice(const_iterator p, list_impl&x, const_iterator start, const_iterator end)
@@ -939,14 +939,14 @@
    //! <b>Requires</b>: p must be a valid iterator of *this.
    //!   start and end must point to elements contained in list x.
    //!   n == std::distance(start, end)
-   //! 
-   //! <b>Effects</b>: Transfers the range pointed by start and end from list x to this list, 
+   //!
+   //! <b>Effects</b>: Transfers the range pointed by start and end from list x to this list,
    //!   before the the element pointed by p. No destructors or copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
    //!   list. Iterators of this list and all the references are not invalidated.
    void splice(const_iterator p, list_impl&x, const_iterator start, const_iterator end, difference_type n)
@@ -966,25 +966,25 @@
       }
    }
 
-   //! <b>Effects</b>: This function sorts the list *this according to std::less<value_type>. 
+   //! <b>Effects</b>: This function sorts the list *this according to std::less<value_type>.
    //!   The sort is stable, that is, the relative order of equivalent elements is preserved.
-   //! 
+   //!
    //! <b>Throws</b>: If real_value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
    //!   or std::less<value_type> throws. Basic guarantee.
    //!
    //! <b>Notes</b>: Iterators and references are not invalidated.
-   //! 
+   //!
    //! <b>Complexity</b>: The number of comparisons is approximately N log N, where N
    //!   is the list's size.
-   void sort() 
+   void sort()
    {  this->sort(std::less<value_type>());  }
 
    //! <b>Requires</b>: p must be a comparison function that induces a strict weak ordering
-   //! 
-   //! <b>Effects</b>: This function sorts the list *this according to p. The sort is 
+   //!
+   //! <b>Effects</b>: This function sorts the list *this according to p. The sort is
    //!   stable, that is, the relative order of equivalent elements is preserved.
-   //! 
+   //!
    //! <b>Throws</b>: If real_value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
    //!   or the predicate throws. Basic guarantee.
@@ -992,13 +992,13 @@
    //! <b>Notes</b>: This won't throw if list_base_hook<> or
    //!   list_member_hook are used.
    //!   Iterators and references are not invalidated.
-   //! 
+   //!
    //! <b>Complexity</b>: The number of comparisons is approximately N log N, where N
    //!   is the list's size.
    template<class Predicate>
    void sort(Predicate p)
    {
-      if(node_traits::get_next(this->get_root_node()) 
+      if(node_traits::get_next(this->get_root_node())
          != node_traits::get_previous(this->get_root_node())){
          list_impl carry(this->priv_value_traits());
          detail::array_initializer<list_impl, 64> counter(this->priv_value_traits());
@@ -1021,32 +1021,32 @@
    }
 
    //! <b>Effects</b>: This function removes all of x's elements and inserts them
-   //!   in order into *this according to std::less<value_type>. The merge is stable; 
-   //!   that is, if an element from *this is equivalent to one from x, then the element 
-   //!   from *this will precede the one from x. 
-   //! 
+   //!   in order into *this according to std::less<value_type>. The merge is stable;
+   //!   that is, if an element from *this is equivalent to one from x, then the element
+   //!   from *this will precede the one from x.
+   //!
    //! <b>Throws</b>: If std::less<value_type> throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: This function is linear time: it performs at most
    //!   size() + x.size() - 1 comparisons.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated
    void merge(list_impl& x)
    { this->merge(x, std::less<value_type>()); }
 
    //! <b>Requires</b>: p must be a comparison function that induces a strict weak
    //!   ordering and both *this and x must be sorted according to that ordering
-   //!   The lists x and *this must be distinct. 
-   //! 
+   //!   The lists x and *this must be distinct.
+   //!
    //! <b>Effects</b>: This function removes all of x's elements and inserts them
-   //!   in order into *this. The merge is stable; that is, if an element from *this is 
-   //!   equivalent to one from x, then the element from *this will precede the one from x. 
-   //! 
+   //!   in order into *this. The merge is stable; that is, if an element from *this is
+   //!   equivalent to one from x, then the element from *this will precede the one from x.
+   //!
    //! <b>Throws</b>: If the predicate throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: This function is linear time: it performs at most
    //!   size() + x.size() - 1 comparisons.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated.
    template<class Predicate>
    void merge(list_impl& x, Predicate p)
@@ -1073,23 +1073,23 @@
       }
    }
 
-   //! <b>Effects</b>: Reverses the order of elements in the list. 
-   //! 
+   //! <b>Effects</b>: Reverses the order of elements in the list.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: This function is linear time.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated
    void reverse()
    {  node_algorithms::reverse(this->get_root_node());   }
 
    //! <b>Effects</b>: Removes all the elements that compare equal to value.
    //!   No destructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: If std::equal_to<value_type> throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time. It performs exactly size() comparisons for equality.
-   //! 
+   //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
    //!   and iterators to elements that are not removed remain valid.
    void remove(const_reference value)
@@ -1101,9 +1101,9 @@
    //!   Disposer::operator()(pointer) is called for every removed element.
    //!
    //! <b>Throws</b>: If std::equal_to<value_type> throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time. It performs exactly size() comparisons for equality.
-   //! 
+   //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
    //!   and iterators to elements that are not removed remain valid.
    template<class Disposer>
@@ -1112,11 +1112,11 @@
 
    //! <b>Effects</b>: Removes all the elements for which a specified
    //!   predicate is satisfied. No destructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: If pred throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time. It performs exactly size() calls to the predicate.
-   //! 
+   //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
    //!   and iterators to elements that are not removed remain valid.
    template<class Pred>
@@ -1130,7 +1130,7 @@
    //!   Disposer::operator()(pointer) is called for every removed element.
    //!
    //! <b>Throws</b>: If pred throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time. It performs exactly size() comparisons for equality.
    //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
@@ -1150,26 +1150,26 @@
       }
    }
 
-   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent 
+   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
    //!   elements that are equal from the list. No destructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: If std::equal_to<value_type throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time (size()-1 comparisons calls to pred()).
-   //! 
+   //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
    //!   and iterators to elements that are not removed remain valid.
    void unique()
    {  this->unique_and_dispose(std::equal_to<value_type>(), detail::null_disposer());  }
 
-   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent 
+   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
    //!   elements that satisfy some binary predicate from the list.
    //!   No destructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: If pred throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time (size()-1 comparisons equality comparisons).
-   //! 
+   //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
    //!   and iterators to elements that are not removed remain valid.
    template<class BinaryPredicate>
@@ -1178,14 +1178,14 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent 
+   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
    //!   elements that are equal from the list.
    //!   Disposer::operator()(pointer) is called for every removed element.
-   //! 
+   //!
    //! <b>Throws</b>: If std::equal_to<value_type throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time (size()-1) comparisons equality comparisons.
-   //! 
+   //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
    //!   and iterators to elements that are not removed remain valid.
    template<class Disposer>
@@ -1194,14 +1194,14 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent 
+   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
    //!   elements that satisfy some binary predicate from the list.
    //!   Disposer::operator()(pointer) is called for every removed element.
-   //! 
+   //!
    //! <b>Throws</b>: If pred throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time (size()-1) comparisons equality comparisons.
-   //! 
+   //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
    //!   and iterators to elements that are not removed remain valid.
    template<class BinaryPredicate, class Disposer>
@@ -1226,13 +1226,13 @@
    }
 
    //! <b>Requires</b>: value must be a reference to a value inserted in a list.
-   //! 
+   //!
    //! <b>Effects</b>: This function returns a const_iterator pointing to the element
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated.
    //!   This static function is available only if the <i>value traits</i>
    //!   is stateless.
@@ -1244,17 +1244,17 @@
    }
 
    //! <b>Requires</b>: value must be a const reference to a value inserted in a list.
-   //! 
+   //!
    //! <b>Effects</b>: This function returns an iterator pointing to the element.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated.
    //!   This static function is available only if the <i>value traits</i>
    //!   is stateless.
-   static const_iterator s_iterator_to(const_reference value) 
+   static const_iterator s_iterator_to(const_reference value)
    {
       BOOST_STATIC_ASSERT((!stateful_value_traits));
       BOOST_INTRUSIVE_INVARIANT_ASSERT(!node_algorithms::inited(real_value_traits::to_node_ptr(const_cast<reference> (value))));
@@ -1262,13 +1262,13 @@
    }
 
    //! <b>Requires</b>: value must be a reference to a value inserted in a list.
-   //! 
+   //!
    //! <b>Effects</b>: This function returns a const_iterator pointing to the element
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated.
    iterator iterator_to(reference value)
    {
@@ -1277,13 +1277,13 @@
    }
 
    //! <b>Requires</b>: value must be a const reference to a value inserted in a list.
-   //! 
+   //!
    //! <b>Effects</b>: This function returns an iterator pointing to the element.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated.
    const_iterator iterator_to(const_reference value) const
    {
@@ -1434,7 +1434,7 @@
 {
    /// @cond
    typedef typename pack_options
-      < list_defaults<T>, 
+      < list_defaults<T>,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3
          #else
@@ -1466,7 +1466,7 @@
 template<class T, class ...Options>
 #endif
 class list
-   :  public make_list<T, 
+   :  public make_list<T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3
       #else
@@ -1475,7 +1475,7 @@
    >::type
 {
    typedef typename make_list
-      <T, 
+      <T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3
       #else
@@ -1517,8 +1517,8 @@
 
 #endif
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/list_hook.hpp
==============================================================================
--- trunk/boost/intrusive/list_hook.hpp	(original)
+++ trunk/boost/intrusive/list_hook.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -44,7 +44,7 @@
 {
    /// @cond
    typedef typename pack_options
-      < hook_defaults, 
+      < hook_defaults,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3
       #else
@@ -64,13 +64,13 @@
 
 //! Derive a class from this hook in order to store objects of that class
 //! in an list.
-//! 
+//!
 //! The hook admits the following options: \c tag<>, \c void_pointer<> and
 //! \c link_mode<>.
 //!
-//! \c tag<> defines a tag to identify the node. 
-//! The same tag value can be used in different classes, but if a class is 
-//! derived from more than one \c list_base_hook, then each \c list_base_hook needs its 
+//! \c tag<> defines a tag to identify the node.
+//! The same tag value can be used in different classes, but if a class is
+//! derived from more than one \c list_base_hook, then each \c list_base_hook needs its
 //! unique tag.
 //!
 //! \c link_mode<> will specify the linking mode of the hook (\c normal_link,
@@ -96,27 +96,27 @@
    public:
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    list_base_hook();
 
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    list_base_hook(const list_base_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    list_base_hook& operator=(const list_base_hook& );
@@ -125,37 +125,37 @@
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in an list an assertion is raised. If link_mode is
    //!   \c auto_unlink and \c is_linked() is true, the node is unlinked.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~list_base_hook();
 
-   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements 
-   //!   related to those nodes in one or two containers. That is, if the node 
-   //!   this is part of the element e1, the node x is part of the element e2 
-   //!   and both elements are included in the containers s1 and s2, then after 
-   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1 
-   //!   at the position of e1. If one element is not in a container, then 
-   //!   after the swap-operation the other element is not in a container. 
-   //!   Iterators to e1 and e2 related to those nodes are invalidated. 
+   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements
+   //!   related to those nodes in one or two containers. That is, if the node
+   //!   this is part of the element e1, the node x is part of the element e2
+   //!   and both elements are included in the containers s1 and s2, then after
+   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1
+   //!   at the position of e1. If one element is not in a container, then
+   //!   after the swap-operation the other element is not in a container.
+   //!   Iterators to e1 and e2 related to those nodes are invalidated.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
-   //! <b>Throws</b>: Nothing. 
+   //! <b>Throws</b>: Nothing.
    void swap_nodes(list_base_hook &other);
 
    //! <b>Precondition</b>: link_mode must be \c safe_link or \c auto_unlink.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c list::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c list::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
 
    //! <b>Effects</b>: Removes the node if it's inserted in a container.
    //!   This function is only allowed if link_mode is \c auto_unlink.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    void unlink();
    #endif
 };
@@ -171,7 +171,7 @@
 {
    /// @cond
    typedef typename pack_options
-      < hook_defaults, 
+      < hook_defaults,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3
       #else
@@ -191,10 +191,10 @@
 
 //! Store this hook in a class to be inserted
 //! in an list.
-//! 
+//!
 //! The hook admits the following options: \c void_pointer<> and
 //! \c link_mode<>.
-//! 
+//!
 //! \c link_mode<> will specify the linking mode of the hook (\c normal_link,
 //! \c auto_unlink or \c safe_link).
 //!
@@ -218,27 +218,27 @@
    public:
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    list_member_hook();
 
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    list_member_hook(const list_member_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    list_member_hook& operator=(const list_member_hook& );
@@ -247,43 +247,43 @@
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in an list an assertion is raised. If link_mode is
    //!   \c auto_unlink and \c is_linked() is true, the node is unlinked.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~list_member_hook();
 
-   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements 
-   //!   related to those nodes in one or two containers. That is, if the node 
-   //!   this is part of the element e1, the node x is part of the element e2 
-   //!   and both elements are included in the containers s1 and s2, then after 
-   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1 
-   //!   at the position of e1. If one element is not in a container, then 
-   //!   after the swap-operation the other element is not in a container. 
-   //!   Iterators to e1 and e2 related to those nodes are invalidated. 
+   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements
+   //!   related to those nodes in one or two containers. That is, if the node
+   //!   this is part of the element e1, the node x is part of the element e2
+   //!   and both elements are included in the containers s1 and s2, then after
+   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1
+   //!   at the position of e1. If one element is not in a container, then
+   //!   after the swap-operation the other element is not in a container.
+   //!   Iterators to e1 and e2 related to those nodes are invalidated.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
-   //! <b>Throws</b>: Nothing. 
+   //! <b>Throws</b>: Nothing.
    void swap_nodes(list_member_hook &other);
 
    //! <b>Precondition</b>: link_mode must be \c safe_link or \c auto_unlink.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c list::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c list::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
 
    //! <b>Effects</b>: Removes the node if it's inserted in a container.
    //!   This function is only allowed if link_mode is \c auto_unlink.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    void unlink();
    #endif
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/member_value_traits.hpp
==============================================================================
--- trunk/boost/intrusive/member_value_traits.hpp	(original)
+++ trunk/boost/intrusive/member_value_traits.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -54,17 +54,17 @@
    static pointer to_value_ptr(const node_ptr &n)
    {
       return pointer(detail::parent_from_member<value_type, node>
-         (boost::intrusive::detail::to_raw_pointer(n), PtrToMember)); 
+         (boost::intrusive::detail::to_raw_pointer(n), PtrToMember));
    }
 
    static const_pointer to_value_ptr(const const_node_ptr &n)
    {
       return pointer(detail::parent_from_member<value_type, node>
-         (boost::intrusive::detail::to_raw_pointer(n), PtrToMember)); 
+         (boost::intrusive::detail::to_raw_pointer(n), PtrToMember));
    }
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #endif //BOOST_INTRUSIVE_MEMBER_VALUE_TRAITS_HPP
Modified: trunk/boost/intrusive/options.hpp
==============================================================================
--- trunk/boost/intrusive/options.hpp	(original)
+++ trunk/boost/intrusive/options.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -245,7 +245,7 @@
 //!alpha value that does not need floating-point operations.
 //!
 //!If activated, the fixed alpha value is 1/sqrt(2). This
-//!option also saves some space in the container since 
+//!option also saves some space in the container since
 //!the alpha value and some additional data does not need
 //!to be stored in the container.
 //!
@@ -567,7 +567,7 @@
 
 //!This option setter specifies if the hash container will use incremental
 //!hashing. With incremental hashing the cost of hash table expansion is spread
-//!out across each hash table insertion operation, as opposed to be incurred all at once. 
+//!out across each hash table insertion operation, as opposed to be incurred all at once.
 //!Therefore linear hashing is well suited for interactive applications or real-time
 //!appplications where the worst-case insertion time of non-incremental hash containers
 //!(rehashing the whole bucket array) is not admisible.
@@ -651,9 +651,9 @@
             , O9
             >::type
          , O10
-         >::type 
+         >::type
       , O11
-      >::type 
+      >::type
    type;
 };
 #else
@@ -666,7 +666,7 @@
 template<std::size_t Num, typename Tuple = index_tuple<> >
 struct build_number_seq;
 
-template<std::size_t Num, int... Indexes> 
+template<std::size_t Num, int... Indexes>
 struct build_number_seq<Num, index_tuple<Indexes...> >
    : build_number_seq<Num - 1, index_tuple<Indexes..., sizeof...(Indexes)> >
 {};
Modified: trunk/boost/intrusive/parent_from_member.hpp
==============================================================================
--- trunk/boost/intrusive/parent_from_member.hpp	(original)
+++ trunk/boost/intrusive/parent_from_member.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -20,7 +20,7 @@
 
 //! Given a pointer to a member and its corresponding pointer to data member,
 //! this function returns the pointer of the parent containing that member.
-//! Note: this function does not work with pointer to members that rely on 
+//! Note: this function does not work with pointer to members that rely on
 //! virtual inheritance.
 template<class Parent, class Member>
 inline Parent *get_parent_from_member(Member *member, const Member Parent::* ptr_to_member)
@@ -28,7 +28,7 @@
 
 //! Given a const pointer to a member and its corresponding const pointer to data member,
 //! this function returns the const pointer of the parent containing that member.
-//! Note: this function does not work with pointer to members that rely on 
+//! Note: this function does not work with pointer to members that rely on
 //! virtual inheritance.
 template<class Parent, class Member>
 inline const Parent *get_parent_from_member(const Member *member, const Member Parent::* ptr_to_member)
Modified: trunk/boost/intrusive/pointer_plus_bits.hpp
==============================================================================
--- trunk/boost/intrusive/pointer_plus_bits.hpp	(original)
+++ trunk/boost/intrusive/pointer_plus_bits.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -63,7 +63,7 @@
    static void set_pointer(pointer &n, pointer p)
    {
       BOOST_INTRUSIVE_INVARIANT_ASSERT(0 == (std::size_t(p) & Mask));
-      n = pointer(std::size_t(p) | (std::size_t(n) & Mask)); 
+      n = pointer(std::size_t(p) | (std::size_t(n) & Mask));
    }
 
    static std::size_t get_bits(pointer n)
@@ -76,7 +76,7 @@
    }
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #endif //BOOST_INTRUSIVE_POINTER_PLUS_BITS_HPP
Modified: trunk/boost/intrusive/pointer_traits.hpp
==============================================================================
--- trunk/boost/intrusive/pointer_traits.hpp	(original)
+++ trunk/boost/intrusive/pointer_traits.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -52,7 +52,7 @@
       typedef unspecified_type difference_type;
 
       //!Ptr::rebind<U> if such a type exists; otherwise, SomePointer<U, Args> if Ptr is
-      //!a class template instantiation of the form SomePointer<T, Args>, where Args is zero or 
+      //!a class template instantiation of the form SomePointer<T, Args>, where Args is zero or
       //!more type arguments ; otherwise, the instantiation of rebind is ill-formed.
       //!
       //!For portable code for C++03 and C++11, <pre>typename rebind_pointer<U>::type</pre>
@@ -60,7 +60,7 @@
       template <class U> using rebind = unspecified;
 
       //!Ptr::rebind<U> if such a type exists; otherwise, SomePointer<U, Args> if Ptr is
-      //!a class template instantiation of the form SomePointer<T, Args>, where Args is zero or 
+      //!a class template instantiation of the form SomePointer<T, Args>, where Args is zero or
       //!more type arguments ; otherwise, the instantiation of rebind is ill-formed.
       //!
       typedef element_type &reference;
@@ -232,7 +232,7 @@
 
    template <class U> struct rebind_pointer
    {  typedef U* type;  };
-   
+  
    //! <b>Returns</b>: addressof(r)
    //!
    static pointer pointer_to(reference r)
Modified: trunk/boost/intrusive/rbtree.hpp
==============================================================================
--- trunk/boost/intrusive/rbtree.hpp	(original)
+++ trunk/boost/intrusive/rbtree.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -64,8 +64,8 @@
 /// @endcond
 
 //! The class template rbtree is an intrusive red-black tree container, that
-//! is used to construct intrusive set and multiset containers. The no-throw 
-//! guarantee holds only, if the value_compare object 
+//! is used to construct intrusive set and multiset containers. The no-throw
+//! guarantee holds only, if the value_compare object
 //! doesn't throw.
 //!
 //! The template parameter \c T is the type to be managed by the container.
@@ -126,7 +126,7 @@
    //noncopyable
    BOOST_MOVABLE_BUT_NOT_COPYABLE(rbtree_impl)
 
-   enum { safemode_or_autounlink  = 
+   enum { safemode_or_autounlink  =
             (int)real_value_traits::link_mode == (int)auto_unlink   ||
             (int)real_value_traits::link_mode == (int)safe_link     };
 
@@ -217,18 +217,18 @@
 
    typedef typename node_algorithms::insert_commit_data insert_commit_data;
 
-   //! <b>Effects</b>: Constructs an empty tree. 
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //! <b>Effects</b>: Constructs an empty tree.
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
    //!   or the copy constructorof the value_compare object throws. Basic guarantee.
    rbtree_impl( const value_compare &cmp = value_compare()
-              , const value_traits &v_traits = value_traits()) 
+              , const value_traits &v_traits = value_traits())
       :  data_(cmp, v_traits)
-   {  
-      node_algorithms::init_header(this->priv_header_ptr());  
+   { 
+      node_algorithms::init_header(this->priv_header_ptr()); 
       this->priv_size_traits().set_size(size_type(0));
    }
 
@@ -240,7 +240,7 @@
    //!
    //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise N * log N, where N is the distance between first and last.
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
    //!   or the copy constructor/operator() of the value_compare object throws. Basic guarantee.
@@ -259,58 +259,58 @@
    }
 
    //! <b>Effects</b>: to-do
-   //!   
+   //!  
    rbtree_impl(BOOST_RV_REF(rbtree_impl) x)
       : data_(::boost::move(x.priv_comp()), ::boost::move(x.priv_value_traits()))
    {
-      node_algorithms::init_header(this->priv_header_ptr());  
+      node_algorithms::init_header(this->priv_header_ptr()); 
       this->priv_size_traits().set_size(size_type(0));
       this->swap(x);
    }
 
    //! <b>Effects</b>: to-do
-   //!   
-   rbtree_impl& operator=(BOOST_RV_REF(rbtree_impl) x) 
+   //!  
+   rbtree_impl& operator=(BOOST_RV_REF(rbtree_impl) x)
    {  this->swap(x); return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the set 
-   //!   are not deleted (i.e. no destructors are called), but the nodes according to 
-   //!   the value_traits template parameter are reinitialized and thus can be reused. 
-   //! 
-   //! <b>Complexity</b>: Linear to elements contained in *this. 
-   //! 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the set
+   //!   are not deleted (i.e. no destructors are called), but the nodes according to
+   //!   the value_traits template parameter are reinitialized and thus can be reused.
+   //!
+   //! <b>Complexity</b>: Linear to elements contained in *this.
+   //!
    //! <b>Throws</b>: Nothing.
-   ~rbtree_impl() 
+   ~rbtree_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    {  return iterator (node_traits::get_left(this->priv_header_ptr()), this);   }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    {  return cbegin();   }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    {  return const_iterator (node_traits::get_left(this->priv_header_ptr()), this);   }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    {  return iterator (this->priv_header_ptr(), this);  }
@@ -318,138 +318,138 @@
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the tree.
    //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    {  return cend();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    {  return const_iterator (uncast(this->priv_header_ptr()), this);  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    {  return reverse_iterator(end());  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    {  return const_reverse_iterator(end());  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    {  return const_reverse_iterator(end());  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    {  return reverse_iterator(begin());   }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    {  return const_reverse_iterator(begin());   }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    {  return const_reverse_iterator(begin());   }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of rbtree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the rbtree associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static rbtree_impl &container_from_end_iterator(iterator end_iterator)
    {  return priv_container_from_end_iterator(end_iterator);   }
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of rbtree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the rbtree associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const rbtree_impl &container_from_end_iterator(const_iterator end_iterator)
    {  return priv_container_from_end_iterator(end_iterator);   }
 
    //! <b>Precondition</b>: it must be a valid iterator
    //!   of rbtree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the tree associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static rbtree_impl &container_from_iterator(iterator it)
    {  return priv_container_from_iterator(it);   }
 
    //! <b>Precondition</b>: it must be a valid end const_iterator
    //!   of rbtree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the tree associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static const rbtree_impl &container_from_iterator(const_iterator it)
    {  return priv_container_from_iterator(it);   }
 
    //! <b>Effects</b>: Returns the value_compare object used by the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    {  return priv_comp();   }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    {  return node_algorithms::unique(this->priv_header_ptr());   }
 
    //! <b>Effects</b>: Returns the number of elements stored in the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this
    //!   if constant-time size option is disabled. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    {
@@ -461,9 +461,9 @@
    }
 
    //! <b>Effects</b>: Swaps the contents of two rbtrees.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the comparison functor's swap call throws.
    void swap(rbtree_impl& other)
    {
@@ -480,14 +480,14 @@
    }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the tree before the upper bound.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_equal(reference value)
@@ -505,16 +505,16 @@
 
    //! <b>Requires</b>: value must be an lvalue, and "hint" must be
    //!   a valid iterator.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts x into the tree, using "hint" as a hint to
    //!   where it will be inserted. If "hint" is the upper_bound
    //!   the insertion takes constant time (two comparisons in the worst case)
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_equal(const_iterator hint, reference value)
@@ -530,18 +530,18 @@
       return ret;
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a each element of a range into the tree
    //!   before the upper bound of the key of each element.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -553,15 +553,15 @@
    }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the tree if the value
    //!   is not already present.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    std::pair<iterator, bool> insert_unique(reference value)
@@ -575,16 +575,16 @@
 
    //! <b>Requires</b>: value must be an lvalue, and "hint" must be
    //!   a valid iterator
-   //! 
+   //!
    //! <b>Effects</b>: Tries to insert x into the tree, using "hint" as a hint
    //!   to where it will be inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time (two comparisons in the worst case)
    //!   if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_unique(const_iterator hint, reference value)
@@ -596,17 +596,17 @@
       return insert_unique_commit(value, commit_data);
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Tries to insert each element of a range into the tree.
-   //! 
-   //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the 
-   //!   size of the range. However, it is linear in N if the range is already sorted 
+   //!
+   //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
+   //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -623,10 +623,10 @@
       }
    }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the container, using
    //!   a user provided key instead of the value itself.
    //!
@@ -635,16 +635,16 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   node that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that 
+   //!   than the value_type and this function offers the possibility to use that
    //!   part to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
@@ -659,18 +659,18 @@
    {
       detail::key_nodeptr_comp<KeyValueCompare, rbtree_impl>
          comp(key_value_comp, this);
-      std::pair<node_ptr, bool> ret = 
+      std::pair<node_ptr, bool> ret =
          (node_algorithms::insert_unique_check
             (this->priv_header_ptr(), key, comp, commit_data));
       return std::pair<iterator, bool>(iterator(ret.first, this), ret.second);
    }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the container, using
-   //!   a user provided key instead of the value itself, using "hint" 
+   //!   a user provided key instead of the value itself, using "hint"
    //!   as a hint to where it will be inserted.
    //!
    //! <b>Returns</b>: If there is an equivalent value
@@ -678,23 +678,23 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   constructing that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that key 
+   //!   than the value_type and this function offers the possibility to use that key
    //!   to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
    //!   "insert_commit" to insert the object in constant-time. This can give a total
    //!   constant-time complexity to the insertion: check(O(1)) + commit(O(1)).
-   //!   
+   //!  
    //!   "commit_data" remains valid for a subsequent "insert_commit" only if no more
    //!   objects are inserted or erased from the container.
    template<class KeyType, class KeyValueCompare>
@@ -704,7 +704,7 @@
    {
       detail::key_nodeptr_comp<KeyValueCompare, rbtree_impl>
          comp(key_value_comp, this);
-      std::pair<node_ptr, bool> ret = 
+      std::pair<node_ptr, bool> ret =
          (node_algorithms::insert_unique_check
             (this->priv_header_ptr(), hint.pointed_node(), key, comp, commit_data));
       return std::pair<iterator, bool>(iterator(ret.first, this), ret.second);
@@ -714,16 +714,16 @@
    //!   must have been obtained from a previous call to "insert_check".
    //!   No objects should have been inserted or erased from the container between
    //!   the "insert_check" that filled "commit_data" and the call to "insert_commit".
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the avl_set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Returns</b>: An iterator to the newly inserted object.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
@@ -743,11 +743,11 @@
    //!   once inserted according to the predicate
    //!
    //! <b>Effects</b>: Inserts x into the tree before "pos".
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if "pos" is not
    //! the successor of "value" tree ordering invariant will be broken.
    //! This is a low-level function to be used only for performance reasons
@@ -766,11 +766,11 @@
    //!   than the greatest inserted key
    //!
    //! <b>Effects</b>: Inserts x into the tree in the last position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   less than the greatest inserted key tree ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -789,11 +789,11 @@
    //!   than the minimum inserted key
    //!
    //! <b>Effects</b>: Inserts x into the tree in the first position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   greater than the minimum inserted key tree ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -808,12 +808,12 @@
       node_algorithms::push_front(this->priv_header_ptr(), to_insert);
    }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
@@ -830,26 +830,26 @@
       return ret.unconst();
    }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, const_iterator e)
    {  size_type n;   return private_erase(b, e, n);   }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -859,11 +859,11 @@
    //!   according to the comparison functor "comp".
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
@@ -881,14 +881,14 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -909,13 +909,13 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -931,12 +931,12 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -950,11 +950,11 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -970,13 +970,13 @@
       return n;
    }
 
-   //! <b>Effects</b>: Erases all of the elements. 
-   //! 
+   //! <b>Effects</b>: Erases all of the elements.
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
@@ -994,9 +994,9 @@
    //!   each node to be erased.
    //! <b>Complexity</b>: Average complexity for is at most O(log(size() + N)),
    //!   where N is the number of elements in the container.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. Calls N times to disposer functor.
    template<class Disposer>
@@ -1009,19 +1009,19 @@
    }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given value
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given value.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type count(const_reference value) const
    {  return this->count(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType &key, KeyValueCompare comp) const
@@ -1032,27 +1032,27 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator lower_bound(const_reference value)
    {  return this->lower_bound(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator lower_bound(const_reference value) const
    {  return this->lower_bound(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator lower_bound(const KeyType &key, KeyValueCompare comp)
@@ -1065,9 +1065,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator lower_bound(const KeyType &key, KeyValueCompare comp) const
@@ -1080,9 +1080,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator upper_bound(const_reference value)
    {  return this->upper_bound(value, priv_comp());   }
@@ -1092,7 +1092,7 @@
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator upper_bound(const KeyType &key, KeyValueCompare comp)
@@ -1105,9 +1105,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator upper_bound(const_reference value) const
    {  return this->upper_bound(value, priv_comp());   }
@@ -1117,7 +1117,7 @@
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator upper_bound(const KeyType &key, KeyValueCompare comp) const
@@ -1128,20 +1128,20 @@
          (this->priv_header_ptr(), key, key_node_comp), this);
    }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   k or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator find(const_reference value)
    {  return this->find(value, priv_comp()); }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   k or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator find(const KeyType &key, KeyValueCompare comp)
@@ -1152,20 +1152,20 @@
          (node_algorithms::find(this->priv_header_ptr(), key, key_node_comp), this);
    }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
    //!   k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator find(const_reference value) const
    {  return this->find(value, priv_comp()); }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
    //!   k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator find(const KeyType &key, KeyValueCompare comp) const
@@ -1179,9 +1179,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return this->equal_range(value, priv_comp());   }
@@ -1189,9 +1189,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    std::pair<iterator,iterator> equal_range(const KeyType &key, KeyValueCompare comp)
@@ -1206,9 +1206,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
@@ -1217,9 +1217,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    std::pair<const_iterator, const_iterator>
@@ -1236,15 +1236,15 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const rbtree_impl &src, Cloner cloner, Disposer disposer)
@@ -1265,11 +1265,11 @@
    }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -1288,14 +1288,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   tree with with_this. The tree does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -1311,14 +1311,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -1329,17 +1329,17 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
-   static const_iterator s_iterator_to(const_reference value) 
+   static const_iterator s_iterator_to(const_reference value)
    {
       BOOST_STATIC_ASSERT((!stateful_value_traits));
       return const_iterator (value_traits::to_node_ptr(const_cast<reference> (value)), 0);
@@ -1347,48 +1347,48 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return iterator (value_traits::to_node_ptr(value), this); }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return const_iterator (value_traits::to_node_ptr(const_cast<reference> (value)), this); }
 
    //! <b>Requires</b>: value shall not be in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
    { node_algorithms::init(value_traits::to_node_ptr(value)); }
 
    //! <b>Effects</b>: removes "value" from the container.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic time.
-   //! 
+   //!
    //! <b>Note</b>: This static function is only usable with non-constant
    //! time size containers that have stateless comparison functors.
    //!
@@ -1565,7 +1565,7 @@
 struct make_rbtree_opt
 {
    typedef typename pack_options
-      < set_defaults<T>, 
+      < set_defaults<T>,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -1596,7 +1596,7 @@
 {
    /// @cond
    typedef rbtree_impl
-      < typename make_rbtree_opt<T, 
+      < typename make_rbtree_opt<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -1616,7 +1616,7 @@
 template<class T, class ...Options>
 #endif
 class rbtree
-   :  public make_rbtree<T, 
+   :  public make_rbtree<T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -1625,7 +1625,7 @@
       >::type
 {
    typedef typename make_rbtree
-      <T, 
+      <T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -1679,8 +1679,8 @@
 #endif
 
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/rbtree_algorithms.hpp
==============================================================================
--- trunk/boost/intrusive/rbtree_algorithms.hpp	(original)
+++ trunk/boost/intrusive/rbtree_algorithms.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -11,7 +11,7 @@
 //
 /////////////////////////////////////////////////////////////////////////////
 // The internal implementation of red-black trees is based on that of SGI STL
-// stl_tree.h file: 
+// stl_tree.h file:
 //
 // Copyright (c) 1996,1997
 // Silicon Graphics Computer Systems, Inc.
@@ -36,14 +36,14 @@
 // representations about the suitability of this software for any
 // purpose.  It is provided "as is" without express or implied warranty.
 //
-// The tree destruction algorithm is based on Julienne Walker and The EC Team code: 
-// 
+// The tree destruction algorithm is based on Julienne Walker and The EC Team code:
+//
 // This code is in the public domain. Anyone may use it or change it in any way that
 // they see fit. The author assumes no responsibility for damages incurred through
-// use of the original code or any variations thereof. 
-// 
+// use of the original code or any variations thereof.
+//
 // It is requested, but not required, that due credit is given to the original author
-// and anyone who has modified the code through a header comment, such as this one. 
+// and anyone who has modified the code through a header comment, such as this one.
 
 #ifndef BOOST_INTRUSIVE_RBTREE_ALGORITHMS_HPP
 #define BOOST_INTRUSIVE_RBTREE_ALGORITHMS_HPP
@@ -61,17 +61,17 @@
 namespace boost {
 namespace intrusive {
 
-//! rbtree_algorithms provides basic algorithms to manipulate 
-//! nodes forming a red-black tree. The insertion and deletion algorithms are 
-//! based on those in Cormen, Leiserson, and Rivest, Introduction to Algorithms 
+//! rbtree_algorithms provides basic algorithms to manipulate
+//! nodes forming a red-black tree. The insertion and deletion algorithms are
+//! based on those in Cormen, Leiserson, and Rivest, Introduction to Algorithms
 //! (MIT Press, 1990), except that
-//! 
+//!
 //! (1) the header node is maintained with links not only to the root
 //! but also to the leftmost node of the tree, to enable constant time
 //! begin(), and to the rightmost node of the tree, to enable linear time
 //! performance when used with the generic set algorithms (set_union,
 //! etc.);
-//! 
+//!
 //! (2) when a node being deleted has two children its successor node is
 //! relinked into its place, rather than copied, so that the only
 //! pointers invalidated are those referring to the deleted node.
@@ -93,23 +93,23 @@
 //! <b>Static functions</b>:
 //!
 //! <tt>static node_ptr get_parent(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_parent(node_ptr n, node_ptr parent);</tt>
 //!
 //! <tt>static node_ptr get_left(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_left(node_ptr n, node_ptr left);</tt>
 //!
 //! <tt>static node_ptr get_right(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_right(node_ptr n, node_ptr right);</tt>
-//! 
+//!
 //! <tt>static color get_color(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_color(node_ptr n, color c);</tt>
-//! 
+//!
 //! <tt>static color black();</tt>
-//! 
+//!
 //! <tt>static color red();</tt>
 template<class NodeTraits>
 class rbtree_algorithms
@@ -135,7 +135,7 @@
       rbtree_node_cloner(F f)
          :  base_t(f)
       {}
-      
+     
       node_ptr operator()(const node_ptr & p)
       {
          node_ptr n = base_t::get()(p);
@@ -172,27 +172,27 @@
 
    //! <b>Requires</b>: header1 and header2 must be the header nodes
    //!  of two trees.
-   //! 
-   //! <b>Effects</b>: Swaps two trees. After the function header1 will contain 
+   //!
+   //! <b>Effects</b>: Swaps two trees. After the function header1 will contain
    //!   links to the second tree and header2 will have links to the first tree.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
    static void swap_tree(const node_ptr & header1, const node_ptr & header2)
    {  return tree_algorithms::swap_tree(header1, header2);  }
 
    //! <b>Requires</b>: node1 and node2 can't be header nodes
    //!  of two trees.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps two nodes. After the function node1 will be inserted
    //!   in the position node2 before the function. node2 will be inserted in the
    //!   position node1 had before the function.
-   //! 
-   //! <b>Complexity</b>: Logarithmic. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Logarithmic.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   node1 and node2 are not equivalent according to the ordering rules.
    //!
@@ -201,22 +201,22 @@
    {
       if(node1 == node2)
          return;
-   
+  
       node_ptr header1(tree_algorithms::get_header(node1)), header2(tree_algorithms::get_header(node2));
       swap_nodes(node1, header1, node2, header2);
    }
 
    //! <b>Requires</b>: node1 and node2 can't be header nodes
    //!  of two trees with header header1 and header2.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps two nodes. After the function node1 will be inserted
    //!   in the position node2 before the function. node2 will be inserted in the
    //!   position node1 had before the function.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   node1 and node2 are not equivalent according to the ordering rules.
    //!
@@ -228,20 +228,20 @@
       tree_algorithms::swap_nodes(node1, header1, node2, header2);
       //Swap color
       color c = NodeTraits::get_color(node1);
-      NodeTraits::set_color(node1, NodeTraits::get_color(node2)); 
-      NodeTraits::set_color(node2, c); 
+      NodeTraits::set_color(node1, NodeTraits::get_color(node2));
+      NodeTraits::set_color(node2, c);
    }
 
    //! <b>Requires</b>: node_to_be_replaced must be inserted in a tree
    //!   and new_node must not be inserted in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces node_to_be_replaced in its position in the
    //!   tree with new_node. The tree does not need to be rebalanced
-   //! 
-   //! <b>Complexity</b>: Logarithmic. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Logarithmic.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   new_node is not equivalent to node_to_be_replaced according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -257,14 +257,14 @@
 
    //! <b>Requires</b>: node_to_be_replaced must be inserted in a tree
    //!   with header "header" and new_node must not be inserted in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces node_to_be_replaced in its position in the
    //!   tree with new_node. The tree does not need to be rebalanced
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   new_node is not equivalent to node_to_be_replaced according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -274,15 +274,15 @@
    static void replace_node(const node_ptr & node_to_be_replaced, const node_ptr & header, const node_ptr & new_node)
    {
       tree_algorithms::replace_node(node_to_be_replaced, header, new_node);
-      NodeTraits::set_color(new_node, NodeTraits::get_color(node_to_be_replaced)); 
+      NodeTraits::set_color(new_node, NodeTraits::get_color(node_to_be_replaced));
    }
 
    //! <b>Requires</b>: node is a tree node but not the header.
-   //! 
+   //!
    //! <b>Effects</b>: Unlinks the node and rebalances the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static void unlink(const node_ptr & node)
    {
@@ -295,14 +295,14 @@
    }
 
    //! <b>Requires</b>: header is the header of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Unlinks the leftmost node from the tree, and
    //!   updates the header link to the new leftmost node.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -312,51 +312,51 @@
 
    //! <b>Requires</b>: node is a node of the tree or an node initialized
    //!   by init(...).
-   //! 
+   //!
    //! <b>Effects</b>: Returns true if the node is initialized by init().
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool unique(const const_node_ptr & node)
    {  return tree_algorithms::unique(node);  }
 
    //! <b>Requires</b>: node is a node of the tree but it's not the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes of the subtree.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static std::size_t count(const const_node_ptr & node)
    {  return tree_algorithms::count(node);   }
 
    //! <b>Requires</b>: header is the header node of the tree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes above the header.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static std::size_t size(const const_node_ptr & header)
    {  return tree_algorithms::size(header);   }
 
    //! <b>Requires</b>: p is a node from the tree except the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the next node of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr next_node(const node_ptr & p)
    {  return tree_algorithms::next_node(p); }
 
    //! <b>Requires</b>: p is a node from the tree except the leftmost node.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the previous node of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr prev_node(const node_ptr & p)
    {  return tree_algorithms::prev_node(p); }
@@ -364,9 +364,9 @@
    //! <b>Requires</b>: node must not be part of any tree.
    //!
    //! <b>Effects</b>: After the function unique(node) == true.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
@@ -377,25 +377,25 @@
    //!
    //! <b>Effects</b>: Initializes the header to represent an empty tree.
    //!   unique(header) == true.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
    static void init_header(const node_ptr & header)
    {
       tree_algorithms::init_header(header);
-      NodeTraits::set_color(header, NodeTraits::red()); 
+      NodeTraits::set_color(header, NodeTraits::red());
    }
 
    //! <b>Requires</b>: header must be the header of a tree, z a node
    //!    of that tree and z != header.
    //!
    //! <b>Effects</b>: Erases node "z" from the tree with header "header".
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr erase(const node_ptr & header, const node_ptr & z)
    {
@@ -415,18 +415,18 @@
    //!   object taking a node_ptr and returning a new cloned node of it. "disposer" must
    //!   take a node_ptr and shouldn't throw.
    //!
-   //! <b>Effects</b>: First empties target tree calling 
+   //! <b>Effects</b>: First empties target tree calling
    //!   <tt>void disposer::operator()(const node_ptr &)</tt> for every node of the tree
    //!    except the header.
-   //!    
+   //!   
    //!   Then, duplicates the entire tree pointed by "source_header" cloning each
-   //!   source node with <tt>node_ptr Cloner::operator()(const node_ptr &)</tt> to obtain 
+   //!   source node with <tt>node_ptr Cloner::operator()(const node_ptr &)</tt> to obtain
    //!   the nodes of the target tree. If "cloner" throws, the cloned target nodes
    //!   are disposed using <tt>void disposer(const node_ptr &)</tt>.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of element of the source tree plus the.
    //!   number of elements of tree target tree when calling this function.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner functor throws. If this happens target nodes are disposed.
    template <class Cloner, class Disposer>
    static void clone
@@ -439,13 +439,13 @@
    //! <b>Requires</b>: "disposer" must be an object function
    //!   taking a node_ptr parameter and shouldn't throw.
    //!
-   //! <b>Effects</b>: Empties the target tree calling 
+   //! <b>Effects</b>: Empties the target tree calling
    //!   <tt>void disposer::operator()(const node_ptr &)</tt> for every node of the tree
    //!    except the header.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of element of the source tree plus the.
    //!   number of elements of tree target tree when calling this function.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner functor throws. If this happens target nodes are disposed.
    template<class Disposer>
    static void clear_and_dispose(const node_ptr & header, Disposer disposer)
@@ -461,7 +461,7 @@
    //!   not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr lower_bound
@@ -477,7 +477,7 @@
    //!   than "key" according to "comp" or "header" if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr upper_bound
@@ -493,7 +493,7 @@
    //!   "key" according to "comp" or "header" if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr find
@@ -511,7 +511,7 @@
    //!   if they there are no equivalent elements.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static std::pair<node_ptr, node_ptr> equal_range
@@ -525,10 +525,10 @@
    //!
    //! <b>Effects</b>: Inserts new_node into the tree before the upper bound
    //!   according to "comp".
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class NodePtrCompare>
    static node_ptr insert_equal_upper_bound
@@ -546,10 +546,10 @@
    //!
    //! <b>Effects</b>: Inserts new_node into the tree before the lower bound
    //!   according to "comp".
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class NodePtrCompare>
    static node_ptr insert_equal_lower_bound
@@ -565,14 +565,14 @@
    //!   ordering compatible with the strict weak ordering used to create the
    //!   the tree. NodePtrCompare compares two node_ptrs. "hint" is node from
    //!   the "header"'s tree.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree, using "hint" as a hint to
    //!   where it will be inserted. If "hint" is the upper_bound
    //!   the insertion takes constant time (two comparisons in the worst case).
    //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time if new_node is inserted immediately before "hint".
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class NodePtrCompare>
    static node_ptr insert_equal
@@ -588,13 +588,13 @@
    //!   "pos" must be an iterator pointing to the successor to "new_node"
    //!   once inserted according to the order of already inserted nodes. This function does not
    //!   check "pos" and this precondition must be guaranteed by the caller.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree before "pos".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: If "pos" is not the successor of the newly inserted "new_node"
    //! tree invariants might be broken.
    static node_ptr insert_before
@@ -608,13 +608,13 @@
    //! <b>Requires</b>: "header" must be the header node of a tree.
    //!   "new_node" must be, according to the used ordering no less than the
    //!   greatest inserted key.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree before "pos".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: If "new_node" is less than the greatest inserted key
    //! tree invariants are broken. This function is slightly faster than
    //! using "insert_before".
@@ -627,13 +627,13 @@
    //! <b>Requires</b>: "header" must be the header node of a tree.
    //!   "new_node" must be, according to the used ordering, no greater than the
    //!   lowest inserted key.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree before "pos".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: If "new_node" is greater than the lowest inserted key
    //! tree invariants are broken. This function is slightly faster than
    //! using "insert_before".
@@ -647,7 +647,7 @@
    //!   KeyNodePtrCompare is a function object that induces a strict weak
    //!   ordering compatible with the strict weak ordering used to create the
    //!   the tree. NodePtrCompare compares KeyType with a node_ptr.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if there is an equivalent node to "key" in the
    //!   tree according to "comp" and obtains the needed information to realize
    //!   a constant-time node insertion if there is no equivalent node.
@@ -658,11 +658,11 @@
    //!   in the returned pair's boolean and fills "commit_data" that is meant to
    //!   be used with the "insert_commit" function to achieve a constant-time
    //!   insertion function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If "comp" throws.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a node is expensive and the user does not want to have two equivalent nodes
    //!   in the tree: if there is an equivalent value
@@ -688,12 +688,12 @@
    //!   ordering compatible with the strict weak ordering used to create the
    //!   the tree. NodePtrCompare compares KeyType with a node_ptr.
    //!   "hint" is node from the "header"'s tree.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if there is an equivalent node to "key" in the
    //!   tree according to "comp" using "hint" as a hint to where it should be
    //!   inserted and obtains the needed information to realize
-   //!   a constant-time node insertion if there is no equivalent node. 
-   //!   If "hint" is the upper_bound the function has constant time 
+   //!   a constant-time node insertion if there is no equivalent node.
+   //!   If "hint" is the upper_bound the function has constant time
    //!   complexity (two comparisons in the worst case).
    //!
    //! <b>Returns</b>: If there is an equivalent value
@@ -702,12 +702,12 @@
    //!   in the returned pair's boolean and fills "commit_data" that is meant to
    //!   be used with the "insert_commit" function to achieve a constant-time
    //!   insertion function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic, but it is
    //!   amortized constant time if new_node should be inserted immediately before "hint".
    //!
    //! <b>Throws</b>: If "comp" throws.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a node is expensive and the user does not want to have two equivalent nodes
    //!   in the tree: if there is an equivalent value
@@ -732,16 +732,16 @@
    //!   "commit_data" must have been obtained from a previous call to
    //!   "insert_unique_check". No objects should have been inserted or erased
    //!   from the set between the "insert_unique_check" that filled "commit_data"
-   //!   and the call to "insert_commit". 
-   //! 
-   //! 
+   //!   and the call to "insert_commit".
+   //!
+   //!
    //! <b>Effects</b>: Inserts new_node in the set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_unique_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
@@ -757,7 +757,7 @@
    //! <b>Effects</b>: Returns a pointer to the header node of the tree.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr get_header(const node_ptr & n)
    {  return tree_algorithms::get_header(n);   }
@@ -766,17 +766,17 @@
    private:
 
    //! <b>Requires</b>: p is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns true if p is the header of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool is_header(const const_node_ptr & p)
    {
       return NodeTraits::get_color(p) == NodeTraits::red() &&
             tree_algorithms::is_header(p);
-      //return NodeTraits::get_color(p) == NodeTraits::red() && 
+      //return NodeTraits::get_color(p) == NodeTraits::red() &&
       //       NodeTraits::get_parent(NodeTraits::get_parent(p)) == p;
    }
 
@@ -797,7 +797,7 @@
                NodeTraits::set_color(w, NodeTraits::red());
                x = x_parent;
                x_parent = NodeTraits::get_parent(x_parent);
-            } 
+            }
             else {
                if(NodeTraits::get_right(w) == node_ptr() || NodeTraits::get_color(NodeTraits::get_right(w)) == NodeTraits::black()){
                   NodeTraits::set_color(NodeTraits::get_left(w), NodeTraits::black());
@@ -902,8 +902,8 @@
    /// @endcond
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/set.hpp
==============================================================================
--- trunk/boost/intrusive/set.hpp	(original)
+++ trunk/boost/intrusive/set.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -23,9 +23,9 @@
 namespace boost {
 namespace intrusive {
 
-//! The class template set is an intrusive container, that mimics most of 
+//! The class template set is an intrusive container, that mimics most of
 //! the interface of std::set as described in the C++ standard.
-//! 
+//!
 //! The template parameter \c T is the type to be managed by the container.
 //! The user can specify additional options and if no options are provided
 //! default options are used.
@@ -86,30 +86,30 @@
    /// @endcond
 
    public:
-   //! <b>Effects</b>: Constructs an empty set. 
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //! <b>Effects</b>: Constructs an empty set.
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor of the value_compare object throws. 
+   //!   or the copy constructor of the value_compare object throws.
    set_impl( const value_compare &cmp = value_compare()
-           , const value_traits &v_traits = value_traits()) 
+           , const value_traits &v_traits = value_traits())
       :  tree_(cmp, v_traits)
    {}
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type. 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
    //!   cmp must be a comparison function that induces a strict weak ordering.
-   //! 
-   //! <b>Effects</b>: Constructs an empty set and inserts elements from 
+   //!
+   //! <b>Effects</b>: Constructs an empty set and inserts elements from
    //!   [b, e).
-   //! 
-   //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using 
+   //!
+   //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise N * log N, where N is std::distance(last, first).
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare object throws. 
+   //!   or the copy constructor/operator() of the value_compare object throws.
    template<class Iterator>
    set_impl( Iterator b, Iterator e
            , const value_compare &cmp = value_compare()
@@ -118,135 +118,135 @@
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   set_impl(BOOST_RV_REF(set_impl) x) 
+   //!  
+   set_impl(BOOST_RV_REF(set_impl) x)
       :  tree_(::boost::move(x.tree_))
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   set_impl& operator=(BOOST_RV_REF(set_impl) x) 
+   //!  
+   set_impl& operator=(BOOST_RV_REF(set_impl) x)
    {  tree_ = ::boost::move(x.tree_);  return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the set 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the set
    //!   are not deleted (i.e. no destructors are called).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~set_impl() 
+   ~set_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    { return tree_.cbegin();  }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    { return tree_.cend();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    { return tree_.crbegin();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    { return tree_.crend();  }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a reference to the set associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static set_impl &container_from_end_iterator(iterator end_iterator)
    {
@@ -257,11 +257,11 @@
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the set associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const set_impl &container_from_end_iterator(const_iterator end_iterator)
    {
@@ -271,11 +271,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid iterator of set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a reference to the set associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static set_impl &container_from_iterator(iterator it)
    {
@@ -285,11 +285,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid const_iterator of set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the set associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static const set_impl &container_from_iterator(const_iterator it)
    {
@@ -299,42 +299,42 @@
    }
 
    //! <b>Effects</b>: Returns the key_compare object used by the set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If key_compare copy-constructor throws.
    key_compare key_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns the value_compare object used by the set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    { return tree_.empty(); }
 
    //! <b>Effects</b>: Returns the number of elements stored in the set.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this if,
    //!   constant-time size option is enabled. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    { return tree_.size(); }
 
    //! <b>Effects</b>: Swaps the contents of two sets.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the swap() call for the comparison functor
    //!   found using ADL throws. Strong guarantee.
    void swap(set_impl& other)
@@ -344,22 +344,22 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const set_impl &src, Cloner cloner, Disposer disposer)
    {  tree_.clone_from(src.tree_, cloner, disposer);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Tries to inserts value into the set.
    //!
    //! <b>Returns</b>: If the value
@@ -367,39 +367,39 @@
    //!   iterator to the new value and true. If there is an equivalent value
    //!   returns a pair containing an iterator to the already present value
    //!   and false.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    std::pair<iterator, bool> insert(reference value)
    {  return tree_.insert_unique(value);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
-   //! <b>Effects</b>: Tries to to insert x into the set, using "hint" 
+   //!
+   //! <b>Effects</b>: Tries to to insert x into the set, using "hint"
    //!   as a hint to where it will be inserted.
    //!
-   //! <b>Returns</b>: An iterator that points to the position where the 
+   //! <b>Returns</b>: An iterator that points to the position where the
    //!   new element was inserted into the set.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(const_iterator hint, reference value)
    {  return tree_.insert_unique(hint, value);  }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the set, using
    //!   a user provided key instead of the value itself.
    //!
@@ -408,16 +408,16 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   node that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that 
+   //!   than the value_type and this function offers the possibility to use that
    //!   part to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
@@ -431,12 +431,12 @@
       (const KeyType &key, KeyValueCompare key_value_comp, insert_commit_data &commit_data)
    {  return tree_.insert_unique_check(key, key_value_comp, commit_data); }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the set, using
-   //!   a user provided key instead of the value itself, using "hint" 
+   //!   a user provided key instead of the value itself, using "hint"
    //!   as a hint to where it will be inserted.
    //!
    //! <b>Returns</b>: If there is an equivalent value
@@ -444,23 +444,23 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   constructing that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that key 
+   //!   than the value_type and this function offers the possibility to use that key
    //!   to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
    //!   "insert_commit" to insert the object in constant-time. This can give a total
    //!   constant-time complexity to the insertion: check(O(1)) + commit(O(1)).
-   //!   
+   //!  
    //!   "commit_data" remains valid for a subsequent "insert_commit" only if no more
    //!   objects are inserted or erased from the set.
    template<class KeyType, class KeyValueCompare>
@@ -473,33 +473,33 @@
    //!   must have been obtained from a previous call to "insert_check".
    //!   No objects should have been inserted or erased from the set between
    //!   the "insert_check" that filled "commit_data" and the call to "insert_commit".
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Returns</b>: An iterator to the newly inserted object.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
    iterator insert_commit(reference value, const insert_commit_data &commit_data)
    {  return tree_.insert_unique_commit(value, commit_data); }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a range into the set.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -512,11 +512,11 @@
    //!   inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the tree before "pos".
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if "pos" is not
    //! the successor of "value" or "value" is not unique tree ordering and uniqueness
    //! invariants will be broken respectively.
@@ -529,11 +529,11 @@
    //!   any inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the tree in the last position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   less than or equal to the greatest inserted key tree ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -546,11 +546,11 @@
    //!   than any inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the tree in the first position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   greater than or equal to the the mimum inserted key tree ordering or uniqueness
    //!   invariants will be broken.
@@ -560,41 +560,41 @@
    void push_front(reference value)
    {  tree_.push_front(value);  }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
    {  return tree_.erase(i);  }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, const_iterator e)
    {  return tree_.erase(b, e);  }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size()) + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -602,13 +602,13 @@
 
    //! <b>Effects</b>: Erases all the elements that compare equal with
    //!   the given key and the given comparison functor.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If the comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
@@ -621,16 +621,16 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -646,14 +646,14 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -664,13 +664,13 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(value)). Basic guarantee.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -684,11 +684,11 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -700,26 +700,26 @@
    {  return tree_.erase_and_dispose(key, comp, disposer);  }
 
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
    {  return tree_.clear();  }
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
-   //! 
+   //!
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -727,20 +727,20 @@
    {  return tree_.clear_and_dispose(disposer);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    size_type count(const_reference value) const
    {  return tree_.find(value) != end();  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the same key
    //!   compared with the given comparison functor.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType& key, KeyValueCompare comp) const
@@ -748,9 +748,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator lower_bound(const_reference value)
    {  return tree_.lower_bound(value);  }
@@ -760,13 +760,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -776,9 +776,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator lower_bound(const_reference value) const
    {  return tree_.lower_bound(value);  }
@@ -788,13 +788,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -804,9 +804,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator upper_bound(const_reference value)
    {  return tree_.upper_bound(value);  }
@@ -816,11 +816,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -832,9 +832,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator upper_bound(const_reference value) const
    {  return tree_.upper_bound(value);  }
@@ -844,11 +844,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -858,11 +858,11 @@
    const_iterator upper_bound(const KeyType& key, KeyValueCompare comp) const
    {  return tree_.upper_bound(key, comp);  }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator find(const_reference value)
    {  return tree_.find(value);  }
@@ -871,12 +871,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -886,11 +886,11 @@
    iterator find(const KeyType& key, KeyValueCompare comp)
    {  return tree_.find(key, comp);  }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator find(const_reference value) const
    {  return tree_.find(value);  }
@@ -899,12 +899,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -917,9 +917,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return tree_.equal_range(value);  }
@@ -928,13 +928,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -947,9 +947,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
@@ -959,13 +959,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -978,14 +978,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -993,14 +993,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static const_iterator s_iterator_to(const_reference value)
@@ -1008,48 +1008,48 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value shall not be in a set/multiset.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
    { tree_type::init_node(value);   }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -1059,14 +1059,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   tree with with_this. The tree does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -1188,7 +1188,7 @@
    >::type
 {
    typedef typename make_set
-      <T, 
+      <T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -1240,9 +1240,9 @@
 
 #endif
 
-//! The class template multiset is an intrusive container, that mimics most of 
+//! The class template multiset is an intrusive container, that mimics most of
 //! the interface of std::multiset as described in the C++ standard.
-//! 
+//!
 //! The template parameter \c T is the type to be managed by the container.
 //! The user can specify additional options and if no options are provided
 //! default options are used.
@@ -1302,30 +1302,30 @@
    /// @endcond
 
    public:
-   //! <b>Effects</b>: Constructs an empty multiset. 
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //! <b>Effects</b>: Constructs an empty multiset.
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare object throws. 
+   //!   or the copy constructor/operator() of the value_compare object throws.
    multiset_impl( const value_compare &cmp = value_compare()
-                , const value_traits &v_traits = value_traits()) 
+                , const value_traits &v_traits = value_traits())
       :  tree_(cmp, v_traits)
    {}
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type. 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
    //!   cmp must be a comparison function that induces a strict weak ordering.
-   //! 
-   //! <b>Effects</b>: Constructs an empty multiset and inserts elements from 
+   //!
+   //! <b>Effects</b>: Constructs an empty multiset and inserts elements from
    //!   [b, e).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise N * log N, where N is the distance between first and last
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare object throws. 
+   //!   or the copy constructor/operator() of the value_compare object throws.
    template<class Iterator>
    multiset_impl( Iterator b, Iterator e
                 , const value_compare &cmp = value_compare()
@@ -1334,135 +1334,135 @@
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   multiset_impl(BOOST_RV_REF(multiset_impl) x) 
+   //!  
+   multiset_impl(BOOST_RV_REF(multiset_impl) x)
       :  tree_(::boost::move(x.tree_))
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   multiset_impl& operator=(BOOST_RV_REF(multiset_impl) x) 
+   //!  
+   multiset_impl& operator=(BOOST_RV_REF(multiset_impl) x)
    {  tree_ = ::boost::move(x.tree_);  return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the set 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the set
    //!   are not deleted (i.e. no destructors are called).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~multiset_impl() 
+   ~multiset_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    { return tree_.cbegin();  }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    { return tree_.cend();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    { return tree_.crbegin();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    { return tree_.crend();  }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the multiset associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static multiset_impl &container_from_end_iterator(iterator end_iterator)
    {
@@ -1473,11 +1473,11 @@
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the multiset associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const multiset_impl &container_from_end_iterator(const_iterator end_iterator)
    {
@@ -1487,11 +1487,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid iterator of multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the multiset associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static multiset_impl &container_from_iterator(iterator it)
    {
@@ -1501,11 +1501,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid const_iterator of multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the multiset associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static const multiset_impl &container_from_iterator(const_iterator it)
    {
@@ -1515,42 +1515,42 @@
    }
 
    //! <b>Effects</b>: Returns the key_compare object used by the multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If key_compare copy-constructor throws.
    key_compare key_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns the value_compare object used by the multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    { return tree_.empty(); }
 
    //! <b>Effects</b>: Returns the number of elements stored in the multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this if,
    //!   constant-time size option is enabled. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    { return tree_.size(); }
 
    //! <b>Effects</b>: Swaps the contents of two multisets.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the swap() call for the comparison functor
    //!   found using ADL throws. Strong guarantee.
    void swap(multiset_impl& other)
@@ -1560,69 +1560,69 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const multiset_impl &src, Cloner cloner, Disposer disposer)
    {  tree_.clone_from(src.tree_, cloner, disposer);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the multiset.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(reference value)
    {  return tree_.insert_equal(value);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts x into the multiset, using pos as a hint to
    //!   where it will be inserted.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(const_iterator hint, reference value)
    {  return tree_.insert_equal(hint, value);  }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a range into the multiset.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -1634,11 +1634,11 @@
    //!   once inserted according to the predicate
    //!
    //! <b>Effects</b>: Inserts x into the tree before "pos".
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if "pos" is not
    //! the successor of "value" tree ordering invariant will be broken.
    //! This is a low-level function to be used only for performance reasons
@@ -1650,11 +1650,11 @@
    //!   than the greatest inserted key
    //!
    //! <b>Effects</b>: Inserts x into the tree in the last position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   less than the greatest inserted key tree ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -1667,11 +1667,11 @@
    //!   than the minimum inserted key
    //!
    //! <b>Effects</b>: Inserts x into the tree in the first position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   greater than the minimum inserted key tree ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -1680,41 +1680,41 @@
    void push_front(reference value)
    {  tree_.push_front(value);  }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
-   //! <b>Complexity</b>: Average complexity is constant time. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
+   //! <b>Complexity</b>: Average complexity is constant time.
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
    {  return tree_.erase(i);  }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, iterator e)
    {  return tree_.erase(b, e);  }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -1722,13 +1722,13 @@
 
    //! <b>Effects</b>: Erases all the elements that compare equal with
    //!   the given key and the given comparison functor.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
@@ -1743,14 +1743,14 @@
    //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -1768,12 +1768,12 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -1784,13 +1784,13 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1804,11 +1804,11 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -1820,26 +1820,26 @@
    {  return tree_.erase_and_dispose(key, comp, disposer);  }
 
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
    {  return tree_.clear();  }
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
-   //! 
+   //!
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1847,20 +1847,20 @@
    {  return tree_.clear_and_dispose(disposer);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    size_type count(const_reference value) const
    {  return tree_.count(value);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the same key
    //!   compared with the given comparison functor.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType& key, KeyValueCompare comp) const
@@ -1868,9 +1868,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator lower_bound(const_reference value)
    {  return tree_.lower_bound(value);  }
@@ -1880,13 +1880,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -1896,9 +1896,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator lower_bound(const_reference value) const
    {  return tree_.lower_bound(value);  }
@@ -1908,13 +1908,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -1924,9 +1924,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator upper_bound(const_reference value)
    {  return tree_.upper_bound(value);  }
@@ -1936,11 +1936,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1952,9 +1952,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator upper_bound(const_reference value) const
    {  return tree_.upper_bound(value);  }
@@ -1964,11 +1964,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1978,11 +1978,11 @@
    const_iterator upper_bound(const KeyType& key, KeyValueCompare comp) const
    {  return tree_.upper_bound(key, comp);  }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator find(const_reference value)
    {  return tree_.find(value);  }
@@ -1991,12 +1991,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2006,11 +2006,11 @@
    iterator find(const KeyType& key, KeyValueCompare comp)
    {  return tree_.find(key, comp);  }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator find(const_reference value) const
    {  return tree_.find(value);  }
@@ -2019,12 +2019,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2037,9 +2037,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return tree_.equal_range(value);  }
@@ -2048,13 +2048,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2067,9 +2067,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
@@ -2079,13 +2079,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2098,14 +2098,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -2113,14 +2113,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static const_iterator s_iterator_to(const_reference value)
@@ -2128,48 +2128,48 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value shall not be in a set/multiset.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
    { tree_type::init_node(value);   }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -2179,14 +2179,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   tree with with_this. The tree does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -2195,11 +2195,11 @@
    {  tree_.replace_node(replace_this, with_this);   }
 
    //! <b>Effects</b>: removes "value" from the container.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic time.
-   //! 
+   //!
    //! <b>Note</b>: This static function is only usable with non-constant
    //! time size containers that have stateless comparison functors.
    //!
@@ -2323,14 +2323,14 @@
       #endif
       >::type
 {
-   typedef typename make_multiset<T, 
+   typedef typename make_multiset<T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
       Options...
       #endif
       >::type   Base;
-   
+  
    BOOST_MOVABLE_BUT_NOT_COPYABLE(multiset)
 
    public:
@@ -2376,8 +2376,8 @@
 
 #endif
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/set_hook.hpp
==============================================================================
--- trunk/boost/intrusive/set_hook.hpp	(original)
+++ trunk/boost/intrusive/set_hook.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -44,7 +44,7 @@
 {
    /// @cond
    typedef typename pack_options
-      < hook_defaults, 
+      < hook_defaults,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -63,16 +63,16 @@
    typedef implementation_defined type;
 };
 
-//! Derive a class from set_base_hook in order to store objects in 
-//! in a set/multiset. set_base_hook holds the data necessary to maintain 
+//! Derive a class from set_base_hook in order to store objects in
+//! in a set/multiset. set_base_hook holds the data necessary to maintain
 //! the set/multiset and provides an appropriate value_traits class for set/multiset.
-//! 
+//!
 //! The hook admits the following options: \c tag<>, \c void_pointer<>,
 //! \c link_mode<> and \c optimize_size<>.
 //!
-//! \c tag<> defines a tag to identify the node. 
-//! The same tag value can be used in different classes, but if a class is 
-//! derived from more than one \c list_base_hook, then each \c list_base_hook needs its 
+//! \c tag<> defines a tag to identify the node.
+//! The same tag value can be used in different classes, but if a class is
+//! derived from more than one \c list_base_hook, then each \c list_base_hook needs its
 //! unique tag.
 //!
 //! \c void_pointer<> is the pointer type that will be used internally in the hook
@@ -101,27 +101,27 @@
    public:
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    set_base_hook();
 
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    set_base_hook(const set_base_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    set_base_hook& operator=(const set_base_hook& );
@@ -130,37 +130,37 @@
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in a set an assertion is raised. If link_mode is
    //!   \c auto_unlink and \c is_linked() is true, the node is unlinked.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~set_base_hook();
 
-   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements 
-   //!   related to those nodes in one or two containers. That is, if the node 
-   //!   this is part of the element e1, the node x is part of the element e2 
-   //!   and both elements are included in the containers s1 and s2, then after 
-   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1 
-   //!   at the position of e1. If one element is not in a container, then 
-   //!   after the swap-operation the other element is not in a container. 
-   //!   Iterators to e1 and e2 related to those nodes are invalidated. 
+   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements
+   //!   related to those nodes in one or two containers. That is, if the node
+   //!   this is part of the element e1, the node x is part of the element e2
+   //!   and both elements are included in the containers s1 and s2, then after
+   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1
+   //!   at the position of e1. If one element is not in a container, then
+   //!   after the swap-operation the other element is not in a container.
+   //!   Iterators to e1 and e2 related to those nodes are invalidated.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
-   //! <b>Throws</b>: Nothing. 
+   //! <b>Throws</b>: Nothing.
    void swap_nodes(set_base_hook &other);
 
    //! <b>Precondition</b>: link_mode must be \c safe_link or \c auto_unlink.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c set::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c set::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
 
    //! <b>Effects</b>: Removes the node if it's inserted in a container.
    //!   This function is only allowed if link_mode is \c auto_unlink.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    void unlink();
    #endif
 };
@@ -176,7 +176,7 @@
 {
    /// @cond
    typedef typename pack_options
-      < hook_defaults, 
+      < hook_defaults,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -198,7 +198,7 @@
 //! Put a public data member set_member_hook in order to store objects of this class in
 //! a set/multiset. set_member_hook holds the data necessary for maintaining the
 //! set/multiset and provides an appropriate value_traits class for set/multiset.
-//! 
+//!
 //! The hook admits the following options: \c void_pointer<>,
 //! \c link_mode<> and \c optimize_size<>.
 //!
@@ -228,27 +228,27 @@
    public:
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    set_member_hook();
 
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    set_member_hook(const set_member_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    set_member_hook& operator=(const set_member_hook& );
@@ -257,43 +257,43 @@
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in a set an assertion is raised. If link_mode is
    //!   \c auto_unlink and \c is_linked() is true, the node is unlinked.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~set_member_hook();
 
-   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements 
-   //!   related to those nodes in one or two containers. That is, if the node 
-   //!   this is part of the element e1, the node x is part of the element e2 
-   //!   and both elements are included in the containers s1 and s2, then after 
-   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1 
-   //!   at the position of e1. If one element is not in a container, then 
-   //!   after the swap-operation the other element is not in a container. 
-   //!   Iterators to e1 and e2 related to those nodes are invalidated. 
+   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements
+   //!   related to those nodes in one or two containers. That is, if the node
+   //!   this is part of the element e1, the node x is part of the element e2
+   //!   and both elements are included in the containers s1 and s2, then after
+   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1
+   //!   at the position of e1. If one element is not in a container, then
+   //!   after the swap-operation the other element is not in a container.
+   //!   Iterators to e1 and e2 related to those nodes are invalidated.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
-   //! <b>Throws</b>: Nothing. 
+   //! <b>Throws</b>: Nothing.
    void swap_nodes(set_member_hook &other);
 
    //! <b>Precondition</b>: link_mode must be \c safe_link or \c auto_unlink.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c set::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c set::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
 
    //! <b>Effects</b>: Removes the node if it's inserted in a container.
    //!   This function is only allowed if link_mode is \c auto_unlink.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    void unlink();
    #endif
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/sg_set.hpp
==============================================================================
--- trunk/boost/intrusive/sg_set.hpp	(original)
+++ trunk/boost/intrusive/sg_set.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -22,9 +22,9 @@
 namespace boost {
 namespace intrusive {
 
-//! The class template sg_set is an intrusive container, that mimics most of 
+//! The class template sg_set is an intrusive container, that mimics most of
 //! the interface of std::set as described in the C++ standard.
-//! 
+//!
 //! The template parameter \c T is the type to be managed by the container.
 //! The user can specify additional options and if no options are provided
 //! default options are used.
@@ -77,30 +77,30 @@
    /// @endcond
 
    public:
-   //! <b>Effects</b>: Constructs an empty sg_set. 
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //! <b>Effects</b>: Constructs an empty sg_set.
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor of the value_compare object throws. 
+   //!   or the copy constructor of the value_compare object throws.
    sg_set_impl( const value_compare &cmp = value_compare()
-           , const value_traits &v_traits = value_traits()) 
+           , const value_traits &v_traits = value_traits())
       :  tree_(cmp, v_traits)
    {}
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type. 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
    //!   cmp must be a comparison function that induces a strict weak ordering.
-   //! 
-   //! <b>Effects</b>: Constructs an empty sg_set and inserts elements from 
+   //!
+   //! <b>Effects</b>: Constructs an empty sg_set and inserts elements from
    //!   [b, e).
-   //! 
-   //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using 
+   //!
+   //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise N * log N, where N is std::distance(last, first).
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare object throws. 
+   //!   or the copy constructor/operator() of the value_compare object throws.
    template<class Iterator>
    sg_set_impl( Iterator b, Iterator e
            , const value_compare &cmp = value_compare()
@@ -109,135 +109,135 @@
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   sg_set_impl(BOOST_RV_REF(sg_set_impl) x) 
+   //!  
+   sg_set_impl(BOOST_RV_REF(sg_set_impl) x)
       :  tree_(::boost::move(x.tree_))
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   sg_set_impl& operator=(BOOST_RV_REF(sg_set_impl) x) 
+   //!  
+   sg_set_impl& operator=(BOOST_RV_REF(sg_set_impl) x)
    {  tree_ = ::boost::move(x.tree_);  return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the sg_set 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the sg_set
    //!   are not deleted (i.e. no destructors are called).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~sg_set_impl() 
+   ~sg_set_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    { return tree_.cbegin();  }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    { return tree_.cend();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    { return tree_.crbegin();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    { return tree_.crend();  }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of sg_set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the sg_set associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static sg_set_impl &container_from_end_iterator(iterator end_iterator)
    {
@@ -248,11 +248,11 @@
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of sg_set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the sg_set associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const sg_set_impl &container_from_end_iterator(const_iterator end_iterator)
    {
@@ -262,11 +262,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid iterator of set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a reference to the set associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static sg_set_impl &container_from_iterator(iterator it)
    {
@@ -276,11 +276,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid const_iterator of set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the set associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static const sg_set_impl &container_from_iterator(const_iterator it)
    {
@@ -290,42 +290,42 @@
    }
 
    //! <b>Effects</b>: Returns the key_compare object used by the sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If key_compare copy-constructor throws.
    key_compare key_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns the value_compare object used by the sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    { return tree_.empty(); }
 
    //! <b>Effects</b>: Returns the number of elements stored in the sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this if,
    //!   constant-time size option is enabled. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    { return tree_.size(); }
 
    //! <b>Effects</b>: Swaps the contents of two sets.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the swap() call for the comparison functor
    //!   found using ADL throws. Strong guarantee.
    void swap(sg_set_impl& other)
@@ -335,22 +335,22 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const sg_set_impl &src, Cloner cloner, Disposer disposer)
    {  tree_.clone_from(src.tree_, cloner, disposer);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Tries to inserts value into the sg_set.
    //!
    //! <b>Returns</b>: If the value
@@ -358,39 +358,39 @@
    //!   iterator to the new value and true. If there is an equivalent value
    //!   returns a pair containing an iterator to the already present value
    //!   and false.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    std::pair<iterator, bool> insert(reference value)
    {  return tree_.insert_unique(value);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
-   //! <b>Effects</b>: Tries to to insert x into the sg_set, using "hint" 
+   //!
+   //! <b>Effects</b>: Tries to to insert x into the sg_set, using "hint"
    //!   as a hint to where it will be inserted.
    //!
-   //! <b>Returns</b>: An iterator that points to the position where the 
+   //! <b>Returns</b>: An iterator that points to the position where the
    //!   new element was inserted into the sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(const_iterator hint, reference value)
    {  return tree_.insert_unique(hint, value);  }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the sg_set, using
    //!   a user provided key instead of the value itself.
    //!
@@ -399,16 +399,16 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   node that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that 
+   //!   than the value_type and this function offers the possibility to use that
    //!   part to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
@@ -422,12 +422,12 @@
       (const KeyType &key, KeyValueCompare key_value_comp, insert_commit_data &commit_data)
    {  return tree_.insert_unique_check(key, key_value_comp, commit_data); }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the sg_set, using
-   //!   a user provided key instead of the value itself, using "hint" 
+   //!   a user provided key instead of the value itself, using "hint"
    //!   as a hint to where it will be inserted.
    //!
    //! <b>Returns</b>: If there is an equivalent value
@@ -435,23 +435,23 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   constructing that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that key 
+   //!   than the value_type and this function offers the possibility to use that key
    //!   to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
    //!   "insert_commit" to insert the object in constant-time. This can give a total
    //!   constant-time complexity to the insertion: check(O(1)) + commit(O(1)).
-   //!   
+   //!  
    //!   "commit_data" remains valid for a subsequent "insert_commit" only if no more
    //!   objects are inserted or erased from the sg_set.
    template<class KeyType, class KeyValueCompare>
@@ -464,33 +464,33 @@
    //!   must have been obtained from a previous call to "insert_check".
    //!   No objects should have been inserted or erased from the sg_set between
    //!   the "insert_check" that filled "commit_data" and the call to "insert_commit".
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the sg_set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Returns</b>: An iterator to the newly inserted object.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
    iterator insert_commit(reference value, const insert_commit_data &commit_data)
    {  return tree_.insert_unique_commit(value, commit_data); }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a range into the sg_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -503,11 +503,11 @@
    //!   inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the tree before "pos".
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if "pos" is not
    //! the successor of "value" or "value" is not unique tree ordering and uniqueness
    //! invariants will be broken respectively.
@@ -520,11 +520,11 @@
    //!   any inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the tree in the last position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   less than or equal to the greatest inserted key tree ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -537,11 +537,11 @@
    //!   than any inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the tree in the first position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   greater than or equal to the the mimum inserted key tree ordering or uniqueness
    //!   invariants will be broken.
@@ -551,41 +551,41 @@
    void push_front(reference value)
    {  tree_.push_front(value);  }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
    {  return tree_.erase(i);  }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, const_iterator e)
    {  return tree_.erase(b, e);  }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size()) + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -593,13 +593,13 @@
 
    //! <b>Effects</b>: Erases all the elements that compare equal with
    //!   the given key and the given comparison functor.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If the comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
@@ -612,16 +612,16 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -637,14 +637,14 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -655,13 +655,13 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(value)). Basic guarantee.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -675,11 +675,11 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -691,26 +691,26 @@
    {  return tree_.erase_and_dispose(key, comp, disposer);  }
 
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
    {  return tree_.clear();  }
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
-   //! 
+   //!
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -718,20 +718,20 @@
    {  return tree_.clear_and_dispose(disposer);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    size_type count(const_reference value) const
    {  return tree_.find(value) != end();  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the same key
    //!   compared with the given comparison functor.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType& key, KeyValueCompare comp) const
@@ -739,9 +739,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator lower_bound(const_reference value)
    {  return tree_.lower_bound(value);  }
@@ -751,13 +751,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -767,9 +767,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator lower_bound(const_reference value) const
    {  return tree_.lower_bound(value);  }
@@ -779,13 +779,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -795,9 +795,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator upper_bound(const_reference value)
    {  return tree_.upper_bound(value);  }
@@ -807,11 +807,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -823,9 +823,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator upper_bound(const_reference value) const
    {  return tree_.upper_bound(value);  }
@@ -835,11 +835,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -849,11 +849,11 @@
    const_iterator upper_bound(const KeyType& key, KeyValueCompare comp) const
    {  return tree_.upper_bound(key, comp);  }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator find(const_reference value)
    {  return tree_.find(value);  }
@@ -862,12 +862,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -877,11 +877,11 @@
    iterator find(const KeyType& key, KeyValueCompare comp)
    {  return tree_.find(key, comp);  }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator find(const_reference value) const
    {  return tree_.find(value);  }
@@ -890,12 +890,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -908,9 +908,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return tree_.equal_range(value);  }
@@ -919,13 +919,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -938,9 +938,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
@@ -950,13 +950,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -969,14 +969,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a sg_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the sg_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -984,14 +984,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a sg_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   sg_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static const_iterator s_iterator_to(const_reference value)
@@ -999,48 +999,48 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a sg_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the sg_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a sg_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   sg_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value shall not be in a sg_set/sg_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
    { tree_type::init_node(value);   }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -1050,14 +1050,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   tree with with_this. The tree does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -1066,21 +1066,21 @@
    {  tree_.replace_node(replace_this, with_this);   }
 
    //! <b>Effects</b>: Rebalances the tree.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear.
    void rebalance()
    {  tree_.rebalance(); }
 
    //! <b>Requires</b>: old_root is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
    //!
    //! <b>Returns</b>: The new root of the subtree.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements in the subtree.
    iterator rebalance_subtree(iterator root)
    {  return tree_.rebalance_subtree(root); }
@@ -1088,18 +1088,18 @@
    //! <b>Returns</b>: The balance factor (alpha) used in this tree
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    float balance_factor() const
    {  return tree_.balance_factor(); }
 
    //! <b>Requires</b>: new_alpha must be a value between 0.5 and 1.0
-   //! 
+   //!
    //! <b>Effects</b>: Establishes a new balance factor (alpha) and rebalances
    //!   the tree if the new balance factor is stricter (less) than the old factor.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements in the subtree.
    void balance_factor(float new_alpha)
    {  tree_.balance_factor(new_alpha); }
@@ -1190,7 +1190,7 @@
 {
    /// @cond
    typedef sg_set_impl
-      < typename make_sgtree_opt<T, 
+      < typename make_sgtree_opt<T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -1210,7 +1210,7 @@
 template<class T, class ...Options>
 #endif
 class sg_set
-   :  public make_sg_set<T, 
+   :  public make_sg_set<T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -1219,7 +1219,7 @@
       >::type
 {
    typedef typename make_sg_set
-      <T, 
+      <T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -1271,9 +1271,9 @@
 
 #endif
 
-//! The class template sg_multiset is an intrusive container, that mimics most of 
+//! The class template sg_multiset is an intrusive container, that mimics most of
 //! the interface of std::sg_multiset as described in the C++ standard.
-//! 
+//!
 //! The template parameter \c T is the type to be managed by the container.
 //! The user can specify additional options and if no options are provided
 //! default options are used.
@@ -1325,30 +1325,30 @@
    /// @endcond
 
    public:
-   //! <b>Effects</b>: Constructs an empty sg_multiset. 
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //! <b>Effects</b>: Constructs an empty sg_multiset.
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare object throws. 
+   //!   or the copy constructor/operator() of the value_compare object throws.
    sg_multiset_impl( const value_compare &cmp = value_compare()
-                , const value_traits &v_traits = value_traits()) 
+                , const value_traits &v_traits = value_traits())
       :  tree_(cmp, v_traits)
    {}
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type. 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
    //!   cmp must be a comparison function that induces a strict weak ordering.
-   //! 
-   //! <b>Effects</b>: Constructs an empty sg_multiset and inserts elements from 
+   //!
+   //! <b>Effects</b>: Constructs an empty sg_multiset and inserts elements from
    //!   [b, e).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise N * log N, where N is the distance between first and last
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare object throws. 
+   //!   or the copy constructor/operator() of the value_compare object throws.
    template<class Iterator>
    sg_multiset_impl( Iterator b, Iterator e
                 , const value_compare &cmp = value_compare()
@@ -1357,135 +1357,135 @@
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   sg_multiset_impl(BOOST_RV_REF(sg_multiset_impl) x) 
+   //!  
+   sg_multiset_impl(BOOST_RV_REF(sg_multiset_impl) x)
       :  tree_(::boost::move(x.tree_))
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   sg_multiset_impl& operator=(BOOST_RV_REF(sg_multiset_impl) x) 
+   //!  
+   sg_multiset_impl& operator=(BOOST_RV_REF(sg_multiset_impl) x)
    {  tree_ = ::boost::move(x.tree_);  return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the sg_multiset 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the sg_multiset
    //!   are not deleted (i.e. no destructors are called).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~sg_multiset_impl() 
+   ~sg_multiset_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    { return tree_.cbegin();  }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    { return tree_.cend();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    { return tree_.crbegin();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    { return tree_.crend();  }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of sg_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the sg_multiset associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static sg_multiset_impl &container_from_end_iterator(iterator end_iterator)
    {
@@ -1496,11 +1496,11 @@
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of sg_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the sg_multiset associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const sg_multiset_impl &container_from_end_iterator(const_iterator end_iterator)
    {
@@ -1510,11 +1510,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid iterator of multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the multiset associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static sg_multiset_impl &container_from_iterator(iterator it)
    {
@@ -1524,11 +1524,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid const_iterator of multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the multiset associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const sg_multiset_impl &container_from_iterator(const_iterator it)
    {
@@ -1538,42 +1538,42 @@
    }
 
    //! <b>Effects</b>: Returns the key_compare object used by the sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If key_compare copy-constructor throws.
    key_compare key_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns the value_compare object used by the sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    { return tree_.empty(); }
 
    //! <b>Effects</b>: Returns the number of elements stored in the sg_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this if,
    //!   constant-time size option is enabled. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    { return tree_.size(); }
 
    //! <b>Effects</b>: Swaps the contents of two sg_multisets.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the swap() call for the comparison functor
    //!   found using ADL throws. Strong guarantee.
    void swap(sg_multiset_impl& other)
@@ -1583,69 +1583,69 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const sg_multiset_impl &src, Cloner cloner, Disposer disposer)
    {  tree_.clone_from(src.tree_, cloner, disposer);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the sg_multiset.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(reference value)
    {  return tree_.insert_equal(value);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts x into the sg_multiset, using pos as a hint to
    //!   where it will be inserted.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(const_iterator hint, reference value)
    {  return tree_.insert_equal(hint, value);  }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a range into the sg_multiset.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -1657,11 +1657,11 @@
    //!   once inserted according to the predicate
    //!
    //! <b>Effects</b>: Inserts x into the tree before "pos".
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if "pos" is not
    //! the successor of "value" tree ordering invariant will be broken.
    //! This is a low-level function to be used only for performance reasons
@@ -1673,11 +1673,11 @@
    //!   than the greatest inserted key
    //!
    //! <b>Effects</b>: Inserts x into the tree in the last position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   less than the greatest inserted key tree ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -1690,11 +1690,11 @@
    //!   than the minimum inserted key
    //!
    //! <b>Effects</b>: Inserts x into the tree in the first position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   greater than the minimum inserted key tree ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -1703,41 +1703,41 @@
    void push_front(reference value)
    {  tree_.push_front(value);  }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
-   //! <b>Complexity</b>: Average complexity is constant time. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
+   //! <b>Complexity</b>: Average complexity is constant time.
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
    {  return tree_.erase(i);  }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, const_iterator e)
    {  return tree_.erase(b, e);  }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -1745,13 +1745,13 @@
 
    //! <b>Effects</b>: Erases all the elements that compare equal with
    //!   the given key and the given comparison functor.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
@@ -1766,14 +1766,14 @@
    //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -1791,12 +1791,12 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -1807,13 +1807,13 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1827,11 +1827,11 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -1843,26 +1843,26 @@
    {  return tree_.erase_and_dispose(key, comp, disposer);  }
 
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
    {  return tree_.clear();  }
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
-   //! 
+   //!
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1870,20 +1870,20 @@
    {  return tree_.clear_and_dispose(disposer);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    size_type count(const_reference value) const
    {  return tree_.count(value);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the same key
    //!   compared with the given comparison functor.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType& key, KeyValueCompare comp) const
@@ -1891,9 +1891,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator lower_bound(const_reference value)
    {  return tree_.lower_bound(value);  }
@@ -1903,13 +1903,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -1919,9 +1919,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator lower_bound(const_reference value) const
    {  return tree_.lower_bound(value);  }
@@ -1931,13 +1931,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -1947,9 +1947,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator upper_bound(const_reference value)
    {  return tree_.upper_bound(value);  }
@@ -1959,11 +1959,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1975,9 +1975,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator upper_bound(const_reference value) const
    {  return tree_.upper_bound(value);  }
@@ -1987,11 +1987,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2001,11 +2001,11 @@
    const_iterator upper_bound(const KeyType& key, KeyValueCompare comp) const
    {  return tree_.upper_bound(key, comp);  }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator find(const_reference value)
    {  return tree_.find(value);  }
@@ -2014,12 +2014,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2029,11 +2029,11 @@
    iterator find(const KeyType& key, KeyValueCompare comp)
    {  return tree_.find(key, comp);  }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator find(const_reference value) const
    {  return tree_.find(value);  }
@@ -2042,12 +2042,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2060,9 +2060,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return tree_.equal_range(value);  }
@@ -2071,13 +2071,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2090,9 +2090,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
@@ -2102,13 +2102,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2121,14 +2121,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a sg_multiset of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the sg_multiset
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -2136,14 +2136,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a sg_multiset of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   sg_multiset that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static const_iterator s_iterator_to(const_reference value)
@@ -2151,48 +2151,48 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a sg_multiset of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the sg_multiset
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a sg_multiset of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   sg_multiset that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value shall not be in a sg_multiset/sg_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
    { tree_type::init_node(value);   }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -2202,14 +2202,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   tree with with_this. The tree does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -2218,21 +2218,21 @@
    {  tree_.replace_node(replace_this, with_this);   }
 
    //! <b>Effects</b>: Rebalances the tree.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear.
    void rebalance()
    {  tree_.rebalance(); }
 
    //! <b>Requires</b>: old_root is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
    //!
    //! <b>Returns</b>: The new root of the subtree.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements in the subtree.
    iterator rebalance_subtree(iterator root)
    {  return tree_.rebalance_subtree(root); }
@@ -2240,18 +2240,18 @@
    //! <b>Returns</b>: The balance factor (alpha) used in this tree
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    float balance_factor() const
    {  return tree_.balance_factor(); }
 
    //! <b>Requires</b>: new_alpha must be a value between 0.5 and 1.0
-   //! 
+   //!
    //! <b>Effects</b>: Establishes a new balance factor (alpha) and rebalances
    //!   the tree if the new balance factor is stricter (less) than the old factor.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements in the subtree.
    void balance_factor(float new_alpha)
    {  tree_.balance_factor(new_alpha); }
@@ -2342,7 +2342,7 @@
 {
    /// @cond
    typedef sg_multiset_impl
-      < typename make_sgtree_opt<T, 
+      < typename make_sgtree_opt<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -2362,7 +2362,7 @@
 template<class T, class ...Options>
 #endif
 class sg_multiset
-   :  public make_sg_multiset<T, 
+   :  public make_sg_multiset<T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -2371,7 +2371,7 @@
       >::type
 {
    typedef typename make_sg_multiset
-      <T, 
+      <T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -2423,8 +2423,8 @@
 
 #endif
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/sgtree.hpp
==============================================================================
--- trunk/boost/intrusive/sgtree.hpp	(original)
+++ trunk/boost/intrusive/sgtree.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -103,7 +103,7 @@
    alpha_by_max_size_t(float alpha)
       :  alpha_(alpha)
    {}
-   
+  
    float operator()(std::size_t max_tree_size) const
    {  return float(max_tree_size)*alpha_;   }
 
@@ -125,7 +125,7 @@
    {  return alpha_;  }
 
    void set_alpha(float alpha)
-   { 
+   {
       alpha_ = alpha;
       inv_minus_logalpha_ = 1/(-detail::fast_log2(alpha));
    }
@@ -191,7 +191,7 @@
 
 //! The class template sgtree is an intrusive scapegoat tree container, that
 //! is used to construct intrusive sg_set and sg_multiset containers.
-//! The no-throw guarantee holds only, if the value_compare object 
+//! The no-throw guarantee holds only, if the value_compare object
 //! doesn't throw.
 //!
 //! The template parameter \c T is the type to be managed by the container.
@@ -260,7 +260,7 @@
    //noncopyable
    BOOST_MOVABLE_BUT_NOT_COPYABLE(sgtree_impl)
 
-   enum { safemode_or_autounlink  = 
+   enum { safemode_or_autounlink  =
             (int)real_value_traits::link_mode == (int)auto_unlink   ||
             (int)real_value_traits::link_mode == (int)safe_link     };
 
@@ -299,7 +299,7 @@
 
    void priv_alpha(float alpha)
    {  return this->priv_alpha_traits().set_alpha(alpha);  }
-  
+ 
    const value_compare &priv_comp() const
    {  return data_.node_plus_pred_.get();  }
 
@@ -363,18 +363,18 @@
 
    typedef typename node_algorithms::insert_commit_data insert_commit_data;
 
-   //! <b>Effects</b>: Constructs an empty tree. 
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //! <b>Effects</b>: Constructs an empty tree.
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
    //!   or the copy constructorof the value_compare object throws. Basic guarantee.
    sgtree_impl( const value_compare &cmp     = value_compare()
-              , const value_traits &v_traits = value_traits()) 
+              , const value_traits &v_traits = value_traits())
       :  data_(cmp, v_traits)
-   {  
-      node_algorithms::init_header(this->priv_header_ptr());  
+   { 
+      node_algorithms::init_header(this->priv_header_ptr()); 
       this->priv_size_traits().set_size(size_type(0));
    }
 
@@ -386,7 +386,7 @@
    //!
    //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise N * log N, where N is the distance between first and last.
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
    //!   or the copy constructor/operator() of the value_compare object throws. Basic guarantee.
@@ -405,58 +405,58 @@
    }
 
    //! <b>Effects</b>: to-do
-   //!   
+   //!  
    sgtree_impl(BOOST_RV_REF(sgtree_impl) x)
       : data_(::boost::move(x.priv_comp()), ::boost::move(x.priv_value_traits()))
    {
-      node_algorithms::init_header(this->priv_header_ptr());  
+      node_algorithms::init_header(this->priv_header_ptr()); 
       this->priv_size_traits().set_size(size_type(0));
       this->swap(x);
    }
 
    //! <b>Effects</b>: to-do
-   //!   
-   sgtree_impl& operator=(BOOST_RV_REF(sgtree_impl) x) 
+   //!  
+   sgtree_impl& operator=(BOOST_RV_REF(sgtree_impl) x)
    {  this->swap(x); return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the set 
-   //!   are not deleted (i.e. no destructors are called), but the nodes according to 
-   //!   the value_traits template parameter are reinitialized and thus can be reused. 
-   //! 
-   //! <b>Complexity</b>: Linear to elements contained in *this. 
-   //! 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the set
+   //!   are not deleted (i.e. no destructors are called), but the nodes according to
+   //!   the value_traits template parameter are reinitialized and thus can be reused.
+   //!
+   //! <b>Complexity</b>: Linear to elements contained in *this.
+   //!
    //! <b>Throws</b>: Nothing.
-   ~sgtree_impl() 
+   ~sgtree_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    {  return iterator (node_traits::get_left(this->priv_header_ptr()), this);   }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    {  return cbegin();   }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    {  return const_iterator (node_traits::get_left(this->priv_header_ptr()), this);   }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    {  return iterator (this->priv_header_ptr(), this);  }
@@ -464,138 +464,138 @@
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the tree.
    //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    {  return cend();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    {  return const_iterator (uncast(this->priv_header_ptr()), this);  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    {  return reverse_iterator(end());  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    {  return const_reverse_iterator(end());  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    {  return const_reverse_iterator(end());  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    {  return reverse_iterator(begin());   }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    {  return const_reverse_iterator(begin());   }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    {  return const_reverse_iterator(begin());   }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of sgtree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the sgtree associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static sgtree_impl &container_from_end_iterator(iterator end_iterator)
    {  return priv_container_from_end_iterator(end_iterator);   }
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of sgtree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the sgtree associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const sgtree_impl &container_from_end_iterator(const_iterator end_iterator)
    {  return priv_container_from_end_iterator(end_iterator);   }
 
    //! <b>Precondition</b>: it must be a valid iterator
    //!   of rbtree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the tree associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static sgtree_impl &container_from_iterator(iterator it)
    {  return priv_container_from_iterator(it);   }
 
    //! <b>Precondition</b>: it must be a valid end const_iterator
    //!   of rbtree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the tree associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static const sgtree_impl &container_from_iterator(const_iterator it)
    {  return priv_container_from_iterator(it);   }
 
    //! <b>Effects</b>: Returns the value_compare object used by the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    {  return priv_comp();   }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    {  return node_algorithms::unique(this->priv_header_ptr());   }
 
    //! <b>Effects</b>: Returns the number of elements stored in the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this
    //!   if constant-time size option is disabled. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    {
@@ -607,9 +607,9 @@
    }
 
    //! <b>Effects</b>: Swaps the contents of two sgtrees.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the comparison functor's swap call throws.
    void swap(sgtree_impl& other)
    {
@@ -628,14 +628,14 @@
    }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the tree before the upper bound.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_equal(reference value)
@@ -656,16 +656,16 @@
 
    //! <b>Requires</b>: value must be an lvalue, and "hint" must be
    //!   a valid iterator.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts x into the tree, using "hint" as a hint to
    //!   where it will be inserted. If "hint" is the upper_bound
    //!   the insertion takes constant time (two comparisons in the worst case)
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_equal(const_iterator hint, reference value)
@@ -684,18 +684,18 @@
       return iterator(p, this);
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a each element of a range into the tree
    //!   before the upper bound of the key of each element.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -707,15 +707,15 @@
    }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the tree if the value
    //!   is not already present.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    std::pair<iterator, bool> insert_unique(reference value)
@@ -729,16 +729,16 @@
 
    //! <b>Requires</b>: value must be an lvalue, and "hint" must be
    //!   a valid iterator
-   //! 
+   //!
    //! <b>Effects</b>: Tries to insert x into the tree, using "hint" as a hint
    //!   to where it will be inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time (two comparisons in the worst case)
    //!   if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_unique(const_iterator hint, reference value)
@@ -750,17 +750,17 @@
       return insert_unique_commit(value, commit_data);
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Tries to insert each element of a range into the tree.
-   //! 
-   //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the 
-   //!   size of the range. However, it is linear in N if the range is already sorted 
+   //!
+   //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
+   //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -777,10 +777,10 @@
       }
    }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the container, using
    //!   a user provided key instead of the value itself.
    //!
@@ -789,16 +789,16 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   node that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that 
+   //!   than the value_type and this function offers the possibility to use that
    //!   part to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
@@ -813,18 +813,18 @@
    {
       detail::key_nodeptr_comp<KeyValueCompare, sgtree_impl>
          comp(key_value_comp, this);
-      std::pair<node_ptr, bool> ret = 
+      std::pair<node_ptr, bool> ret =
          (node_algorithms::insert_unique_check
             (this->priv_header_ptr(), key, comp, commit_data));
       return std::pair<iterator, bool>(iterator(ret.first, this), ret.second);
    }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the container, using
-   //!   a user provided key instead of the value itself, using "hint" 
+   //!   a user provided key instead of the value itself, using "hint"
    //!   as a hint to where it will be inserted.
    //!
    //! <b>Returns</b>: If there is an equivalent value
@@ -832,23 +832,23 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   constructing that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that key 
+   //!   than the value_type and this function offers the possibility to use that key
    //!   to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
    //!   "insert_commit" to insert the object in constant-time. This can give a total
    //!   constant-time complexity to the insertion: check(O(1)) + commit(O(1)).
-   //!   
+   //!  
    //!   "commit_data" remains valid for a subsequent "insert_commit" only if no more
    //!   objects are inserted or erased from the container.
    template<class KeyType, class KeyValueCompare>
@@ -858,7 +858,7 @@
    {
       detail::key_nodeptr_comp<KeyValueCompare, sgtree_impl>
          comp(key_value_comp, this);
-      std::pair<node_ptr, bool> ret = 
+      std::pair<node_ptr, bool> ret =
          (node_algorithms::insert_unique_check
             (this->priv_header_ptr(), hint.pointed_node(), key, comp, commit_data));
       return std::pair<iterator, bool>(iterator(ret.first, this), ret.second);
@@ -868,16 +868,16 @@
    //!   must have been obtained from a previous call to "insert_check".
    //!   No objects should have been inserted or erased from the container between
    //!   the "insert_check" that filled "commit_data" and the call to "insert_commit".
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the avl_set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Returns</b>: An iterator to the newly inserted object.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
@@ -900,11 +900,11 @@
    //!   once inserted according to the predicate
    //!
    //! <b>Effects</b>: Inserts x into the tree before "pos".
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if "pos" is not
    //! the successor of "value" tree ordering invariant will be broken.
    //! This is a low-level function to be used only for performance reasons
@@ -927,11 +927,11 @@
    //!   than the greatest inserted key
    //!
    //! <b>Effects</b>: Inserts x into the tree in the last position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   less than the greatest inserted key tree ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -944,7 +944,7 @@
          BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::unique(to_insert));
       std::size_t max_tree_size = (std::size_t)data_.max_tree_size_;
       node_algorithms::push_back
-         ( this->priv_header_ptr(), to_insert 
+         ( this->priv_header_ptr(), to_insert
          , (size_type)this->size(), this->get_h_alpha_func(), max_tree_size);
       this->priv_size_traits().increment();
       data_.max_tree_size_ = (size_type)max_tree_size;
@@ -954,11 +954,11 @@
    //!   than the minimum inserted key
    //!
    //! <b>Effects</b>: Inserts x into the tree in the first position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   greater than the minimum inserted key tree ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -977,12 +977,12 @@
       data_.max_tree_size_ = (size_type)max_tree_size;
    }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
@@ -1003,26 +1003,26 @@
       return ret.unconst();
    }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, const_iterator e)
    {  size_type n;   return private_erase(b, e, n);   }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -1032,15 +1032,15 @@
    //!   according to the comparison functor "comp".
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
-   size_type erase(const KeyType& key, KeyValueCompare comp                  
+   size_type erase(const KeyType& key, KeyValueCompare comp                 
                   /// @cond
                   , typename detail::enable_if_c<!detail::is_convertible<KeyValueCompare, const_iterator>::value >::type * = 0
                   /// @endcond
@@ -1054,14 +1054,14 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -1082,12 +1082,12 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -1098,13 +1098,13 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1123,11 +1123,11 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -1143,13 +1143,13 @@
       return n;
    }
 
-   //! <b>Effects</b>: Erases all of the elements. 
-   //! 
+   //! <b>Effects</b>: Erases all of the elements.
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
@@ -1167,9 +1167,9 @@
    //!   each node to be erased.
    //! <b>Complexity</b>: Average complexity for is at most O(log(size() + N)),
    //!   where N is the number of elements in the container.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. Calls N times to disposer functor.
    template<class Disposer>
@@ -1181,19 +1181,19 @@
    }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given value
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given value.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type count(const_reference value) const
    {  return this->count(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType &key, KeyValueCompare comp) const
@@ -1204,27 +1204,27 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator lower_bound(const_reference value)
    {  return this->lower_bound(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator lower_bound(const_reference value) const
    {  return this->lower_bound(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator lower_bound(const KeyType &key, KeyValueCompare comp)
@@ -1237,9 +1237,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator lower_bound(const KeyType &key, KeyValueCompare comp) const
@@ -1252,9 +1252,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator upper_bound(const_reference value)
    {  return this->upper_bound(value, priv_comp());   }
@@ -1264,7 +1264,7 @@
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator upper_bound(const KeyType &key, KeyValueCompare comp)
@@ -1277,9 +1277,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator upper_bound(const_reference value) const
    {  return this->upper_bound(value, priv_comp());   }
@@ -1289,7 +1289,7 @@
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator upper_bound(const KeyType &key, KeyValueCompare comp) const
@@ -1300,20 +1300,20 @@
          (this->priv_header_ptr(), key, key_node_comp), this);
    }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   k or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator find(const_reference value)
    {  return this->find(value, priv_comp()); }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   k or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator find(const KeyType &key, KeyValueCompare comp)
@@ -1324,20 +1324,20 @@
          (node_algorithms::find(this->priv_header_ptr(), key, key_node_comp), this);
    }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
    //!   k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator find(const_reference value) const
    {  return this->find(value, priv_comp()); }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
    //!   k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator find(const KeyType &key, KeyValueCompare comp) const
@@ -1351,9 +1351,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return this->equal_range(value, priv_comp());   }
@@ -1361,9 +1361,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    std::pair<iterator,iterator> equal_range(const KeyType &key, KeyValueCompare comp)
@@ -1378,9 +1378,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
@@ -1389,9 +1389,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    std::pair<const_iterator, const_iterator>
@@ -1408,15 +1408,15 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const sgtree_impl &src, Cloner cloner, Disposer disposer)
@@ -1437,11 +1437,11 @@
    }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -1460,14 +1460,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   tree with with_this. The tree does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -1483,14 +1483,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -1501,17 +1501,17 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
-   static const_iterator s_iterator_to(const_reference value) 
+   static const_iterator s_iterator_to(const_reference value)
    {
       BOOST_STATIC_ASSERT((!stateful_value_traits));
       return const_iterator (value_traits::to_node_ptr(const_cast<reference> (value)), 0);
@@ -1519,58 +1519,58 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return iterator (value_traits::to_node_ptr(value), this); }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return const_iterator (value_traits::to_node_ptr(const_cast<reference> (value)), this); }
 
    //! <b>Requires</b>: value shall not be in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
    { node_algorithms::init(value_traits::to_node_ptr(value)); }
 
    //! <b>Effects</b>: Rebalances the tree.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear.
    void rebalance()
    {  node_algorithms::rebalance(this->priv_header_ptr()); }
 
    //! <b>Requires</b>: old_root is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
    //!
    //! <b>Returns</b>: The new root of the subtree.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements in the subtree.
    iterator rebalance_subtree(iterator root)
    {  return iterator(node_algorithms::rebalance_subtree(root.pointed_node()), this); }
@@ -1578,18 +1578,18 @@
    //! <b>Returns</b>: The balance factor (alpha) used in this tree
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    float balance_factor() const
    {  return this->priv_alpha(); }
 
    //! <b>Requires</b>: new_alpha must be a value between 0.5 and 1.0
-   //! 
+   //!
    //! <b>Effects</b>: Establishes a new balance factor (alpha) and rebalances
    //!   the tree if the new balance factor is stricter (less) than the old factor.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements in the subtree.
    void balance_factor(float new_alpha)
    {
@@ -1609,12 +1609,12 @@
    }
 /*
    //! <b>Effects</b>: removes x from a tree of the appropriate type. It has no effect,
-   //! if x is not in such a tree. 
-   //! 
+   //! if x is not in such a tree.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This static function is only usable with the "safe mode"
    //! hook and non-constant time size lists. Otherwise, the user must use
    //! the non-static "erase(reference )" member. If the user calls
@@ -1624,7 +1624,7 @@
    static void remove_node(T& value)
    {
       //This function is only usable for safe mode hooks and non-constant
-      //time lists. 
+      //time lists.
       //BOOST_STATIC_ASSERT((!(safemode_or_autounlink && constant_time_size)));
       BOOST_STATIC_ASSERT((!constant_time_size));
       BOOST_STATIC_ASSERT((boost::is_convertible<T, value_type>::value));
@@ -1795,7 +1795,7 @@
 struct make_sgtree_opt
 {
    typedef typename pack_options
-      < sg_set_defaults<T>, 
+      < sg_set_defaults<T>,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -1826,7 +1826,7 @@
 {
    /// @cond
    typedef sgtree_impl
-      < typename make_sgtree_opt<T, 
+      < typename make_sgtree_opt<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -1845,7 +1845,7 @@
 template<class T, class ...Options>
 #endif
 class sgtree
-   :  public make_sgtree<T, 
+   :  public make_sgtree<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -1854,7 +1854,7 @@
       >::type
 {
    typedef typename make_sgtree
-      <T, 
+      <T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -1903,8 +1903,8 @@
 #endif
 
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/sgtree_algorithms.hpp
==============================================================================
--- trunk/boost/intrusive/sgtree_algorithms.hpp	(original)
+++ trunk/boost/intrusive/sgtree_algorithms.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -45,15 +45,15 @@
 //! <b>Static functions</b>:
 //!
 //! <tt>static node_ptr get_parent(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_parent(node_ptr n, node_ptr parent);</tt>
 //!
 //! <tt>static node_ptr get_left(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_left(node_ptr n, node_ptr left);</tt>
 //!
 //! <tt>static node_ptr get_right(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_right(node_ptr n, node_ptr right);</tt>
 template<class NodeTraits>
 class sgtree_algorithms
@@ -90,27 +90,27 @@
 
    //! <b>Requires</b>: header1 and header2 must be the header nodes
    //!  of two trees.
-   //! 
-   //! <b>Effects</b>: Swaps two trees. After the function header1 will contain 
+   //!
+   //! <b>Effects</b>: Swaps two trees. After the function header1 will contain
    //!   links to the second tree and header2 will have links to the first tree.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
    static void swap_tree(const node_ptr & header1, const node_ptr & header2)
    {  return tree_algorithms::swap_tree(header1, header2);  }
 
    //! <b>Requires</b>: node1 and node2 can't be header nodes
    //!  of two trees.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps two nodes. After the function node1 will be inserted
    //!   in the position node2 before the function. node2 will be inserted in the
    //!   position node1 had before the function.
-   //! 
-   //! <b>Complexity</b>: Logarithmic. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Logarithmic.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   node1 and node2 are not equivalent according to the ordering rules.
    //!
@@ -119,22 +119,22 @@
    {
       if(node1 == node2)
          return;
-   
+  
       node_ptr header1(tree_algorithms::get_header(node1)), header2(tree_algorithms::get_header(node2));
       swap_nodes(node1, header1, node2, header2);
    }
 
    //! <b>Requires</b>: node1 and node2 can't be header nodes
    //!  of two trees with header header1 and header2.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps two nodes. After the function node1 will be inserted
    //!   in the position node2 before the function. node2 will be inserted in the
    //!   position node1 had before the function.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   node1 and node2 are not equivalent according to the ordering rules.
    //!
@@ -144,14 +144,14 @@
 
    //! <b>Requires</b>: node_to_be_replaced must be inserted in a tree
    //!   and new_node must not be inserted in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces node_to_be_replaced in its position in the
    //!   tree with new_node. The tree does not need to be rebalanced
-   //! 
-   //! <b>Complexity</b>: Logarithmic. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Logarithmic.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   new_node is not equivalent to node_to_be_replaced according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -167,14 +167,14 @@
 
    //! <b>Requires</b>: node_to_be_replaced must be inserted in a tree
    //!   with header "header" and new_node must not be inserted in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces node_to_be_replaced in its position in the
    //!   tree with new_node. The tree does not need to be rebalanced
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   new_node is not equivalent to node_to_be_replaced according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -185,11 +185,11 @@
    {  tree_algorithms::replace_node(node_to_be_replaced, header, new_node);  }
 
    //! <b>Requires</b>: node is a tree node but not the header.
-   //! 
+   //!
    //! <b>Effects</b>: Unlinks the node and rebalances the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static void unlink(const node_ptr & node)
    {
@@ -202,14 +202,14 @@
    }
 
    //! <b>Requires</b>: header is the header of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Unlinks the leftmost node from the tree, and
    //!   updates the header link to the new leftmost node.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -219,51 +219,51 @@
 
    //! <b>Requires</b>: node is a node of the tree or an node initialized
    //!   by init(...).
-   //! 
+   //!
    //! <b>Effects</b>: Returns true if the node is initialized by init().
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool unique(const const_node_ptr & node)
    {  return tree_algorithms::unique(node);  }
 
    //! <b>Requires</b>: node is a node of the tree but it's not the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes of the subtree.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static std::size_t count(const const_node_ptr & node)
    {  return tree_algorithms::count(node);   }
 
    //! <b>Requires</b>: header is the header node of the tree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes above the header.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static std::size_t size(const const_node_ptr & header)
    {  return tree_algorithms::size(header);   }
 
    //! <b>Requires</b>: p is a node from the tree except the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the next node of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr next_node(const node_ptr & p)
    {  return tree_algorithms::next_node(p); }
 
    //! <b>Requires</b>: p is a node from the tree except the leftmost node.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the previous node of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr prev_node(const node_ptr & p)
    {  return tree_algorithms::prev_node(p); }
@@ -271,9 +271,9 @@
    //! <b>Requires</b>: node must not be part of any tree.
    //!
    //! <b>Effects</b>: After the function unique(node) == true.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
@@ -284,9 +284,9 @@
    //!
    //! <b>Effects</b>: Initializes the header to represent an empty tree.
    //!   unique(header) == true.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
@@ -297,9 +297,9 @@
    //!    of that tree and z != header.
    //!
    //! <b>Effects</b>: Erases node "z" from the tree with header "header".
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class AlphaByMaxSize>
    static node_ptr erase(const node_ptr & header, const node_ptr & z, std::size_t tree_size, std::size_t &max_tree_size, AlphaByMaxSize alpha_by_maxsize)
@@ -307,7 +307,7 @@
       //typename tree_algorithms::data_for_rebalance info;
       tree_algorithms::erase(header, z);
       --tree_size;
-      if (tree_size > 0 && 
+      if (tree_size > 0 &&
           tree_size < alpha_by_maxsize(max_tree_size)){
          tree_algorithms::rebalance(header);
          max_tree_size = tree_size;
@@ -319,18 +319,18 @@
    //!   object taking a node_ptr and returning a new cloned node of it. "disposer" must
    //!   take a node_ptr and shouldn't throw.
    //!
-   //! <b>Effects</b>: First empties target tree calling 
+   //! <b>Effects</b>: First empties target tree calling
    //!   <tt>void disposer::operator()(const node_ptr &)</tt> for every node of the tree
    //!    except the header.
-   //!    
+   //!   
    //!   Then, duplicates the entire tree pointed by "source_header" cloning each
-   //!   source node with <tt>node_ptr Cloner::operator()(const node_ptr &)</tt> to obtain 
+   //!   source node with <tt>node_ptr Cloner::operator()(const node_ptr &)</tt> to obtain
    //!   the nodes of the target tree. If "cloner" throws, the cloned target nodes
    //!   are disposed using <tt>void disposer(const node_ptr &)</tt>.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of element of the source tree plus the.
    //!   number of elements of tree target tree when calling this function.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner functor throws. If this happens target nodes are disposed.
    template <class Cloner, class Disposer>
    static void clone
@@ -342,13 +342,13 @@
    //! <b>Requires</b>: "disposer" must be an object function
    //!   taking a node_ptr parameter and shouldn't throw.
    //!
-   //! <b>Effects</b>: Empties the target tree calling 
+   //! <b>Effects</b>: Empties the target tree calling
    //!   <tt>void disposer::operator()(const node_ptr &)</tt> for every node of the tree
    //!    except the header.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of element of the source tree plus the.
    //!   number of elements of tree target tree when calling this function.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner functor throws. If this happens target nodes are disposed.
    template<class Disposer>
    static void clear_and_dispose(const node_ptr & header, Disposer disposer)
@@ -364,7 +364,7 @@
    //!   not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr lower_bound
@@ -380,7 +380,7 @@
    //!   than "key" according to "comp" or "header" if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr upper_bound
@@ -396,7 +396,7 @@
    //!   "key" according to "comp" or "header" if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr find
@@ -414,7 +414,7 @@
    //!   if they there are no equivalent elements.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static std::pair<node_ptr, node_ptr> equal_range
@@ -428,10 +428,10 @@
    //!
    //! <b>Effects</b>: Inserts new_node into the tree before the upper bound
    //!   according to "comp".
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class NodePtrCompare, class H_Alpha>
    static node_ptr insert_equal_upper_bound
@@ -451,10 +451,10 @@
    //!
    //! <b>Effects</b>: Inserts new_node into the tree before the lower bound
    //!   according to "comp".
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class NodePtrCompare, class H_Alpha>
    static node_ptr insert_equal_lower_bound
@@ -472,14 +472,14 @@
    //!   ordering compatible with the strict weak ordering used to create the
    //!   the tree. NodePtrCompare compares two node_ptrs. "hint" is node from
    //!   the "header"'s tree.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree, using "hint" as a hint to
    //!   where it will be inserted. If "hint" is the upper_bound
    //!   the insertion takes constant time (two comparisons in the worst case).
    //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time if new_node is inserted immediately before "hint".
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class NodePtrCompare, class H_Alpha>
    static node_ptr insert_equal
@@ -496,7 +496,7 @@
    //!   KeyNodePtrCompare is a function object that induces a strict weak
    //!   ordering compatible with the strict weak ordering used to create the
    //!   the tree. NodePtrCompare compares KeyType with a node_ptr.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if there is an equivalent node to "key" in the
    //!   tree according to "comp" and obtains the needed information to realize
    //!   a constant-time node insertion if there is no equivalent node.
@@ -507,11 +507,11 @@
    //!   in the returned pair's boolean and fills "commit_data" that is meant to
    //!   be used with the "insert_commit" function to achieve a constant-time
    //!   insertion function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If "comp" throws.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a node is expensive and the user does not want to have two equivalent nodes
    //!   in the tree: if there is an equivalent value
@@ -532,7 +532,7 @@
       ,KeyNodePtrCompare comp, insert_commit_data &commit_data)
    {
       std::size_t depth;
-      std::pair<node_ptr, bool> ret = 
+      std::pair<node_ptr, bool> ret =
          tree_algorithms::insert_unique_check(header, key, comp, commit_data, &depth);
       commit_data.depth = depth;
       return ret;
@@ -544,13 +544,13 @@
    //!   "pos" must be an iterator pointing to the successor to "new_node"
    //!   once inserted according to the order of already inserted nodes. This function does not
    //!   check "pos" and this precondition must be guaranteed by the caller.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree before "pos".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: If "pos" is not the successor of the newly inserted "new_node"
    //! tree invariants might be broken.
    template<class H_Alpha>
@@ -567,13 +567,13 @@
    //! <b>Requires</b>: "header" must be the header node of a tree.
    //!   "new_node" must be, according to the used ordering no less than the
    //!   greatest inserted key.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree before "pos".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: If "new_node" is less than the greatest inserted key
    //! tree invariants are broken. This function is slightly faster than
    //! using "insert_before".
@@ -589,13 +589,13 @@
    //! <b>Requires</b>: "header" must be the header node of a tree.
    //!   "new_node" must be, according to the used ordering, no greater than the
    //!   lowest inserted key.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree before "pos".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: If "new_node" is greater than the lowest inserted key
    //! tree invariants are broken. This function is slightly faster than
    //! using "insert_before".
@@ -613,12 +613,12 @@
    //!   ordering compatible with the strict weak ordering used to create the
    //!   the tree. NodePtrCompare compares KeyType with a node_ptr.
    //!   "hint" is node from the "header"'s tree.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if there is an equivalent node to "key" in the
    //!   tree according to "comp" using "hint" as a hint to where it should be
    //!   inserted and obtains the needed information to realize
-   //!   a constant-time node insertion if there is no equivalent node. 
-   //!   If "hint" is the upper_bound the function has constant time 
+   //!   a constant-time node insertion if there is no equivalent node.
+   //!   If "hint" is the upper_bound the function has constant time
    //!   complexity (two comparisons in the worst case).
    //!
    //! <b>Returns</b>: If there is an equivalent value
@@ -627,12 +627,12 @@
    //!   in the returned pair's boolean and fills "commit_data" that is meant to
    //!   be used with the "insert_commit" function to achieve a constant-time
    //!   insertion function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic, but it is
    //!   amortized constant time if new_node should be inserted immediately before "hint".
    //!
    //! <b>Throws</b>: If "comp" throws.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a node is expensive and the user does not want to have two equivalent nodes
    //!   in the tree: if there is an equivalent value
@@ -653,7 +653,7 @@
       ,KeyNodePtrCompare comp, insert_commit_data &commit_data)
    {
       std::size_t depth;
-      std::pair<node_ptr, bool> ret = 
+      std::pair<node_ptr, bool> ret =
          tree_algorithms::insert_unique_check
             (header, hint, key, comp, commit_data, &depth);
       commit_data.depth = depth;
@@ -664,16 +664,16 @@
    //!   "commit_data" must have been obtained from a previous call to
    //!   "insert_unique_check". No objects should have been inserted or erased
    //!   from the set between the "insert_unique_check" that filled "commit_data"
-   //!   and the call to "insert_commit". 
-   //! 
-   //! 
+   //!   and the call to "insert_commit".
+   //!
+   //!
    //! <b>Effects</b>: Inserts new_node in the set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_unique_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
@@ -687,23 +687,23 @@
    }
 
    //! <b>Requires</b>: header must be the header of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Rebalances the tree.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear.
    static void rebalance(const node_ptr & header)
    {  tree_algorithms::rebalance(header); }
 
    //! <b>Requires</b>: old_root is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
    //!
    //! <b>Returns</b>: The new root of the subtree.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear.
    static node_ptr rebalance_subtree(const node_ptr & old_root)
    {  return tree_algorithms::rebalance_subtree(old_root); }
@@ -713,7 +713,7 @@
    //! <b>Effects</b>: Returns a pointer to the header node of the tree.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr get_header(const node_ptr & n)
    {  return tree_algorithms::get_header(n);   }
@@ -722,11 +722,11 @@
    private:
 
    //! <b>Requires</b>: p is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns true if p is the header of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool is_header(const const_node_ptr & p)
    {  return tree_algorithms::is_header(p);  }
@@ -774,8 +774,8 @@
    /// @endcond
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/slist.hpp
==============================================================================
--- trunk/boost/intrusive/slist.hpp	(original)
+++ trunk/boost/intrusive/slist.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -75,12 +75,12 @@
 
 /// @endcond
 
-//! The class template slist is an intrusive container, that encapsulates 
-//! a singly-linked list. You can use such a list to squeeze the last bit 
-//! of performance from your application. Unfortunately, the little gains 
-//! come with some huge drawbacks. A lot of member functions can't be 
-//! implemented as efficiently as for standard containers. To overcome 
-//! this limitation some other member functions with rather unusual semantics 
+//! The class template slist is an intrusive container, that encapsulates
+//! a singly-linked list. You can use such a list to squeeze the last bit
+//! of performance from your application. Unfortunately, the little gains
+//! come with some huge drawbacks. A lot of member functions can't be
+//! implemented as efficiently as for standard containers. To overcome
+//! this limitation some other member functions with rather unusual semantics
 //! have to be introduced.
 //!
 //! The template parameter \c T is the type to be managed by the container.
@@ -91,11 +91,11 @@
 //! \c base_hook<>/member_hook<>/value_traits<>,
 //! \c constant_time_size<>, \c size_type<>,
 //! \c linear<> and \c cache_last<>.
-//! 
-//! The iterators of slist are forward iterators. slist provides a static 
-//! function called "previous" to compute the previous iterator of a given iterator. 
-//! This function has linear complexity. To improve the usability esp. with 
-//! the '*_after' functions, ++end() == begin() and previous(begin()) == end() 
+//!
+//! The iterators of slist are forward iterators. slist provides a static
+//! function called "previous" to compute the previous iterator of a given iterator.
+//! This function has linear complexity. To improve the usability esp. with
+//! the '*_after' functions, ++end() == begin() and previous(begin()) == end()
 //! are defined. An new special function "before_begin()" is defined, which returns
 //! an iterator that points one less the beginning of the list: ++before_begin() == begin()
 #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
@@ -151,7 +151,7 @@
    //noncopyable
    BOOST_MOVABLE_BUT_NOT_COPYABLE(slist_impl)
 
-   enum { safemode_or_autounlink  = 
+   enum { safemode_or_autounlink  =
             (int)real_value_traits::link_mode == (int)auto_unlink   ||
             (int)real_value_traits::link_mode == (int)safe_link     };
 
@@ -273,10 +273,10 @@
    {  return this->get_real_value_traits(detail::bool_<external_value_traits>());  }
 
    public:
-   //! <b>Effects</b>: constructs an empty list. 
-   //! 
-   //! <b>Complexity</b>: Constant 
-   //! 
+   //! <b>Effects</b>: constructs an empty list.
+   //!
+   //! <b>Complexity</b>: Constant
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks).
    slist_impl(const value_traits &v_traits = value_traits())
@@ -284,11 +284,11 @@
    {  this->set_default_constructed_state(); }
 
    //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Constructs a list equal to [first,last).
-   //! 
-   //! <b>Complexity</b>: Linear in std::distance(b, e). No copy constructors are called.  
-   //! 
+   //!
+   //! <b>Complexity</b>: Linear in std::distance(b, e). No copy constructors are called. 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks).
    template<class Iterator>
@@ -300,44 +300,44 @@
    }
 
    //! <b>Effects</b>: to-do
-   //!   
+   //!  
    slist_impl(BOOST_RV_REF(slist_impl) x)
       : data_(::boost::move(x.priv_value_traits()))
    {
       this->priv_size_traits().set_size(size_type(0));
-      node_algorithms::init_header(this->get_root_node());  
+      node_algorithms::init_header(this->get_root_node()); 
       this->swap(x);
    }
 
    //! <b>Effects</b>: to-do
-   //!   
-   slist_impl& operator=(BOOST_RV_REF(slist_impl) x) 
+   //!  
+   slist_impl& operator=(BOOST_RV_REF(slist_impl) x)
    {  this->swap(x); return *this;  }
 
    //! <b>Effects</b>: If it's a safe-mode
    //!   or auto-unlink value, the destructor does nothing
-   //!   (ie. no code is generated). Otherwise it detaches all elements from this. 
-   //!   In this case the objects in the list are not deleted (i.e. no destructors 
+   //!   (ie. no code is generated). Otherwise it detaches all elements from this.
+   //!   In this case the objects in the list are not deleted (i.e. no destructors
    //!   are called), but the hooks according to the value_traits template parameter
    //!   are set to their default value.
-   //! 
-   //! <b>Complexity</b>: Linear to the number of elements in the list, if 
+   //!
+   //! <b>Complexity</b>: Linear to the number of elements in the list, if
    //!   it's a safe-mode or auto-unlink value. Otherwise constant.
    ~slist_impl()
    {}
 
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements of the list.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references) to the erased elements.
    void clear()
    {
       if(safemode_or_autounlink){
-         this->clear_and_dispose(detail::null_disposer()); 
+         this->clear_and_dispose(detail::null_disposer());
       }
       else{
          this->set_default_constructed_state();
@@ -348,11 +348,11 @@
    //!
    //! <b>Effects</b>: Erases all the elements of the container
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements of the list.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators to the erased elements.
    template <class Disposer>
    void clear_and_dispose(Disposer disposer)
@@ -369,16 +369,16 @@
    }
 
    //! <b>Requires</b>: value must be an lvalue.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the front of the list.
    //!   No copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
-   void push_front(reference value) 
+   void push_front(reference value)
    {
       node_ptr to_insert = get_real_value_traits().to_node_ptr(value);
       if(safemode_or_autounlink)
@@ -388,22 +388,22 @@
             this->set_last_node(to_insert);
          }
       }
-      node_algorithms::link_after(this->get_root_node(), to_insert); 
+      node_algorithms::link_after(this->get_root_node(), to_insert);
       this->priv_size_traits().increment();
    }
 
    //! <b>Requires</b>: value must be an lvalue.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the back of the list.
    //!   No copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   This function is only available is cache_last<> is true.
-   void push_back(reference value) 
+   void push_back(reference value)
    {
       BOOST_STATIC_ASSERT((cache_last));
       this->insert_after(const_iterator(this->get_last_node(), this), value);
@@ -411,24 +411,24 @@
 
    //! <b>Effects</b>: Erases the first element of the list.
    //!   No destructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references) to the erased element.
-   void pop_front() 
+   void pop_front()
    {  return this->pop_front_and_dispose(detail::null_disposer());   }
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
    //! <b>Effects</b>: Erases the first element of the list.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators to the erased element.
    template<class Disposer>
    void pop_front_and_dispose(Disposer disposer)
@@ -447,23 +447,23 @@
    }
 
    //! <b>Effects</b>: Returns a reference to the first element of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    reference front()
    { return *this->get_real_value_traits().to_value_ptr(node_traits::get_next(this->get_root_node())); }
 
    //! <b>Effects</b>: Returns a const_reference to the first element of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    const_reference front() const
    { return *this->get_real_value_traits().to_value_ptr(uncast(node_traits::get_next(this->get_root_node()))); }
 
    //! <b>Effects</b>: Returns a reference to the last element of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Complexity</b>: Constant.
@@ -477,9 +477,9 @@
    }
 
    //! <b>Effects</b>: Returns a const_reference to the last element of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
@@ -491,165 +491,165 @@
    }
 
    //! <b>Effects</b>: Returns an iterator to the first element contained in the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   iterator begin() 
+   iterator begin()
    { return iterator (node_traits::get_next(this->get_root_node()), this); }
 
    //! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_iterator begin() const 
+   const_iterator begin() const
    { return const_iterator (node_traits::get_next(this->get_root_node()), this); }
 
    //! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_iterator cbegin() const 
+   const_iterator cbegin() const
    { return const_iterator(node_traits::get_next(this->get_root_node()), this); }
 
    //! <b>Effects</b>: Returns an iterator to the end of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   iterator end() 
+   iterator end()
    { return iterator(this->get_end_node(), this); }
 
    //! <b>Effects</b>: Returns a const_iterator to the end of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_iterator end() const 
+   const_iterator end() const
    { return const_iterator(uncast(this->get_end_node()), this); }
 
    //! <b>Effects</b>: Returns a const_iterator to the end of the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_iterator cend() const 
+   const_iterator cend() const
    { return this->end(); }
 
    //! <b>Effects</b>: Returns an iterator that points to a position
    //!   before the first element. Equivalent to "end()"
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   iterator before_begin() 
+   iterator before_begin()
    { return iterator(this->get_root_node(), this); }
 
    //! <b>Effects</b>: Returns an iterator that points to a position
    //!   before the first element. Equivalent to "end()"
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_iterator before_begin() const 
+   const_iterator before_begin() const
    { return const_iterator(uncast(this->get_root_node()), this); }
 
    //! <b>Effects</b>: Returns an iterator that points to a position
    //!   before the first element. Equivalent to "end()"
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   const_iterator cbefore_begin() const 
+   const_iterator cbefore_begin() const
    { return this->before_begin(); }
 
    //! <b>Effects</b>: Returns an iterator to the last element contained in the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: This function is present only if cached_last<> option is true.
-   iterator last() 
+   iterator last()
    { return iterator (this->get_last_node(), this); }
 
    //! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: This function is present only if cached_last<> option is true.
-   const_iterator last() const 
+   const_iterator last() const
    { return const_iterator (this->get_last_node(), this); }
 
    //! <b>Effects</b>: Returns a const_iterator to the first element contained in the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: This function is present only if cached_last<> option is true.
-   const_iterator clast() const 
+   const_iterator clast() const
    { return const_iterator(this->get_last_node(), this); }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of slist.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the slist associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static slist_impl &container_from_end_iterator(iterator end_iterator)
    {  return slist_impl::priv_container_from_end_iterator(end_iterator);   }
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of slist.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the slist associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const slist_impl &container_from_end_iterator(const_iterator end_iterator)
    {  return slist_impl::priv_container_from_end_iterator(end_iterator);   }
 
    //! <b>Effects</b>: Returns the number of the elements contained in the list.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements contained in the list.
    //!   if constant_time_size is false. Constant time otherwise.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    size_type size() const
    {
       if(constant_time_size)
          return this->priv_size_traits().get_size();
       else
-         return node_algorithms::count(this->get_root_node()) - 1; 
+         return node_algorithms::count(this->get_root_node()) - 1;
    }
 
    //! <b>Effects</b>: Returns true if the list contains no elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    bool empty() const
    { return node_algorithms::unique(this->get_root_node()); }
 
    //! <b>Effects</b>: Swaps the elements of x and *this.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Complexity</b>: Linear to the number of elements of both lists. 
+   //!
+   //! <b>Complexity</b>: Linear to the number of elements of both lists.
    //!  Constant-time if linear<> and/or cache_last<> options are used.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    void swap(slist_impl& other)
    {
@@ -669,11 +669,11 @@
    //! <b>Effects</b>: Moves backwards all the elements, so that the first
    //!   element becomes the second, the second becomes the third...
    //!   the last element becomes the first one.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements plus the number shifts.
-   //! 
+   //!
    //! <b>Note</b>: Iterators Does not affect the validity of iterators and references.
    void shift_backwards(size_type n = 1)
    {  this->priv_shift_backwards(n, detail::bool_<linear>());  }
@@ -681,11 +681,11 @@
    //! <b>Effects</b>: Moves forward all the elements, so that the second
    //!   element becomes the first, the third becomes the second...
    //!   the first element becomes the last one.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements plus the number shifts.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    void shift_forward(size_type n = 1)
    {  this->priv_shift_forward(n, detail::bool_<linear>()); }
@@ -694,15 +694,15 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws.
    template <class Cloner, class Disposer>
    void clone_from(const slist_impl &src, Cloner cloner, Disposer disposer)
@@ -725,11 +725,11 @@
    //!    No copy constructor is called.
    //!
    //! <b>Returns</b>: An iterator to the inserted element.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    iterator insert_after(const_iterator prev_p, reference value)
    {
@@ -745,17 +745,17 @@
       return iterator (n, this);
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield 
+   //! <b>Requires</b>: Dereferencing iterator must yield
    //!   an lvalue of type value_type and prev_p must point to an element
    //!   contained by the list or to the end node.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the [first, last)
    //!   after the position prev_p.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements inserted.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    template<class Iterator>
    void insert_after(const_iterator prev_p, Iterator first, Iterator last)
@@ -769,44 +769,44 @@
    //!
    //! <b>Effects</b>: Inserts the value before the position pointed by p.
    //!   No copy constructor is called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements before p.
    //!  Constant-time if cache_last<> is true and p == end().
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    iterator insert(const_iterator p, reference value)
    {  return this->insert_after(this->previous(p), value);  }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield 
-   //!   an lvalue of type value_type and p must point to an element 
+   //! <b>Requires</b>: Dereferencing iterator must yield
+   //!   an lvalue of type value_type and p must point to an element
    //!   contained by the list or to the end node.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the pointed by b and e
    //!   before the position p. No copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements inserted plus linear
    //!   to the elements before b.
    //!   Linear to the number of elements to insert if cache_last<> option is true and p == end().
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    template<class Iterator>
    void insert(const_iterator p, Iterator b, Iterator e)
    {  return this->insert_after(this->previous(p), b, e);  }
 
-   //! <b>Effects</b>: Erases the element after the element pointed by prev of 
+   //! <b>Effects</b>: Erases the element after the element pointed by prev of
    //!   the list. No destructors are called.
    //!
    //! <b>Returns</b>: the first element remaining beyond the removed elements,
    //!   or end() if no such element exists.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references) to the
    //!   erased element.
    iterator erase_after(const_iterator prev)
@@ -817,12 +817,12 @@
    //!
    //! <b>Returns</b>: the first element remaining beyond the removed elements,
    //!   or end() if no such element exists.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of erased elements if it's a safe-mode
    //!   , auto-unlink value or constant-time size is activated. Constant time otherwise.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references) to the
    //!   erased element.
    iterator erase_after(const_iterator before_first, const_iterator last)
@@ -849,12 +849,12 @@
    //!
    //! <b>Returns</b>: the first element remaining beyond the removed elements,
    //!   or end() if no such element exists.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Complexity</b>: constant-time if link_mode is normal_link. 
+   //!
+   //! <b>Complexity</b>: constant-time if link_mode is normal_link.
    //!   Linear to the elements (last - before_first) otherwise.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references) to the
    //!   erased element.
    iterator erase_after(const_iterator before_first, const_iterator last, difference_type n)
@@ -879,33 +879,33 @@
       }
    }
 
-   //! <b>Effects</b>: Erases the element pointed by i of the list. 
+   //! <b>Effects</b>: Erases the element pointed by i of the list.
    //!   No destructors are called.
    //!
    //! <b>Returns</b>: the first element remaining beyond the removed element,
    //!   or end() if no such element exists.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements before i.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references) to the
    //!   erased element.
    iterator erase(const_iterator i)
    {  return this->erase_after(this->previous(i));  }
 
    //! <b>Requires</b>: first and last must be valid iterator to elements in *this.
-   //! 
+   //!
    //! <b>Effects</b>: Erases the range pointed by b and e.
    //!   No destructors are called.
    //!
    //! <b>Returns</b>: the first element remaining beyond the removed elements,
    //!   or end() if no such element exists.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements before last.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references) to the
    //!   erased elements.
    iterator erase(const_iterator first, const_iterator last)
@@ -917,12 +917,12 @@
    //!
    //! <b>Returns</b>: the first element remaining beyond the removed elements,
    //!   or end() if no such element exists.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: linear to the elements before first if link_mode is normal_link
    //!   and constant_time_size is activated. Linear to the elements before last otherwise.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references) to the
    //!   erased element.
    iterator erase(const_iterator first, const_iterator last, difference_type n)
@@ -930,17 +930,17 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element after the element pointed by prev of 
+   //! <b>Effects</b>: Erases the element after the element pointed by prev of
    //!   the list.
    //!   Disposer::operator()(pointer) is called for the removed element.
    //!
    //! <b>Returns</b>: the first element remaining beyond the removed elements,
    //!   or end() if no such element exists.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators to the erased element.
    template<class Disposer>
    iterator erase_after_and_dispose(const_iterator prev, Disposer disposer)
@@ -992,11 +992,11 @@
    //!
    //! <b>Returns</b>: the first element remaining beyond the removed elements,
    //!   or end() if no such element exists.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Lineal to the elements (last - before_first + 1).
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators to the erased element.
    template<class Disposer>
    iterator erase_after_and_dispose(const_iterator before_first, const_iterator last, Disposer disposer)
@@ -1020,17 +1020,17 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element pointed by i of the list. 
+   //! <b>Effects</b>: Erases the element pointed by i of the list.
    //!   No destructors are called.
    //!   Disposer::operator()(pointer) is called for the removed element.
    //!
    //! <b>Returns</b>: the first element remaining beyond the removed element,
    //!   or end() if no such element exists.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements before i.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references) to the
    //!   erased element.
    template<class Disposer>
@@ -1045,38 +1045,38 @@
 
    //! <b>Requires</b>: first and last must be valid iterator to elements in *this.
    //!                  Disposer::operator()(pointer) shouldn't throw.
-   //! 
+   //!
    //! <b>Effects</b>: Erases the range pointed by b and e.
    //!   No destructors are called.
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: the first element remaining beyond the removed elements,
    //!   or end() if no such element exists.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of erased elements plus linear
    //!   to the elements before first.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references) to the
    //!   erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator first, const_iterator last, Disposer disposer)
    {  return this->erase_after_and_dispose(this->previous(first), last, disposer);  }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield 
+   //! <b>Requires</b>: Dereferencing iterator must yield
    //!   an lvalue of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Clears the list and inserts the range pointed by b and e.
    //!   No destructors or copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements inserted plus
    //!   linear to the elements contained in the list if it's a safe-mode
    //!   or auto-unlink value.
    //!   Linear to the number of elements inserted in the list otherwise.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!   to the erased elements.
    template<class Iterator>
@@ -1088,18 +1088,18 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Requires</b>: Dereferencing iterator must yield 
+   //! <b>Requires</b>: Dereferencing iterator must yield
    //!   an lvalue of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Clears the list and inserts the range pointed by b and e.
    //!   No destructors or copy constructors are called.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements inserted plus
    //!   linear to the elements contained in the list.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!   to the erased elements.
    template<class Iterator, class Disposer>
@@ -1111,18 +1111,18 @@
 
    //! <b>Requires</b>: prev must point to an element contained by this list or
    //!   to the before_begin() element
-   //! 
+   //!
    //! <b>Effects</b>: Transfers all the elements of list x to this list, after the
    //! the element pointed by prev. No destructors or copy constructors are called.
-   //! 
+   //!
    //! <b>Returns</b>: Nothing.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Complexity</b>: In general, linear to the elements contained in x.
-   //!   Constant-time if cache_last<> option is true and also constant-time if 
+   //!   Constant-time if cache_last<> option is true and also constant-time if
    //!   linear<> option is true "this" is empty and "last" is not used.
-   //! 
+   //!
    //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
    //! list. Iterators of this list and all the references are not invalidated.
    //!
@@ -1159,14 +1159,14 @@
    //! <b>Requires</b>: prev must point to an element contained by this list or
    //!   to the before_begin() element. prev_ele must point to an element contained in list
    //!   x or must be x.before_begin().
-   //! 
-   //! <b>Effects</b>: Transfers the element after prev_ele, from list x to this list, 
+   //!
+   //! <b>Effects</b>: Transfers the element after prev_ele, from list x to this list,
    //!   after the element pointed by prev. No destructors or copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
    //! list. Iterators of this list and all the references are not invalidated.
    void splice_after(const_iterator prev_pos, slist_impl &x, const_iterator prev_ele)
@@ -1177,17 +1177,17 @@
 
    //! <b>Requires</b>: prev_pos must be a dereferenceable iterator in *this or be
    //!   before_begin(), and before_first and before_last belong to x and
-   //!   ++before_first != x.end() && before_last != x.end(). 
-   //! 
+   //!   ++before_first != x.end() && before_last != x.end().
+   //!
    //! <b>Effects</b>: Transfers the range (before_first, before_last] from list x to this
    //!   list, after the element pointed by prev_pos.
    //!   No destructors or copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements transferred
    //!   if constant_time_size is true. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
    //!   list. Iterators of this list and all the references are not invalidated.
    void splice_after(const_iterator prev_pos, slist_impl &x, const_iterator before_first, const_iterator before_last)
@@ -1203,14 +1203,14 @@
    //!   before_begin(), and before_first and before_last belong to x and
    //!   ++before_first != x.end() && before_last != x.end() and
    //!   n == std::distance(before_first, before_last).
-   //! 
+   //!
    //! <b>Effects</b>: Transfers the range (before_first, before_last] from list x to this
    //!   list, after the element pointed by p. No destructors or copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
    //!   list. Iterators of this list and all the references are not invalidated.
    void splice_after(const_iterator prev_pos, slist_impl &x, const_iterator before_first, const_iterator before_last, difference_type n)
@@ -1227,19 +1227,19 @@
    }
 
    //! <b>Requires</b>: it is an iterator to an element in *this.
-   //! 
+   //!
    //! <b>Effects</b>: Transfers all the elements of list x to this list, before the
    //! the element pointed by it. No destructors or copy constructors are called.
-   //! 
+   //!
    //! <b>Returns</b>: Nothing.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Complexity</b>: Linear to the elements contained in x plus linear to
    //!   the elements before it.
    //!   Linear to the elements before it if cache_last<> option is true.
    //!   Constant-time if cache_last<> option is true and it == end().
-   //! 
+   //!
    //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
    //! list. Iterators of this list and all the references are not invalidated.
    //!
@@ -1253,66 +1253,66 @@
    //! <b>Requires</b>: it p must be a valid iterator of *this.
    //!   elem must point to an element contained in list
    //!   x.
-   //! 
-   //! <b>Effects</b>: Transfers the element elem, from list x to this list, 
+   //!
+   //! <b>Effects</b>: Transfers the element elem, from list x to this list,
    //!   before the element pointed by pos. No destructors or copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements before pos and before elem.
    //!   Linear to the elements before elem if cache_last<> option is true and pos == end().
-   //! 
+   //!
    //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
    //! list. Iterators of this list and all the references are not invalidated.
    void splice(const_iterator pos, slist_impl &x, const_iterator elem)
    {  return this->splice_after(this->previous(pos), x, x.previous(elem));  }
 
    //! <b>Requires</b>: pos must be a dereferenceable iterator in *this
-   //!   and first and last belong to x and first and last a valid range on x. 
-   //! 
+   //!   and first and last belong to x and first and last a valid range on x.
+   //!
    //! <b>Effects</b>: Transfers the range [first, last) from list x to this
    //!   list, before the element pointed by pos.
    //!   No destructors or copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the sum of elements before pos, first, and last
    //!   plus linear to the number of elements transferred if constant_time_size is true.
    //!   Linear to the sum of elements before first, and last
    //!   plus linear to the number of elements transferred if constant_time_size is true
    //!   if cache_last<> is true and pos == end()
-   //! 
+   //!
    //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
    //!   list. Iterators of this list and all the references are not invalidated.
    void splice(const_iterator pos, slist_impl &x, const_iterator first, const_iterator last)
    {  return this->splice_after(this->previous(pos), x, x.previous(first), x.previous(last));  }
 
    //! <b>Requires</b>: pos must be a dereferenceable iterator in *this
-   //!   and first and last belong to x and first and last a valid range on x. 
+   //!   and first and last belong to x and first and last a valid range on x.
    //!   n == std::distance(first, last).
-   //! 
+   //!
    //! <b>Effects</b>: Transfers the range [first, last) from list x to this
    //!   list, before the element pointed by pos.
    //!   No destructors or copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the sum of elements before pos, first, and last.
    //!   Linear to the sum of elements before first and last
    //!   if cache_last<> is true and pos == end().
-   //! 
+   //!
    //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
    //!   list. Iterators of this list and all the references are not invalidated.
    void splice(const_iterator pos, slist_impl &x, const_iterator first, const_iterator last, difference_type n)
    {  return this->splice_after(this->previous(pos), x, x.previous(first), x.previous(last), n);  }
 
-   //! <b>Effects</b>: This function sorts the list *this according to std::less<value_type>. 
+   //! <b>Effects</b>: This function sorts the list *this according to std::less<value_type>.
    //!   The sort is stable, that is, the relative order of equivalent elements is preserved.
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
    //!   or the predicate throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: The number of comparisons is approximately N log N, where N
    //!   is the list's size.
    //!
@@ -1368,44 +1368,44 @@
 
    //! <b>Requires</b>: p must be a comparison function that induces a strict weak
    //!   ordering and both *this and x must be sorted according to that ordering
-   //!   The lists x and *this must be distinct. 
-   //! 
+   //!   The lists x and *this must be distinct.
+   //!
    //! <b>Effects</b>: This function removes all of x's elements and inserts them
-   //!   in order into *this. The merge is stable; that is, if an element from *this is 
-   //!   equivalent to one from x, then the element from *this will precede the one from x. 
-   //! 
+   //!   in order into *this. The merge is stable; that is, if an element from *this is
+   //!   equivalent to one from x, then the element from *this will precede the one from x.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
    //!   or std::less<value_type> throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: This function is linear time: it performs at most
    //!   size() + x.size() - 1 comparisons.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated.
    void sort()
    { this->sort(std::less<value_type>()); }
 
    //! <b>Requires</b>: p must be a comparison function that induces a strict weak
    //!   ordering and both *this and x must be sorted according to that ordering
-   //!   The lists x and *this must be distinct. 
-   //! 
+   //!   The lists x and *this must be distinct.
+   //!
    //! <b>Effects</b>: This function removes all of x's elements and inserts them
-   //!   in order into *this. The merge is stable; that is, if an element from *this is 
-   //!   equivalent to one from x, then the element from *this will precede the one from x. 
-   //! 
+   //!   in order into *this. The merge is stable; that is, if an element from *this is
+   //!   equivalent to one from x, then the element from *this will precede the one from x.
+   //!
    //! <b>Returns</b>: Nothing.
-   //! 
+   //!
    //! <b>Throws</b>: If the predicate throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: This function is linear time: it performs at most
    //!   size() + x.size() - 1 comparisons.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated.
-   //! 
+   //!
    //! <b>Additional note</b>: If optional "last" argument is passed, it is assigned
    //! to an iterator to the last transferred value or end() is x is empty.
    template<class Predicate>
-   void merge(slist_impl& x, Predicate p, const_iterator *last = 0) 
+   void merge(slist_impl& x, Predicate p, const_iterator *last = 0)
    {
       const_iterator e(this->cend()), ex(x.cend()), bb(this->cbefore_begin()),
                      bb_next;
@@ -1432,25 +1432,25 @@
    }
 
    //! <b>Effects</b>: This function removes all of x's elements and inserts them
-   //!   in order into *this according to std::less<value_type>. The merge is stable; 
-   //!   that is, if an element from *this is equivalent to one from x, then the element 
-   //!   from *this will precede the one from x. 
-   //! 
+   //!   in order into *this according to std::less<value_type>. The merge is stable;
+   //!   that is, if an element from *this is equivalent to one from x, then the element
+   //!   from *this will precede the one from x.
+   //!
    //! <b>Throws</b>: if std::less<value_type> throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: This function is linear time: it performs at most
    //!   size() + x.size() - 1 comparisons.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated
    void merge(slist_impl& x)
    {  this->merge(x, std::less<value_type>());  }
 
-   //! <b>Effects</b>: Reverses the order of elements in the list. 
-   //! 
+   //! <b>Effects</b>: Reverses the order of elements in the list.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: This function is linear to the contained elements.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated
    void reverse()
    {
@@ -1462,13 +1462,13 @@
 
    //! <b>Effects</b>: Removes all the elements that compare equal to value.
    //!   No destructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: If std::equal_to<value_type> throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time. It performs exactly size() comparisons for equality.
-   //! 
+   //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
-   //!   and iterators to elements that are not removed remain valid. This function is 
+   //!   and iterators to elements that are not removed remain valid. This function is
    //!   linear time: it performs exactly size() comparisons for equality.
    void remove(const_reference value)
    {  this->remove_if(detail::equal_to_value<const_reference>(value));  }
@@ -1479,9 +1479,9 @@
    //!   Disposer::operator()(pointer) is called for every removed element.
    //!
    //! <b>Throws</b>: If std::equal_to<value_type> throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time. It performs exactly size() comparisons for equality.
-   //! 
+   //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
    //!   and iterators to elements that are not removed remain valid.
    template<class Disposer>
@@ -1490,11 +1490,11 @@
 
    //! <b>Effects</b>: Removes all the elements for which a specified
    //!   predicate is satisfied. No destructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: If pred throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time. It performs exactly size() calls to the predicate.
-   //! 
+   //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
    //!   and iterators to elements that are not removed remain valid.
    template<class Pred>
@@ -1508,7 +1508,7 @@
    //!   Disposer::operator()(pointer) is called for every removed element.
    //!
    //! <b>Throws</b>: If pred throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time. It performs exactly size() comparisons for equality.
    //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
@@ -1517,7 +1517,7 @@
    void remove_and_dispose_if(Pred pred, Disposer disposer)
    {
       const_iterator bcur(this->before_begin()), cur(this->begin()), e(this->end());
-      
+     
       while(cur != e){
          if (pred(*cur)){
             cur = this->erase_after_and_dispose(bcur, disposer);
@@ -1532,26 +1532,26 @@
       }
    }
 
-   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent 
+   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
    //!   elements that are equal from the list. No destructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: If std::equal_to<value_type> throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time (size()-1) comparisons calls to pred()).
-   //! 
+   //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
    //!   and iterators to elements that are not removed remain valid.
    void unique()
    {  this->unique_and_dispose(std::equal_to<value_type>(), detail::null_disposer());  }
 
-   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent 
+   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
    //!   elements that satisfy some binary predicate from the list.
    //!   No destructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: If the predicate throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time (size()-1) comparisons equality comparisons.
-   //! 
+   //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
    //!   and iterators to elements that are not removed remain valid.
    template<class BinaryPredicate>
@@ -1560,14 +1560,14 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent 
+   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
    //!   elements that satisfy some binary predicate from the list.
    //!   Disposer::operator()(pointer) is called for every removed element.
-   //! 
+   //!
    //! <b>Throws</b>: If std::equal_to<value_type> throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time (size()-1) comparisons equality comparisons.
-   //! 
+   //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
    //!   and iterators to elements that are not removed remain valid.
    template<class Disposer>
@@ -1576,14 +1576,14 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent 
+   //! <b>Effects</b>: Removes adjacent duplicate elements or adjacent
    //!   elements that satisfy some binary predicate from the list.
    //!   Disposer::operator()(pointer) is called for every removed element.
-   //! 
+   //!
    //! <b>Throws</b>: If the predicate throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time (size()-1) comparisons equality comparisons.
-   //! 
+   //!
    //! <b>Note</b>: The relative order of elements that are not removed is unchanged,
    //!   and iterators to elements that are not removed remain valid.
    template<class BinaryPredicate, class Disposer>
@@ -1610,17 +1610,17 @@
    }
 
    //! <b>Requires</b>: value must be a reference to a value inserted in a list.
-   //! 
+   //!
    //! <b>Effects</b>: This function returns a const_iterator pointing to the element
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated.
    //!   This static function is available only if the <i>value traits</i>
    //!   is stateless.
-   static iterator s_iterator_to(reference value) 
+   static iterator s_iterator_to(reference value)
    {
       BOOST_STATIC_ASSERT((!stateful_value_traits));
       //BOOST_INTRUSIVE_INVARIANT_ASSERT (!node_algorithms::inited(value_traits::to_node_ptr(value)));
@@ -1628,17 +1628,17 @@
    }
 
    //! <b>Requires</b>: value must be a const reference to a value inserted in a list.
-   //! 
+   //!
    //! <b>Effects</b>: This function returns an iterator pointing to the element.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated.
    //!   This static function is available only if the <i>value traits</i>
    //!   is stateless.
-   static const_iterator s_iterator_to(const_reference value) 
+   static const_iterator s_iterator_to(const_reference value)
    {
       BOOST_STATIC_ASSERT((!stateful_value_traits));
       //BOOST_INTRUSIVE_INVARIANT_ASSERT (!node_algorithms::inited(value_traits::to_node_ptr(const_cast<reference> (value))));
@@ -1646,28 +1646,28 @@
    }
 
    //! <b>Requires</b>: value must be a reference to a value inserted in a list.
-   //! 
+   //!
    //! <b>Effects</b>: This function returns a const_iterator pointing to the element
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated.
-   iterator iterator_to(reference value) 
+   iterator iterator_to(reference value)
    {
       //BOOST_INTRUSIVE_INVARIANT_ASSERT (!node_algorithms::inited(value_traits::to_node_ptr(value)));
       return iterator (value_traits::to_node_ptr(value), this);
    }
 
    //! <b>Requires</b>: value must be a const reference to a value inserted in a list.
-   //! 
+   //!
    //! <b>Effects</b>: This function returns an iterator pointing to the element.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: Iterators and references are not invalidated.
    const_iterator iterator_to(const_reference value) const
    {
@@ -1675,35 +1675,35 @@
       return const_iterator (value_traits::to_node_ptr(const_cast<reference> (value)), this);
    }
 
-   //! <b>Returns</b>: The iterator to the element before i in the list. 
-   //!   Returns the end-iterator, if either i is the begin-iterator or the 
-   //!   list is empty. 
-   //! 
+   //! <b>Returns</b>: The iterator to the element before i in the list.
+   //!   Returns the end-iterator, if either i is the begin-iterator or the
+   //!   list is empty.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements before i.
    //!   Constant if cache_last<> is true and i == end().
    iterator previous(iterator i)
    {  return this->previous(this->cbefore_begin(), i); }
 
-   //! <b>Returns</b>: The const_iterator to the element before i in the list. 
-   //!   Returns the end-const_iterator, if either i is the begin-const_iterator or 
-   //!   the list is empty. 
-   //! 
+   //! <b>Returns</b>: The const_iterator to the element before i in the list.
+   //!   Returns the end-const_iterator, if either i is the begin-const_iterator or
+   //!   the list is empty.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Complexity</b>: Linear to the number of elements before i. 
+   //!
+   //! <b>Complexity</b>: Linear to the number of elements before i.
    //!   Constant if cache_last<> is true and i == end().
    const_iterator previous(const_iterator i) const
    {  return this->previous(this->cbefore_begin(), i); }
 
    //! <b>Returns</b>: The iterator to the element before i in the list,
    //!   starting the search on element after prev_from.
-   //!   Returns the end-iterator, if either i is the begin-iterator or the 
-   //!   list is empty. 
-   //! 
+   //!   Returns the end-iterator, if either i is the begin-iterator or the
+   //!   list is empty.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements before i.
    //!   Constant if cache_last<> is true and i == end().
    iterator previous(const_iterator prev_from, iterator i)
@@ -1711,12 +1711,12 @@
 
    //! <b>Returns</b>: The const_iterator to the element before i in the list,
    //!   starting the search on element after prev_from.
-   //!   Returns the end-const_iterator, if either i is the begin-const_iterator or 
-   //!   the list is empty. 
-   //! 
+   //!   Returns the end-const_iterator, if either i is the begin-const_iterator or
+   //!   the list is empty.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Complexity</b>: Linear to the number of elements before i. 
+   //!
+   //! <b>Complexity</b>: Linear to the number of elements before i.
    //!   Constant if cache_last<> is true and i == end().
    const_iterator previous(const_iterator prev_from, const_iterator i) const
    {
@@ -1730,17 +1730,17 @@
 
    //! <b>Requires</b>: prev_pos must be a dereferenceable iterator in *this or be
    //!   before_begin(), and before_first and before_last belong to x and
-   //!   ++before_first != x.end() && before_last != x.end(). 
-   //! 
+   //!   ++before_first != x.end() && before_last != x.end().
+   //!
    //! <b>Effects</b>: Transfers the range (before_first, before_last] to this
    //!   list, after the element pointed by prev_pos.
    //!   No destructors or copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements transferred
    //!   if constant_time_size is true. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
    //!   list. Iterators of this list and all the references are not invalidated.
    void incorporate_after(const_iterator prev_from, const node_ptr & first, const node_ptr & before_last)
@@ -1756,14 +1756,14 @@
    //!   before_begin(), and before_first and before_last belong to x and
    //!   ++before_first != x.end() && before_last != x.end() and
    //!   n == std::distance(first, before_last) + 1.
-   //! 
+   //!
    //! <b>Effects</b>: Transfers the range (before_first, before_last] from list x to this
    //!   list, after the element pointed by p. No destructors or copy constructors are called.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: Iterators of values obtained from list x now point to elements of this
    //!   list. Iterators of this list and all the references are not invalidated.
    void incorporate_after(const_iterator prev_pos, const node_ptr & first, const node_ptr & before_last, difference_type n)
@@ -1837,7 +1837,7 @@
 
    void priv_shift_forward(size_type n, detail::bool_<false>)
    {
-      node_ptr last = node_algorithms::move_backwards(this->get_root_node(), (std::size_t)n);   
+      node_ptr last = node_algorithms::move_backwards(this->get_root_node(), (std::size_t)n);  
       if(cache_last && last){
          this->set_last_node(last);
       }
@@ -1860,7 +1860,7 @@
    {
       bool other_was_empty = false;
       if(this_impl->empty()){
-         //Check if both are empty or 
+         //Check if both are empty or
          if(other_impl->empty())
             return;
          //If this is empty swap pointers
@@ -2043,7 +2043,7 @@
 {
    /// @cond
    typedef typename pack_options
-      < slist_defaults<T>, 
+      < slist_defaults<T>,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4, O5
          #else
@@ -2075,7 +2075,7 @@
 template<class T, class ...Options>
 #endif
 class slist
-   :  public make_slist<T, 
+   :  public make_slist<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4, O5
          #else
@@ -2084,7 +2084,7 @@
       >::type
 {
    typedef typename make_slist
-      <T, 
+      <T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4, O5
       #else
@@ -2126,8 +2126,8 @@
 
 #endif
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/slist_hook.hpp
==============================================================================
--- trunk/boost/intrusive/slist_hook.hpp	(original)
+++ trunk/boost/intrusive/slist_hook.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -46,7 +46,7 @@
 {
    /// @cond
    typedef typename pack_options
-      < hook_defaults, 
+      < hook_defaults,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3
          #else
@@ -64,16 +64,16 @@
    typedef implementation_defined type;
 };
 
-//! Derive a class from slist_base_hook in order to store objects in 
-//! in an list. slist_base_hook holds the data necessary to maintain the 
+//! Derive a class from slist_base_hook in order to store objects in
+//! in an list. slist_base_hook holds the data necessary to maintain the
 //! list and provides an appropriate value_traits class for list.
-//! 
+//!
 //! The hook admits the following options: \c tag<>, \c void_pointer<> and
 //! \c link_mode<>.
 //!
-//! \c tag<> defines a tag to identify the node. 
-//! The same tag value can be used in different classes, but if a class is 
-//! derived from more than one \c list_base_hook, then each \c list_base_hook needs its 
+//! \c tag<> defines a tag to identify the node.
+//! The same tag value can be used in different classes, but if a class is
+//! derived from more than one \c list_base_hook, then each \c list_base_hook needs its
 //! unique tag.
 //!
 //! \c link_mode<> will specify the linking mode of the hook (\c normal_link,
@@ -99,27 +99,27 @@
    public:
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    slist_base_hook();
 
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    slist_base_hook(const slist_base_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    slist_base_hook& operator=(const slist_base_hook& );
@@ -128,37 +128,37 @@
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in an slist an assertion is raised. If link_mode is
    //!   \c auto_unlink and \c is_linked() is true, the node is unlinked.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~slist_base_hook();
 
-   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements 
-   //!   related to those nodes in one or two containers. That is, if the node 
-   //!   this is part of the element e1, the node x is part of the element e2 
-   //!   and both elements are included in the containers s1 and s2, then after 
-   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1 
-   //!   at the position of e1. If one element is not in a container, then 
-   //!   after the swap-operation the other element is not in a container. 
-   //!   Iterators to e1 and e2 related to those nodes are invalidated. 
+   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements
+   //!   related to those nodes in one or two containers. That is, if the node
+   //!   this is part of the element e1, the node x is part of the element e2
+   //!   and both elements are included in the containers s1 and s2, then after
+   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1
+   //!   at the position of e1. If one element is not in a container, then
+   //!   after the swap-operation the other element is not in a container.
+   //!   Iterators to e1 and e2 related to those nodes are invalidated.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
-   //! <b>Throws</b>: Nothing. 
+   //! <b>Throws</b>: Nothing.
    void swap_nodes(slist_base_hook &other);
 
    //! <b>Precondition</b>: link_mode must be \c safe_link or \c auto_unlink.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c slist::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c slist::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
 
    //! <b>Effects</b>: Removes the node if it's inserted in a container.
    //!   This function is only allowed if link_mode is \c auto_unlink.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    void unlink();
    #endif
 };
@@ -174,7 +174,7 @@
 {
    /// @cond
    typedef typename pack_options
-      < hook_defaults, 
+      < hook_defaults,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3
          #else
@@ -193,12 +193,12 @@
 };
 
 //! Put a public data member slist_member_hook in order to store objects of this class in
-//! an list. slist_member_hook holds the data necessary for maintaining the list and 
+//! an list. slist_member_hook holds the data necessary for maintaining the list and
 //! provides an appropriate value_traits class for list.
-//! 
+//!
 //! The hook admits the following options: \c void_pointer<> and
 //! \c link_mode<>.
-//! 
+//!
 //! \c link_mode<> will specify the linking mode of the hook (\c normal_link,
 //! \c auto_unlink or \c safe_link).
 //!
@@ -222,27 +222,27 @@
    public:
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    slist_member_hook();
 
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    slist_member_hook(const slist_member_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    slist_member_hook& operator=(const slist_member_hook& );
@@ -251,43 +251,43 @@
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in an slist an assertion is raised. If link_mode is
    //!   \c auto_unlink and \c is_linked() is true, the node is unlinked.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~slist_member_hook();
 
-   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements 
-   //!   related to those nodes in one or two containers. That is, if the node 
-   //!   this is part of the element e1, the node x is part of the element e2 
-   //!   and both elements are included in the containers s1 and s2, then after 
-   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1 
-   //!   at the position of e1. If one element is not in a container, then 
-   //!   after the swap-operation the other element is not in a container. 
-   //!   Iterators to e1 and e2 related to those nodes are invalidated. 
+   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements
+   //!   related to those nodes in one or two containers. That is, if the node
+   //!   this is part of the element e1, the node x is part of the element e2
+   //!   and both elements are included in the containers s1 and s2, then after
+   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1
+   //!   at the position of e1. If one element is not in a container, then
+   //!   after the swap-operation the other element is not in a container.
+   //!   Iterators to e1 and e2 related to those nodes are invalidated.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
-   //! <b>Throws</b>: Nothing. 
+   //! <b>Throws</b>: Nothing.
    void swap_nodes(slist_member_hook &other);
 
    //! <b>Precondition</b>: link_mode must be \c safe_link or \c auto_unlink.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c slist::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c slist::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
 
    //! <b>Effects</b>: Removes the node if it's inserted in a container.
    //!   This function is only allowed if link_mode is \c auto_unlink.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    void unlink();
    #endif
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/splay_set.hpp
==============================================================================
--- trunk/boost/intrusive/splay_set.hpp	(original)
+++ trunk/boost/intrusive/splay_set.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -22,9 +22,9 @@
 namespace boost {
 namespace intrusive {
 
-//! The class template splay_set is an intrusive container, that mimics most of 
+//! The class template splay_set is an intrusive container, that mimics most of
 //! the interface of std::set as described in the C++ standard.
-//! 
+//!
 //! The template parameter \c T is the type to be managed by the container.
 //! The user can specify additional options and if no options are provided
 //! default options are used.
@@ -79,30 +79,30 @@
    /// @endcond
 
    public:
-   //! <b>Effects</b>: Constructs an empty splay_set. 
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //! <b>Effects</b>: Constructs an empty splay_set.
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor of the value_compare object throws. 
+   //!   or the copy constructor of the value_compare object throws.
    splay_set_impl( const value_compare &cmp = value_compare()
-           , const value_traits &v_traits = value_traits()) 
+           , const value_traits &v_traits = value_traits())
       :  tree_(cmp, v_traits)
    {}
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type. 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
    //!   cmp must be a comparison function that induces a strict weak ordering.
-   //! 
-   //! <b>Effects</b>: Constructs an empty splay_set and inserts elements from 
+   //!
+   //! <b>Effects</b>: Constructs an empty splay_set and inserts elements from
    //!   [b, e).
-   //! 
-   //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using 
+   //!
+   //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise amortized N * log N, where N is std::distance(last, first).
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare object throws. 
+   //!   or the copy constructor/operator() of the value_compare object throws.
    template<class Iterator>
    splay_set_impl( Iterator b, Iterator e
            , const value_compare &cmp = value_compare()
@@ -111,135 +111,135 @@
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   splay_set_impl(BOOST_RV_REF(splay_set_impl) x) 
+   //!  
+   splay_set_impl(BOOST_RV_REF(splay_set_impl) x)
       :  tree_(::boost::move(x.tree_))
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   splay_set_impl& operator=(BOOST_RV_REF(splay_set_impl) x) 
+   //!  
+   splay_set_impl& operator=(BOOST_RV_REF(splay_set_impl) x)
    {  tree_ = ::boost::move(x.tree_);  return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the splay_set 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the splay_set
    //!   are not deleted (i.e. no destructors are called).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~splay_set_impl() 
+   ~splay_set_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    { return tree_.cbegin();  }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    { return tree_.cend();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    { return tree_.crbegin();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    { return tree_.crend();  }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of splay_set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the splay_set associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static splay_set_impl &container_from_end_iterator(iterator end_iterator)
    {
@@ -250,11 +250,11 @@
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of splay_set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the splay_set associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const splay_set_impl &container_from_end_iterator(const_iterator end_iterator)
    {
@@ -264,11 +264,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid iterator of set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a reference to the set associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static splay_set_impl &container_from_iterator(iterator it)
    {
@@ -278,11 +278,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid const_iterator of set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the set associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static const splay_set_impl &container_from_iterator(const_iterator it)
    {
@@ -292,42 +292,42 @@
    }
 
    //! <b>Effects</b>: Returns the key_compare object used by the splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If key_compare copy-constructor throws.
    key_compare key_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns the value_compare object used by the splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    { return tree_.empty(); }
 
    //! <b>Effects</b>: Returns the number of elements stored in the splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this if,
    //!   constant-time size option is enabled. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    { return tree_.size(); }
 
    //! <b>Effects</b>: Swaps the contents of two splay_sets.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the swap() call for the comparison functor
    //!   found using ADL throws. Strong guarantee.
    void swap(splay_set_impl& other)
@@ -337,22 +337,22 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const splay_set_impl &src, Cloner cloner, Disposer disposer)
    {  tree_.clone_from(src.tree_, cloner, disposer);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Tries to inserts value into the splay_set.
    //!
    //! <b>Returns</b>: If the value
@@ -360,38 +360,38 @@
    //!   iterator to the new value and true. If there is an equivalent value
    //!   returns a pair containing an iterator to the already present value
    //!   and false.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    std::pair<iterator, bool> insert(reference value)
    {  return tree_.insert_unique(value);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
-   //! <b>Effects</b>: Tries to to insert x into the splay_set, using "hint" 
+   //!
+   //! <b>Effects</b>: Tries to to insert x into the splay_set, using "hint"
    //!   as a hint to where it will be inserted.
    //!
-   //! <b>Returns</b>: An iterator that points to the position where the 
+   //! <b>Returns</b>: An iterator that points to the position where the
    //!   new element was inserted into the splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(const_iterator hint, reference value)
    {  return tree_.insert_unique(hint, value);  }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the splay_set, using
    //!   a user provided key instead of the value itself.
    //!
@@ -400,16 +400,16 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   node that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that 
+   //!   than the value_type and this function offers the possibility to use that
    //!   part to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
@@ -423,12 +423,12 @@
       (const KeyType &key, KeyValueCompare key_value_comp, insert_commit_data &commit_data)
    {  return tree_.insert_unique_check(key, key_value_comp, commit_data); }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the splay_set, using
-   //!   a user provided key instead of the value itself, using "hint" 
+   //!   a user provided key instead of the value itself, using "hint"
    //!   as a hint to where it will be inserted.
    //!
    //! <b>Returns</b>: If there is an equivalent value
@@ -436,23 +436,23 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   constructing that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that key 
+   //!   than the value_type and this function offers the possibility to use that key
    //!   to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
    //!   "insert_commit" to insert the object in constant-time. This can give a total
    //!   constant-time complexity to the insertion: check(O(1)) + commit(O(1)).
-   //!   
+   //!  
    //!   "commit_data" remains valid for a subsequent "insert_commit" only if no more
    //!   objects are inserted or erased from the splay_set.
    template<class KeyType, class KeyValueCompare>
@@ -465,74 +465,74 @@
    //!   must have been obtained from a previous call to "insert_check".
    //!   No objects should have been inserted or erased from the splay_set between
    //!   the "insert_check" that filled "commit_data" and the call to "insert_commit".
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the splay_set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Returns</b>: An iterator to the newly inserted object.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
    iterator insert_commit(reference value, const insert_commit_data &commit_data)
    {  return tree_.insert_unique_commit(value, commit_data); }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a range into the splay_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is amortized O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
    void insert(Iterator b, Iterator e)
    {  tree_.insert_unique(b, e);  }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
    {  return tree_.erase(i);  }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
-   //! 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
+   //!
    //! <b>Complexity</b>: Average complexity for erase range is amortized
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, const_iterator e)
    {  return tree_.erase(b, e);  }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized O(log(size()) + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -540,13 +540,13 @@
 
    //! <b>Effects</b>: Erases all the elements that compare equal with
    //!   the given key and the given comparison functor.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If the comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
@@ -559,16 +559,16 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -584,14 +584,14 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -602,13 +602,13 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized O(log(size() + this->count(value)). Basic guarantee.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -622,11 +622,11 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -638,26 +638,26 @@
    {  return tree_.erase_and_dispose(key, comp, disposer);  }
 
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
    {  return tree_.clear();  }
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
-   //! 
+   //!
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -665,40 +665,40 @@
    {  return tree_.clear_and_dispose(disposer);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    size_type count(const_reference value)
    {  return tree_.find(value) != end();  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the same key
    //!   compared with the given comparison functor.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType& key, KeyValueCompare comp)
    {  return tree_.find(key, comp) != end();  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    size_type count_dont_splay(const_reference value)const
    {  return tree_.find_dont_splay(value) != end();  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the same key
    //!   compared with the given comparison functor.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    template<class KeyType, class KeyValueCompare>
    size_type count_dont_splay(const KeyType& key, KeyValueCompare comp)const
@@ -706,9 +706,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator lower_bound(const_reference value)
    {  return tree_.lower_bound(value);  }
@@ -718,13 +718,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -734,9 +734,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator lower_bound_dont_splay(const_reference value) const
    {  return tree_.lower_bound_dont_splay(value);  }
@@ -746,13 +746,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -762,9 +762,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator upper_bound(const_reference value)
    {  return tree_.upper_bound(value);  }
@@ -774,11 +774,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -790,9 +790,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator upper_bound_dont_splay(const_reference value) const
    {  return tree_.upper_bound_dont_splay(value);  }
@@ -802,11 +802,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -816,11 +816,11 @@
    const_iterator upper_bound_dont_splay(const KeyType& key, KeyValueCompare comp) const
    {  return tree_.upper_bound_dont_splay(key, comp);  }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator find(const_reference value)
    {  return tree_.find(value);  }
@@ -829,12 +829,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -844,11 +844,11 @@
    iterator find(const KeyType& key, KeyValueCompare comp)
    {  return tree_.find(key, comp);  }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator find_dont_splay(const_reference value) const
    {  return tree_.find_dont_splay(value);  }
@@ -857,12 +857,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -875,9 +875,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return tree_.equal_range(value);  }
@@ -886,13 +886,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -905,9 +905,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<const_iterator, const_iterator>
       equal_range_dont_splay(const_reference value) const
@@ -917,13 +917,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -936,14 +936,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a splay_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the splay_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -951,14 +951,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a splay_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   splay_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static const_iterator s_iterator_to(const_reference value)
@@ -966,48 +966,48 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a splay_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the splay_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a splay_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   splay_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value shall not be in a splay_set/multisplay_set.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
    { tree_type::init_node(value);   }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -1017,14 +1017,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   tree with with_this. The tree does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -1033,12 +1033,12 @@
    {  tree_.replace_node(replace_this, with_this);   }
 
    //! <b>Requires</b>: i must be a valid iterator of *this.
-   //! 
+   //!
    //! <b>Effects</b>: Rearranges the splay set so that the element pointed by i
    //!   is placed as the root of the tree, improving future searches of this value.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    void splay_up(iterator i)
    {  tree_.splay_up(i);   }
@@ -1047,9 +1047,9 @@
    //!   with a key equivalent to value the element is placed as the root of the
    //!   tree. If the element is not present returns the last node compared with the key.
    //!   If the tree is empty, end() is returned.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the new root of the tree, end() if the tree is empty.
    //!
    //! <b>Throws</b>: If the comparison functor throws.
@@ -1060,9 +1060,9 @@
    //! <b>Effects</b>: Rearranges the splay set so that if *this stores an element
    //!   with a key equivalent to value the element is placed as the root of the
    //!   tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the new root of the tree, end() if the tree is empty.
    //!
    //! <b>Throws</b>: If the predicate throws.
@@ -1070,21 +1070,21 @@
    {  return tree_.splay_down(value);   }
 
    //! <b>Effects</b>: Rebalances the tree.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear.
    void rebalance()
    {  tree_.rebalance(); }
 
    //! <b>Requires</b>: old_root is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
    //!
    //! <b>Returns</b>: The new root of the subtree.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements in the subtree.
    iterator rebalance_subtree(iterator root)
    {  return tree_.rebalance_subtree(root); }
@@ -1175,7 +1175,7 @@
 {
    /// @cond
    typedef splay_set_impl
-      < typename make_splaytree_opt<T, 
+      < typename make_splaytree_opt<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -1194,7 +1194,7 @@
 template<class T, class ...Options>
 #endif
 class splay_set
-   :  public make_splay_set<T, 
+   :  public make_splay_set<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -1203,7 +1203,7 @@
       >::type
 {
    typedef typename make_splay_set
-      <T, 
+      <T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -1255,9 +1255,9 @@
 
 #endif
 
-//! The class template splay_multiset is an intrusive container, that mimics most of 
+//! The class template splay_multiset is an intrusive container, that mimics most of
 //! the interface of std::multiset as described in the C++ standard.
-//! 
+//!
 //! The template parameter \c T is the type to be managed by the container.
 //! The user can specify additional options and if no options are provided
 //! default options are used.
@@ -1311,30 +1311,30 @@
    /// @endcond
 
    public:
-   //! <b>Effects</b>: Constructs an empty splay_multiset. 
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //! <b>Effects</b>: Constructs an empty splay_multiset.
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare object throws. 
+   //!   or the copy constructor/operator() of the value_compare object throws.
    splay_multiset_impl( const value_compare &cmp = value_compare()
-                , const value_traits &v_traits = value_traits()) 
+                , const value_traits &v_traits = value_traits())
       :  tree_(cmp, v_traits)
    {}
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type. 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
    //!   cmp must be a comparison function that induces a strict weak ordering.
-   //! 
-   //! <b>Effects</b>: Constructs an empty splay_multiset and inserts elements from 
+   //!
+   //! <b>Effects</b>: Constructs an empty splay_multiset and inserts elements from
    //!   [b, e).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise amortized N * log N, where N is the distance between first and last.
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare object throws. 
+   //!   or the copy constructor/operator() of the value_compare object throws.
    template<class Iterator>
    splay_multiset_impl( Iterator b, Iterator e
                 , const value_compare &cmp = value_compare()
@@ -1343,135 +1343,135 @@
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   splay_multiset_impl(BOOST_RV_REF(splay_multiset_impl) x) 
+   //!  
+   splay_multiset_impl(BOOST_RV_REF(splay_multiset_impl) x)
       :  tree_(::boost::move(x.tree_))
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   splay_multiset_impl& operator=(BOOST_RV_REF(splay_multiset_impl) x) 
+   //!  
+   splay_multiset_impl& operator=(BOOST_RV_REF(splay_multiset_impl) x)
    {  tree_ = ::boost::move(x.tree_);  return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the set 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the set
    //!   are not deleted (i.e. no destructors are called).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~splay_multiset_impl() 
+   ~splay_multiset_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    { return tree_.cbegin();  }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    { return tree_.cend();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    { return tree_.crbegin();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    { return tree_.crend();  }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of splay_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the splay_multiset associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static splay_multiset_impl &container_from_end_iterator(iterator end_iterator)
    {
@@ -1482,11 +1482,11 @@
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of splay_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the splay_multiset associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const splay_multiset_impl &container_from_end_iterator(const_iterator end_iterator)
    {
@@ -1496,11 +1496,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid iterator of multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the multiset associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static splay_multiset_impl &container_from_iterator(iterator it)
    {
@@ -1510,11 +1510,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid const_iterator of multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the multiset associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const splay_multiset_impl &container_from_iterator(const_iterator it)
    {
@@ -1524,42 +1524,42 @@
    }
 
    //! <b>Effects</b>: Returns the key_compare object used by the splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If key_compare copy-constructor throws.
    key_compare key_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns the value_compare object used by the splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    { return tree_.empty(); }
 
    //! <b>Effects</b>: Returns the number of elements stored in the splay_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this if,
    //!   constant-time size option is enabled. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    { return tree_.size(); }
 
    //! <b>Effects</b>: Swaps the contents of two splay_multisets.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the swap() call for the comparison functor
    //!   found using ADL throws. Strong guarantee.
    void swap(splay_multiset_impl& other)
@@ -1569,109 +1569,109 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const splay_multiset_impl &src, Cloner cloner, Disposer disposer)
    {  tree_.clone_from(src.tree_, cloner, disposer);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the splay_multiset.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(reference value)
    {  return tree_.insert_equal(this->end(), value);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts x into the splay_multiset, using pos as a hint to
    //!   where it will be inserted.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic in general, but it is amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(const_iterator hint, reference value)
    {  return tree_.insert_equal(hint, value);  }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a range into the splay_multiset.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is amortized O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
    void insert(Iterator b, Iterator e)
    {  tree_.insert_equal(b, e);  }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
-   //! <b>Complexity</b>: Average complexity is constant time. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
+   //! <b>Complexity</b>: Average complexity is constant time.
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
    {  return tree_.erase(i);  }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for erase range is amortized
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, const_iterator e)
    {  return tree_.erase(b, e);  }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized O(log(size() + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -1679,13 +1679,13 @@
 
    //! <b>Effects</b>: Erases all the elements that compare equal with
    //!   the given key and the given comparison functor.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
@@ -1700,14 +1700,14 @@
    //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -1725,12 +1725,12 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for erase range is amortized
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -1741,13 +1741,13 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized O(log(size() + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1761,11 +1761,11 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -1777,26 +1777,26 @@
    {  return tree_.erase_and_dispose(key, comp, disposer);  }
 
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
    {  return tree_.clear();  }
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
-   //! 
+   //!
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1804,40 +1804,40 @@
    {  return tree_.clear_and_dispose(disposer);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    size_type count(const_reference value)
    {  return tree_.count(value);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the same key
    //!   compared with the given comparison functor.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType& key, KeyValueCompare comp)
    {  return tree_.count(key, comp);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    size_type count_dont_splay(const_reference value) const
    {  return tree_.count_dont_splay(value);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the same key
    //!   compared with the given comparison functor.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    template<class KeyType, class KeyValueCompare>
    size_type count_dont_splay(const KeyType& key, KeyValueCompare comp) const
@@ -1845,9 +1845,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator lower_bound(const_reference value)
    {  return tree_.lower_bound(value);  }
@@ -1857,13 +1857,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -1873,9 +1873,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator lower_bound_dont_splay(const_reference value) const
    {  return tree_.lower_bound_dont_splay(value);  }
@@ -1885,13 +1885,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -1901,9 +1901,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator upper_bound(const_reference value)
    {  return tree_.upper_bound(value);  }
@@ -1913,11 +1913,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1929,9 +1929,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator upper_bound_dont_splay(const_reference value) const
    {  return tree_.upper_bound_dont_splay(value);  }
@@ -1941,11 +1941,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1955,11 +1955,11 @@
    const_iterator upper_bound_dont_splay(const KeyType& key, KeyValueCompare comp) const
    {  return tree_.upper_bound_dont_splay(key, comp);  }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator find(const_reference value)
    {  return tree_.find(value);  }
@@ -1968,12 +1968,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1983,11 +1983,11 @@
    iterator find(const KeyType& key, KeyValueCompare comp)
    {  return tree_.find(key, comp);  }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator find_dont_splay(const_reference value) const
    {  return tree_.find_dont_splay(value);  }
@@ -1996,12 +1996,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2014,9 +2014,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return tree_.equal_range(value);  }
@@ -2025,13 +2025,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2044,9 +2044,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<const_iterator, const_iterator>
       equal_range_dont_splay(const_reference value) const
@@ -2056,13 +2056,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2075,14 +2075,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -2090,14 +2090,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static const_iterator s_iterator_to(const_reference value)
@@ -2105,48 +2105,48 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value shall not be in a set/splay_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
    { tree_type::init_node(value);   }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -2156,14 +2156,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   tree with with_this. The tree does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -2172,12 +2172,12 @@
    {  tree_.replace_node(replace_this, with_this);   }
 
    //! <b>Requires</b>: i must be a valid iterator of *this.
-   //! 
+   //!
    //! <b>Effects</b>: Rearranges the splay set so that the element pointed by i
    //!   is placed as the root of the tree, improving future searches of this value.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    void splay_up(iterator i)
    {  tree_.splay_up(i);   }
@@ -2186,9 +2186,9 @@
    //!   with a key equivalent to value the element is placed as the root of the
    //!   tree. If the element is not present returns the last node compared with the key.
    //!   If the tree is empty, end() is returned.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the new root of the tree, end() if the tree is empty.
    //!
    //! <b>Throws</b>: If the comparison functor throws.
@@ -2199,9 +2199,9 @@
    //! <b>Effects</b>: Rearranges the splay set so that if *this stores an element
    //!   with a key equivalent to value the element is placed as the root of the
    //!   tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the new root of the tree, end() if the tree is empty.
    //!
    //! <b>Throws</b>: If the predicate throws.
@@ -2209,21 +2209,21 @@
    {  return tree_.splay_down(value);   }
 
    //! <b>Effects</b>: Rebalances the tree.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear.
    void rebalance()
    {  tree_.rebalance(); }
 
    //! <b>Requires</b>: old_root is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
    //!
    //! <b>Returns</b>: The new root of the subtree.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements in the subtree.
    iterator rebalance_subtree(iterator root)
    {  return tree_.rebalance_subtree(root); }
@@ -2314,7 +2314,7 @@
 {
    /// @cond
    typedef splay_multiset_impl
-      < typename make_splaytree_opt<T, 
+      < typename make_splaytree_opt<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -2334,7 +2334,7 @@
 template<class T, class ...Options>
 #endif
 class splay_multiset
-   :  public make_splay_multiset<T, 
+   :  public make_splay_multiset<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -2343,7 +2343,7 @@
       >::type
 {
    typedef typename make_splay_multiset
-      <T, 
+      <T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -2395,8 +2395,8 @@
 
 #endif
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/splay_set_hook.hpp
==============================================================================
--- trunk/boost/intrusive/splay_set_hook.hpp	(original)
+++ trunk/boost/intrusive/splay_set_hook.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -43,7 +43,7 @@
 {
    /// @cond
    typedef typename pack_options
-      < hook_defaults, 
+      < hook_defaults,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3
          #else
@@ -61,16 +61,16 @@
    typedef implementation_defined type;
 };
 
-//! Derive a class from splay_set_base_hook in order to store objects in 
-//! in a splay_set/splay_multiset. splay_set_base_hook holds the data necessary to maintain 
+//! Derive a class from splay_set_base_hook in order to store objects in
+//! in a splay_set/splay_multiset. splay_set_base_hook holds the data necessary to maintain
 //! the splay_set/splay_multiset and provides an appropriate value_traits class for splay_set/splay_multiset.
-//! 
+//!
 //! The hook admits the following options: \c tag<>, \c void_pointer<>,
 //! \c link_mode<> and \c optimize_size<>.
 //!
-//! \c tag<> defines a tag to identify the node. 
-//! The same tag value can be used in different classes, but if a class is 
-//! derived from more than one \c list_base_hook, then each \c list_base_hook needs its 
+//! \c tag<> defines a tag to identify the node.
+//! The same tag value can be used in different classes, but if a class is
+//! derived from more than one \c list_base_hook, then each \c list_base_hook needs its
 //! unique tag.
 //!
 //! \c void_pointer<> is the pointer type that will be used internally in the hook
@@ -96,27 +96,27 @@
    public:
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    splay_set_base_hook();
 
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    splay_set_base_hook(const splay_set_base_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    splay_set_base_hook& operator=(const splay_set_base_hook& );
@@ -125,37 +125,37 @@
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in a set an assertion is raised. If link_mode is
    //!   \c auto_unlink and \c is_linked() is true, the node is unlinked.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~splay_set_base_hook();
 
-   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements 
-   //!   related to those nodes in one or two containers. That is, if the node 
-   //!   this is part of the element e1, the node x is part of the element e2 
-   //!   and both elements are included in the containers s1 and s2, then after 
-   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1 
-   //!   at the position of e1. If one element is not in a container, then 
-   //!   after the swap-operation the other element is not in a container. 
-   //!   Iterators to e1 and e2 related to those nodes are invalidated. 
+   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements
+   //!   related to those nodes in one or two containers. That is, if the node
+   //!   this is part of the element e1, the node x is part of the element e2
+   //!   and both elements are included in the containers s1 and s2, then after
+   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1
+   //!   at the position of e1. If one element is not in a container, then
+   //!   after the swap-operation the other element is not in a container.
+   //!   Iterators to e1 and e2 related to those nodes are invalidated.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
-   //! <b>Throws</b>: Nothing. 
+   //! <b>Throws</b>: Nothing.
    void swap_nodes(splay_set_base_hook &other);
 
    //! <b>Precondition</b>: link_mode must be \c safe_link or \c auto_unlink.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c set::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c set::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
 
    //! <b>Effects</b>: Removes the node if it's inserted in a container.
    //!   This function is only allowed if link_mode is \c auto_unlink.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    void unlink();
    #endif
 };
@@ -171,7 +171,7 @@
 {
    /// @cond
    typedef typename pack_options
-      < hook_defaults, 
+      < hook_defaults,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3
          #else
@@ -193,7 +193,7 @@
 //! class in a splay_set/splay_multiset. splay_set_member_hook holds the data
 //! necessary for maintaining the splay_set/splay_multiset and provides an appropriate
 //! value_traits class for splay_set/splay_multiset.
-//! 
+//!
 //! The hook admits the following options: \c void_pointer<>,
 //! \c link_mode<> and \c optimize_size<>.
 //!
@@ -220,27 +220,27 @@
    public:
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    splay_set_member_hook();
 
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    splay_set_member_hook(const splay_set_member_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    splay_set_member_hook& operator=(const splay_set_member_hook& );
@@ -249,43 +249,43 @@
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in a set an assertion is raised. If link_mode is
    //!   \c auto_unlink and \c is_linked() is true, the node is unlinked.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~splay_set_member_hook();
 
-   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements 
-   //!   related to those nodes in one or two containers. That is, if the node 
-   //!   this is part of the element e1, the node x is part of the element e2 
-   //!   and both elements are included in the containers s1 and s2, then after 
-   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1 
-   //!   at the position of e1. If one element is not in a container, then 
-   //!   after the swap-operation the other element is not in a container. 
-   //!   Iterators to e1 and e2 related to those nodes are invalidated. 
+   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements
+   //!   related to those nodes in one or two containers. That is, if the node
+   //!   this is part of the element e1, the node x is part of the element e2
+   //!   and both elements are included in the containers s1 and s2, then after
+   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1
+   //!   at the position of e1. If one element is not in a container, then
+   //!   after the swap-operation the other element is not in a container.
+   //!   Iterators to e1 and e2 related to those nodes are invalidated.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
-   //! <b>Throws</b>: Nothing. 
+   //! <b>Throws</b>: Nothing.
    void swap_nodes(splay_set_member_hook &other);
 
    //! <b>Precondition</b>: link_mode must be \c safe_link or \c auto_unlink.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c set::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c set::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
 
    //! <b>Effects</b>: Removes the node if it's inserted in a container.
    //!   This function is only allowed if link_mode is \c auto_unlink.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    void unlink();
    #endif
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/splaytree.hpp
==============================================================================
--- trunk/boost/intrusive/splaytree.hpp	(original)
+++ trunk/boost/intrusive/splaytree.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -63,8 +63,8 @@
 /// @endcond
 
 //! The class template splaytree is an intrusive splay tree container that
-//! is used to construct intrusive splay_set and splay_multiset containers. The no-throw 
-//! guarantee holds only, if the value_compare object 
+//! is used to construct intrusive splay_set and splay_multiset containers. The no-throw
+//! guarantee holds only, if the value_compare object
 //! doesn't throw.
 //!
 //! The template parameter \c T is the type to be managed by the container.
@@ -129,7 +129,7 @@
    //noncopyable
    BOOST_MOVABLE_BUT_NOT_COPYABLE(splaytree_impl)
 
-   enum { safemode_or_autounlink  = 
+   enum { safemode_or_autounlink  =
             (int)real_value_traits::link_mode == (int)auto_unlink   ||
             (int)real_value_traits::link_mode == (int)safe_link     };
 
@@ -155,7 +155,7 @@
       {}
       node_plus_pred_t node_plus_pred_;
    } data_;
-  
+ 
    const value_compare &priv_comp() const
    {  return data_.node_plus_pred_.get();  }
 
@@ -207,18 +207,18 @@
 
    typedef typename node_algorithms::insert_commit_data insert_commit_data;
 
-   //! <b>Effects</b>: Constructs an empty tree. 
-   //!   
+   //! <b>Effects</b>: Constructs an empty tree.
+   //!  
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
    //!   or the copy constructorof the value_compare object throws. Basic guarantee.
    splaytree_impl( const value_compare &cmp     = value_compare()
-                 , const value_traits &v_traits = value_traits()) 
+                 , const value_traits &v_traits = value_traits())
       :  data_(cmp, v_traits)
-   {  
-      node_algorithms::init_header(this->priv_header_ptr());  
+   { 
+      node_algorithms::init_header(this->priv_header_ptr()); 
       this->priv_size_traits().set_size(size_type(0));
    }
 
@@ -230,7 +230,7 @@
    //!
    //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise amortized N * log N, where N is the distance between first and last.
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
    //!   or the copy constructor/operator() of the value_compare object throws. Basic guarantee.
@@ -249,59 +249,59 @@
    }
 
    //! <b>Effects</b>: to-do
-   //!   
+   //!  
    splaytree_impl(BOOST_RV_REF(splaytree_impl) x)
       : data_(::boost::move(x.priv_comp()), ::boost::move(x.priv_value_traits()))
    {
-      node_algorithms::init_header(this->priv_header_ptr());  
+      node_algorithms::init_header(this->priv_header_ptr()); 
       this->priv_size_traits().set_size(size_type(0));
       this->swap(x);
    }
 
    //! <b>Effects</b>: to-do
-   //!   
-   splaytree_impl& operator=(BOOST_RV_REF(splaytree_impl) x) 
+   //!  
+   splaytree_impl& operator=(BOOST_RV_REF(splaytree_impl) x)
    {  this->swap(x); return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the set 
-   //!   are not deleted (i.e. no destructors are called), but the nodes according to 
-   //!   the value_traits template parameter are reinitialized and thus can be reused. 
-   //! 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the set
+   //!   are not deleted (i.e. no destructors are called), but the nodes according to
+   //!   the value_traits template parameter are reinitialized and thus can be reused.
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~splaytree_impl() 
+   ~splaytree_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    {  return iterator(node_algorithms::begin_node(this->priv_header_ptr()), this); }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    {  return cbegin();   }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    {  return const_iterator(node_algorithms::begin_node(this->priv_header_ptr()), this); }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    {  return iterator (this->priv_header_ptr(), this);  }
@@ -309,138 +309,138 @@
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the tree.
    //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    {  return cend();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    {  return const_iterator (uncast(this->priv_header_ptr()), this);  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    {  return reverse_iterator(end());  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    {  return const_reverse_iterator(end());  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    {  return const_reverse_iterator(end());  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    {  return reverse_iterator(begin());   }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    {  return const_reverse_iterator(begin());   }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    {  return const_reverse_iterator(begin());   }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of splaytree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the splaytree associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static splaytree_impl &container_from_end_iterator(iterator end_iterator)
    {  return priv_container_from_end_iterator(end_iterator);   }
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of splaytree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the splaytree associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const splaytree_impl &container_from_end_iterator(const_iterator end_iterator)
    {  return priv_container_from_end_iterator(end_iterator);   }
 
    //! <b>Precondition</b>: it must be a valid iterator
    //!   of rbtree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the tree associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static splaytree_impl &container_from_iterator(iterator it)
    {  return priv_container_from_iterator(it);   }
 
    //! <b>Precondition</b>: it must be a valid end const_iterator
    //!   of rbtree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the tree associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static const splaytree_impl &container_from_iterator(const_iterator it)
    {  return priv_container_from_iterator(it);   }
 
    //! <b>Effects</b>: Returns the value_compare object used by the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    {  return priv_comp();   }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    {  return this->cbegin() == this->cend();   }
 
    //! <b>Effects</b>: Returns the number of elements stored in the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this
    //!   if constant-time size option is disabled. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    {
@@ -453,9 +453,9 @@
    }
 
    //! <b>Effects</b>: Swaps the contents of two splaytrees.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the comparison functor's swap call throws.
    void swap(splaytree_impl& other)
    {
@@ -472,14 +472,14 @@
    }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the tree before the lower bound.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is amortized
    //!   logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_equal(reference value)
@@ -497,16 +497,16 @@
 
    //! <b>Requires</b>: value must be an lvalue, and "hint" must be
    //!   a valid iterator.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts x into the tree, using "hint" as a hint to
    //!   where it will be inserted. If "hint" is the upper_bound
    //!   the insertion takes constant time (two comparisons in the worst case)
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic in general, but it is amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_equal(const_iterator hint, reference value)
@@ -522,18 +522,18 @@
       return ret;
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a each element of a range into the tree
    //!   before the upper bound of the key of each element.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is in general amortized O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -547,14 +547,14 @@
    }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the tree if the value
    //!   is not already present.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    std::pair<iterator, bool> insert_unique(reference value)
@@ -568,16 +568,16 @@
 
    //! <b>Requires</b>: value must be an lvalue, and "hint" must be
    //!   a valid iterator
-   //! 
+   //!
    //! <b>Effects</b>: Tries to insert x into the tree, using "hint" as a hint
    //!   to where it will be inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic in general, but it is amortized
    //!   constant time (two comparisons in the worst case)
    //!   if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_unique(const_iterator hint, reference value)
@@ -589,17 +589,17 @@
       return insert_unique_commit(value, commit_data);
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Tries to insert each element of a range into the tree.
-   //! 
-   //! <b>Complexity</b>: Insert range is in general amortized O(N * log(N)), where N is the 
-   //!   size of the range. However, it is linear in N if the range is already sorted 
+   //!
+   //! <b>Complexity</b>: Insert range is in general amortized O(N * log(N)), where N is the
+   //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -609,10 +609,10 @@
          this->insert_unique(*b);
    }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the container, using
    //!   a user provided key instead of the value itself.
    //!
@@ -621,16 +621,16 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   node that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that 
+   //!   than the value_type and this function offers the possibility to use that
    //!   part to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
@@ -645,18 +645,18 @@
    {
       detail::key_nodeptr_comp<KeyValueCompare, splaytree_impl>
          comp(key_value_comp, this);
-      std::pair<node_ptr, bool> ret = 
+      std::pair<node_ptr, bool> ret =
          (node_algorithms::insert_unique_check
             (this->priv_header_ptr(), key, comp, commit_data));
       return std::pair<iterator, bool>(iterator(ret.first, this), ret.second);
    }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare. The difference is that
    //!   key_value_comp compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the container, using
-   //!   a user provided key instead of the value itself, using "hint" 
+   //!   a user provided key instead of the value itself, using "hint"
    //!   as a hint to where it will be inserted.
    //!
    //! <b>Returns</b>: If there is an equivalent value
@@ -664,23 +664,23 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
    //!
    //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   constructing that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that key 
+   //!   than the value_type and this function offers the possibility to use that key
    //!   to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
    //!   "insert_commit" to insert the object in constant-time. This can give a total
    //!   constant-time complexity to the insertion: check(O(1)) + commit(O(1)).
-   //!   
+   //!  
    //!   "commit_data" remains valid for a subsequent "insert_commit" only if no more
    //!   objects are inserted or erased from the container.
    template<class KeyType, class KeyValueCompare>
@@ -690,7 +690,7 @@
    {
       detail::key_nodeptr_comp<KeyValueCompare, splaytree_impl>
          comp(key_value_comp, this);
-      std::pair<node_ptr, bool> ret = 
+      std::pair<node_ptr, bool> ret =
          node_algorithms::insert_unique_check
             (this->priv_header_ptr(), hint.pointed_node(), key, comp, commit_data);
       return std::pair<iterator, bool>(iterator(ret.first, this), ret.second);
@@ -700,16 +700,16 @@
    //!   must have been obtained from a previous call to "insert_check".
    //!   No objects should have been inserted or erased from the container between
    //!   the "insert_check" that filled "commit_data" and the call to "insert_commit".
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the avl_set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Returns</b>: An iterator to the newly inserted object.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
@@ -724,12 +724,12 @@
       return iterator(to_insert, this);
    }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
@@ -746,26 +746,26 @@
       return ret.unconst();
    }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
-   //! 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
+   //!
    //! <b>Complexity</b>: Average complexity for erase range is amortized
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, const_iterator e)
    {  size_type n;   return private_erase(b, e, n);   }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -775,11 +775,11 @@
    //!   according to the comparison functor "comp".
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
@@ -797,14 +797,14 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -825,12 +825,12 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for erase range is amortized
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -841,13 +841,13 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -866,11 +866,11 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -886,13 +886,13 @@
       return n;
    }
 
-   //! <b>Effects</b>: Erases all of the elements. 
-   //! 
+   //! <b>Effects</b>: Erases all of the elements.
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
@@ -910,9 +910,9 @@
    //!   each node to be erased.
    //! <b>Complexity</b>: Amortized O(log(size() + N)),
    //!   where N is the number of elements in the container.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. Calls N times to disposer functor.
    template<class Disposer>
@@ -924,19 +924,19 @@
    }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given value
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given value.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type count(const_reference value)
    {  return this->count(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType &key, KeyValueCompare comp)
@@ -946,19 +946,19 @@
    }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given value
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given value.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type count_dont_splay(const_reference value) const
    {  return this->count_dont_splay(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    size_type count_dont_splay(const KeyType &key, KeyValueCompare comp) const
@@ -969,27 +969,27 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator lower_bound(const_reference value)
    {  return this->lower_bound(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator lower_bound_dont_splay(const_reference value) const
    {  return this->lower_bound_dont_splay(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator lower_bound(const KeyType &key, KeyValueCompare comp)
@@ -1002,9 +1002,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator lower_bound_dont_splay(const KeyType &key, KeyValueCompare comp) const
@@ -1017,9 +1017,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator upper_bound(const_reference value)
    {  return this->upper_bound(value, priv_comp());   }
@@ -1029,7 +1029,7 @@
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator upper_bound(const KeyType &key, KeyValueCompare comp)
@@ -1042,9 +1042,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator upper_bound_dont_splay(const_reference value) const
    {  return this->upper_bound_dont_splay(value, priv_comp());   }
@@ -1054,7 +1054,7 @@
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator upper_bound_dont_splay(const KeyType &key, KeyValueCompare comp) const
@@ -1065,20 +1065,20 @@
          (this->priv_header_ptr(), key, key_node_comp, false), this);
    }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   k or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator find(const_reference value)
    {  return this->find(value, priv_comp()); }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   k or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator find(const KeyType &key, KeyValueCompare comp)
@@ -1089,20 +1089,20 @@
          (node_algorithms::find(this->priv_header_ptr(), key, key_node_comp), this);
    }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
    //!   k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator find_dont_splay(const_reference value) const
    {  return this->find_dont_splay(value, priv_comp()); }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
    //!   k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator find_dont_splay(const KeyType &key, KeyValueCompare comp) const
@@ -1116,9 +1116,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return this->equal_range(value, priv_comp());   }
@@ -1126,9 +1126,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    std::pair<iterator,iterator> equal_range(const KeyType &key, KeyValueCompare comp)
@@ -1143,9 +1143,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    std::pair<const_iterator, const_iterator>
       equal_range_dont_splay(const_reference value) const
@@ -1154,9 +1154,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    std::pair<const_iterator, const_iterator>
@@ -1173,15 +1173,15 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const splaytree_impl &src, Cloner cloner, Disposer disposer)
@@ -1202,11 +1202,11 @@
    }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -1224,12 +1224,12 @@
    }
 
    //! <b>Requires</b>: i must be a valid iterator of *this.
-   //! 
+   //!
    //! <b>Effects</b>: Rearranges the splay set so that the element pointed by i
    //!   is placed as the root of the tree, improving future searches of this value.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    void splay_up(iterator i)
    {  return node_algorithms::splay_up(i.pointed_node(), this->priv_header_ptr());   }
@@ -1238,7 +1238,7 @@
    //!   with a key equivalent to value the element is placed as the root of the
    //!   tree. If the element is not present returns the last node compared with the key.
    //!   If the tree is empty, end() is returned.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
    //!
    //! <b>Returns</b>: An iterator to the new root of the tree, end() if the tree is empty.
@@ -1256,9 +1256,9 @@
    //! <b>Effects</b>: Rearranges the splay set so that if *this stores an element
    //!   with a key equivalent to value the element is placed as the root of the
    //!   tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized logarithmic.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the new root of the tree, end() if the tree is empty.
    //!
    //! <b>Throws</b>: If the predicate throws.
@@ -1267,14 +1267,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   tree with with_this. The tree does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -1290,14 +1290,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -1308,17 +1308,17 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
-   static const_iterator s_iterator_to(const_reference value) 
+   static const_iterator s_iterator_to(const_reference value)
    {
       BOOST_STATIC_ASSERT((!stateful_value_traits));
       return const_iterator (value_traits::to_node_ptr(const_cast<reference> (value)), 0);
@@ -1326,70 +1326,70 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return iterator (value_traits::to_node_ptr(value), this); }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return const_iterator (value_traits::to_node_ptr(const_cast<reference> (value)), this); }
 
    //! <b>Requires</b>: value shall not be in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
    { node_algorithms::init(value_traits::to_node_ptr(value)); }
 
    //! <b>Effects</b>: Rebalances the tree.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear.
    void rebalance()
    {  node_algorithms::rebalance(this->priv_header_ptr()); }
 
    //! <b>Requires</b>: old_root is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
    //!
    //! <b>Returns</b>: The new root of the subtree.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements in the subtree.
    iterator rebalance_subtree(iterator root)
    {  return iterator(node_algorithms::rebalance_subtree(root.pointed_node()), this); }
 
 /*
    //! <b>Effects</b>: removes x from a tree of the appropriate type. It has no effect,
-   //! if x is not in such a tree. 
-   //! 
+   //! if x is not in such a tree.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This static function is only usable with the "safe mode"
    //! hook and non-constant time size lists. Otherwise, the user must use
    //! the non-static "erase(reference )" member. If the user calls
@@ -1399,7 +1399,7 @@
    static void remove_node(T& value)
    {
       //This function is only usable for safe mode hooks and non-constant
-      //time lists. 
+      //time lists.
       //BOOST_STATIC_ASSERT((!(safemode_or_autounlink && constant_time_size)));
       BOOST_STATIC_ASSERT((!constant_time_size));
       BOOST_STATIC_ASSERT((boost::is_convertible<T, value_type>::value));
@@ -1571,7 +1571,7 @@
 struct make_splaytree_opt
 {
    typedef typename pack_options
-      < splay_set_defaults<T>, 
+      < splay_set_defaults<T>,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -1602,7 +1602,7 @@
 {
    /// @cond
    typedef splaytree_impl
-      < typename make_splaytree_opt<T, 
+      < typename make_splaytree_opt<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -1621,7 +1621,7 @@
 template<class T, class ...Options>
 #endif
 class splaytree
-   :  public make_splaytree<T, 
+   :  public make_splaytree<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -1630,7 +1630,7 @@
       >::type
 {
    typedef typename make_splaytree
-      <T, 
+      <T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -1678,8 +1678,8 @@
 #endif
 
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/splaytree_algorithms.hpp
==============================================================================
--- trunk/boost/intrusive/splaytree_algorithms.hpp	(original)
+++ trunk/boost/intrusive/splaytree_algorithms.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -16,7 +16,7 @@
 // Here is the header of the file used as base code:
 //
 //  splay_tree.h -- implementation of a STL complatible splay tree.
-//  
+// 
 //  Copyright (c) 2004 Ralf Mattethat
 //
 //  Permission to copy, use, modify, sell and distribute this software
@@ -24,22 +24,22 @@
 //  This software is provided "as is" without express or implied
 //  warranty, and with no claim as to its suitability for any purpose.
 //
-//  Please send questions, comments, complaints, performance data, etc to  
+//  Please send questions, comments, complaints, performance data, etc to 
 //  ralf.mattethat_at_[hidden]
 //
 //  Requirements for element type
 //  * must be copy-constructible
 //  * destructor must not throw exception
 //
-//    Methods marked with note A only throws an exception if the evaluation of the 
-//    predicate throws an exception. If an exception is thrown the call has no 
+//    Methods marked with note A only throws an exception if the evaluation of the
+//    predicate throws an exception. If an exception is thrown the call has no
 //    effect on the containers state
 //
 //    Methods marked with note B only throws an exception if the coppy constructor
-//    or assignment operator of the predicate throws an exception. If an exception 
+//    or assignment operator of the predicate throws an exception. If an exception
 //    is thrown the call has no effect on the containers state
 //
-//    iterators are only invalidated, if the element pointed to by the iterator 
+//    iterators are only invalidated, if the element pointed to by the iterator
 //    is deleted. The same goes for element references
 //
 
@@ -95,8 +95,8 @@
 
 //!   A splay tree is an implementation of a binary search tree. The tree is
 //!   self balancing using the splay algorithm as described in
-//!    
-//!      "Self-Adjusting Binary Search Trees 
+//!   
+//!      "Self-Adjusting Binary Search Trees
 //!      by Daniel Dominic Sleator and Robert Endre Tarjan
 //!      AT&T Bell Laboratories, Murray Hill, NJ
 //!      Journal of the ACM, Vol 32, no 3, July 1985, pp 652-686
@@ -116,15 +116,15 @@
 //! <b>Static functions</b>:
 //!
 //! <tt>static node_ptr get_parent(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_parent(node_ptr n, node_ptr parent);</tt>
 //!
 //! <tt>static node_ptr get_left(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_left(node_ptr n, node_ptr left);</tt>
 //!
 //! <tt>static node_ptr get_right(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_right(node_ptr n, node_ptr right);</tt>
 template<class NodeTraits>
 class splaytree_algorithms
@@ -159,11 +159,11 @@
 
    //! <b>Requires</b>: node is a node of the tree or an node initialized
    //!   by init(...).
-   //! 
+   //!
    //! <b>Effects</b>: Returns true if the node is initialized by init().
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool unique(const const_node_ptr & node)
    {  return tree_algorithms::unique(node);  }
@@ -173,15 +173,15 @@
 
    //! <b>Requires</b>: node1 and node2 can't be header nodes
    //!  of two trees.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps two nodes. After the function node1 will be inserted
    //!   in the position node2 before the function. node2 will be inserted in the
    //!   position node1 had before the function.
-   //! 
-   //! <b>Complexity</b>: Logarithmic. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Logarithmic.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   node1 and node2 are not equivalent according to the ordering rules.
    //!
@@ -190,22 +190,22 @@
    {
       if(node1 == node2)
          return;
-   
+  
       node_ptr header1(tree_algorithms::get_header(node1)), header2(tree_algorithms::get_header(node2));
       swap_nodes(node1, header1, node2, header2);
    }
 
    //! <b>Requires</b>: node1 and node2 can't be header nodes
    //!  of two trees with header header1 and header2.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps two nodes. After the function node1 will be inserted
    //!   in the position node2 before the function. node2 will be inserted in the
    //!   position node1 had before the function.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   node1 and node2 are not equivalent according to the ordering rules.
    //!
@@ -215,14 +215,14 @@
 
    //! <b>Requires</b>: node_to_be_replaced must be inserted in a tree
    //!   and new_node must not be inserted in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces node_to_be_replaced in its position in the
    //!   tree with new_node. The tree does not need to be rebalanced
-   //! 
-   //! <b>Complexity</b>: Logarithmic. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Logarithmic.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   new_node is not equivalent to node_to_be_replaced according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -238,14 +238,14 @@
 
    //! <b>Requires</b>: node_to_be_replaced must be inserted in a tree
    //!   with header "header" and new_node must not be inserted in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces node_to_be_replaced in its position in the
    //!   tree with new_node. The tree does not need to be rebalanced
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   new_node is not equivalent to node_to_be_replaced according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -256,21 +256,21 @@
    {  tree_algorithms::replace_node(node_to_be_replaced, header, new_node);   }
 
    //! <b>Requires</b>: p is a node from the tree except the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the next node of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr next_node(const node_ptr & p)
    {  return tree_algorithms::next_node(p); }
 
    //! <b>Requires</b>: p is a node from the tree except the leftmost node.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the previous node of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr prev_node(const node_ptr & p)
    {  return tree_algorithms::prev_node(p); }
@@ -278,9 +278,9 @@
    //! <b>Requires</b>: node must not be part of any tree.
    //!
    //! <b>Effects</b>: After the function unique(node) == true.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
@@ -291,9 +291,9 @@
    //!
    //! <b>Effects</b>: Initializes the header to represent an empty tree.
    //!   unique(header) == true.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
@@ -303,46 +303,46 @@
    //! <b>Requires</b>: "disposer" must be an object function
    //!   taking a node_ptr parameter and shouldn't throw.
    //!
-   //! <b>Effects</b>: Empties the target tree calling 
+   //! <b>Effects</b>: Empties the target tree calling
    //!   <tt>void disposer::operator()(const node_ptr &)</tt> for every node of the tree
    //!    except the header.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of element of the source tree plus the.
    //!   number of elements of tree target tree when calling this function.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner functor throws. If this happens target nodes are disposed.
    template<class Disposer>
    static void clear_and_dispose(const node_ptr & header, Disposer disposer)
    {  tree_algorithms::clear_and_dispose(header, disposer); }
 
    //! <b>Requires</b>: node is a node of the tree but it's not the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes of the subtree.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static std::size_t count(const const_node_ptr & node)
    {  return tree_algorithms::count(node);   }
 
    //! <b>Requires</b>: header is the header node of the tree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes above the header.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static std::size_t size(const const_node_ptr & header)
    {  return tree_algorithms::size(header);   }
 
    //! <b>Requires</b>: header1 and header2 must be the header nodes
    //!  of two trees.
-   //! 
-   //! <b>Effects</b>: Swaps two trees. After the function header1 will contain 
+   //!
+   //! <b>Effects</b>: Swaps two trees. After the function header1 will contain
    //!   links to the second tree and header2 will have links to the first tree.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
    static void swap_tree(const node_ptr & header1, const node_ptr & header2)
    {  return tree_algorithms::swap_tree(header1, header2);  }
@@ -351,16 +351,16 @@
    //!   "commit_data" must have been obtained from a previous call to
    //!   "insert_unique_check". No objects should have been inserted or erased
    //!   from the set between the "insert_unique_check" that filled "commit_data"
-   //!   and the call to "insert_commit". 
-   //! 
-   //! 
+   //!   and the call to "insert_commit".
+   //!
+   //!
    //! <b>Effects</b>: Inserts new_node in the set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_unique_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
@@ -372,7 +372,7 @@
    //!   KeyNodePtrCompare is a function object that induces a strict weak
    //!   ordering compatible with the strict weak ordering used to create the
    //!   the tree. NodePtrCompare compares KeyType with a node_ptr.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if there is an equivalent node to "key" in the
    //!   tree according to "comp" and obtains the needed information to realize
    //!   a constant-time node insertion if there is no equivalent node.
@@ -383,11 +383,11 @@
    //!   in the returned pair's boolean and fills "commit_data" that is meant to
    //!   be used with the "insert_commit" function to achieve a constant-time
    //!   insertion function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If "comp" throws.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a node is expensive and the user does not want to have two equivalent nodes
    //!   in the tree: if there is an equivalent value
@@ -432,7 +432,7 @@
    //!   "key" according to "comp" or "header" if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr find
@@ -457,7 +457,7 @@
    //!   if they there are no equivalent elements.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static std::pair<node_ptr, node_ptr> equal_range
@@ -483,7 +483,7 @@
    //!   not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr lower_bound
@@ -506,7 +506,7 @@
    //!   than "key" according to "comp" or "header" if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr upper_bound
@@ -525,14 +525,14 @@
    //!   ordering compatible with the strict weak ordering used to create the
    //!   the tree. NodePtrCompare compares two node_ptrs. "hint" is node from
    //!   the "header"'s tree.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree, using "hint" as a hint to
    //!   where it will be inserted. If "hint" is the upper_bound
    //!   the insertion takes constant time (two comparisons in the worst case).
    //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time if new_node is inserted immediately before "hint".
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class NodePtrCompare>
    static node_ptr insert_equal
@@ -548,13 +548,13 @@
    //!   "pos" must be an iterator pointing to the successor to "new_node"
    //!   once inserted according to the order of already inserted nodes. This function does not
    //!   check "pos" and this precondition must be guaranteed by the caller.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree before "pos".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: If "pos" is not the successor of the newly inserted "new_node"
    //! tree invariants might be broken.
    static node_ptr insert_before
@@ -568,13 +568,13 @@
    //! <b>Requires</b>: "header" must be the header node of a tree.
    //!   "new_node" must be, according to the used ordering no less than the
    //!   greatest inserted key.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree before "pos".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: If "new_node" is less than the greatest inserted key
    //! tree invariants are broken. This function is slightly faster than
    //! using "insert_before".
@@ -587,13 +587,13 @@
    //! <b>Requires</b>: "header" must be the header node of a tree.
    //!   "new_node" must be, according to the used ordering, no greater than the
    //!   lowest inserted key.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree before "pos".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: If "new_node" is greater than the lowest inserted key
    //! tree invariants are broken. This function is slightly faster than
    //! using "insert_before".
@@ -610,10 +610,10 @@
    //!
    //! <b>Effects</b>: Inserts new_node into the tree before the upper bound
    //!   according to "comp".
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class NodePtrCompare>
    static node_ptr insert_equal_upper_bound
@@ -630,10 +630,10 @@
    //!
    //! <b>Effects</b>: Inserts new_node into the tree before the lower bound
    //!   according to "comp".
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class NodePtrCompare>
    static node_ptr insert_equal_lower_bound
@@ -647,18 +647,18 @@
    //!   object taking a node_ptr and returning a new cloned node of it. "disposer" must
    //!   take a node_ptr and shouldn't throw.
    //!
-   //! <b>Effects</b>: First empties target tree calling 
+   //! <b>Effects</b>: First empties target tree calling
    //!   <tt>void disposer::operator()(const node_ptr &)</tt> for every node of the tree
    //!    except the header.
-   //!    
+   //!   
    //!   Then, duplicates the entire tree pointed by "source_header" cloning each
-   //!   source node with <tt>node_ptr Cloner::operator()(const node_ptr &)</tt> to obtain 
+   //!   source node with <tt>node_ptr Cloner::operator()(const node_ptr &)</tt> to obtain
    //!   the nodes of the target tree. If "cloner" throws, the cloned target nodes
    //!   are disposed using <tt>void disposer(const node_ptr &)</tt>.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of element of the source tree plus the.
    //!   number of elements of tree target tree when calling this function.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner functor throws. If this happens target nodes are disposed.
    template <class Cloner, class Disposer>
    static void clone
@@ -723,13 +723,13 @@
       node_ptr t(header);
 
       if( n == t ) return;
-      
+     
       for( ;; ){
          node_ptr p(NodeTraits::get_parent(n));
          node_ptr g(NodeTraits::get_parent(p));
 
          if( p == t )   break;
-         
+        
          if( g == t ){
             // zig
             rotate(n);
@@ -841,23 +841,23 @@
    }
 
    //! <b>Requires</b>: header must be the header of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Rebalances the tree.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear.
    static void rebalance(const node_ptr & header)
    {  tree_algorithms::rebalance(header); }
 
    //! <b>Requires</b>: old_root is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
    //!
    //! <b>Returns</b>: The new root of the subtree.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear.
    static node_ptr rebalance_subtree(const node_ptr & old_root)
    {  return tree_algorithms::rebalance_subtree(old_root); }
@@ -868,7 +868,7 @@
    //! <b>Effects</b>: Returns a pointer to the header node of the tree.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr get_header(const node_ptr & n)
    {  return tree_algorithms::get_header(n);   }
@@ -926,10 +926,10 @@
    {
       node_ptr p = NodeTraits::get_parent(n);
       node_ptr g = NodeTraits::get_parent(p);
-      //Test if g is header before breaking tree 
+      //Test if g is header before breaking tree
       //invariants that would make is_header invalid
       bool g_is_header = is_header(g);
-      
+     
       if(NodeTraits::get_left(p) == n){
          NodeTraits::set_left(p, NodeTraits::get_right(n));
          if(NodeTraits::get_left(p) != node_ptr())
@@ -965,8 +965,8 @@
    /// @endcond
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/treap.hpp
==============================================================================
--- trunk/boost/intrusive/treap.hpp	(original)
+++ trunk/boost/intrusive/treap.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -66,7 +66,7 @@
 /// @endcond
 
 //! The class template treap is an intrusive treap container that
-//! is used to construct intrusive set and multiset containers. The no-throw 
+//! is used to construct intrusive set and multiset containers. The no-throw
 //! guarantee holds only, if the value_compare object and priority_compare object
 //! don't throw.
 //!
@@ -133,7 +133,7 @@
    //noncopyable
    BOOST_MOVABLE_BUT_NOT_COPYABLE(treap_impl)
 
-   enum { safemode_or_autounlink  = 
+   enum { safemode_or_autounlink  =
             (int)real_value_traits::link_mode == (int)auto_unlink   ||
             (int)real_value_traits::link_mode == (int)safe_link     };
 
@@ -167,7 +167,7 @@
       {}
       node_plus_pred_t node_plus_pred_;
    } data_;
-  
+ 
    const value_compare &priv_comp() const
    {  return data_.node_plus_pred_.get();  }
 
@@ -225,19 +225,19 @@
 
    typedef typename node_algorithms::insert_commit_data insert_commit_data;
 
-   //! <b>Effects</b>: Constructs an empty treap. 
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //! <b>Effects</b>: Constructs an empty treap.
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
    //!   or the copy constructor of the value_compare/priority_compare objects throw. Basic guarantee.
    treap_impl( const value_compare &cmp    = value_compare()
             , const priority_compare &pcmp = priority_compare()
-            , const value_traits &v_traits = value_traits()) 
+            , const value_traits &v_traits = value_traits())
       :  data_(cmp, pcmp, v_traits)
-   {  
-      node_algorithms::init_header(this->priv_header_ptr());  
+   { 
+      node_algorithms::init_header(this->priv_header_ptr()); 
       this->priv_size_traits().set_size(size_type(0));
    }
 
@@ -249,10 +249,10 @@
    //!
    //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise N * log N, where N is the distance between first and last.
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare/priority_compare objects 
+   //!   or the copy constructor/operator() of the value_compare/priority_compare objects
    //!   throw. Basic guarantee.
    template<class Iterator>
    treap_impl( bool unique, Iterator b, Iterator e
@@ -270,61 +270,61 @@
    }
 
    //! <b>Effects</b>: to-do
-   //!   
+   //!  
    treap_impl(BOOST_RV_REF(treap_impl) x)
       : data_( ::boost::move(x.priv_comp())
              , ::boost::move(x.priv_pcomp())
              , ::boost::move(x.priv_value_traits()))
    {
-      node_algorithms::init_header(this->priv_header_ptr());  
+      node_algorithms::init_header(this->priv_header_ptr()); 
       this->priv_size_traits().set_size(size_type(0));
       this->swap(x);
    }
 
    //! <b>Effects</b>: to-do
-   //!   
-   treap_impl& operator=(BOOST_RV_REF(treap_impl) x) 
+   //!  
+   treap_impl& operator=(BOOST_RV_REF(treap_impl) x)
    {  this->swap(x); return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the set 
-   //!   are not deleted (i.e. no destructors are called), but the nodes according to 
-   //!   the value_traits template parameter are reinitialized and thus can be reused. 
-   //! 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the set
+   //!   are not deleted (i.e. no destructors are called), but the nodes according to
+   //!   the value_traits template parameter are reinitialized and thus can be reused.
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this
    //!   if constant-time size option is disabled. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~treap_impl() 
+   ~treap_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    {  return iterator (node_traits::get_left(this->priv_header_ptr()), this);   }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    {  return this->cbegin();   }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    {  return const_iterator (node_traits::get_left(this->priv_header_ptr()), this);   }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    {  return iterator (this->priv_header_ptr(), this);  }
@@ -332,198 +332,198 @@
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the treap.
    //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    {  return this->cend();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    {  return const_iterator (uncast(this->priv_header_ptr()), this);  }
 
 
    //! <b>Effects</b>: Returns an iterator pointing to the highest priority object of the treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator top()
    {  return this->empty() ? this->end() : iterator (node_traits::get_parent(this->priv_header_ptr()), this);   }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the highest priority object of the treap..
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator top() const
    {  return this->ctop();   }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the highest priority object of the treap..
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator ctop() const
    {  return this->empty() ? this->cend() : const_iterator (node_traits::get_parent(this->priv_header_ptr()), this);   }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    {  return reverse_iterator(this->end());  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    {  return const_reverse_iterator(this->end());  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    {  return const_reverse_iterator(this->end());  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    {  return reverse_iterator(this->begin());   }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    {  return const_reverse_iterator(this->begin());   }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    {  return const_reverse_iterator(this->begin());   }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the highest priority object of the
    //!    reversed treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rtop()
    {  return reverse_iterator(this->top());  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the highest priority objec
    //!    of the reversed treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rtop() const
    {  return const_reverse_iterator(this->top());  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the highest priority object
    //!    of the reversed treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crtop() const
    {  return const_reverse_iterator(this->top());  }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of treap.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the treap associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static treap_impl &container_from_end_iterator(iterator end_iterator)
    {  return priv_container_from_end_iterator(end_iterator);   }
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of treap.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the treap associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const treap_impl &container_from_end_iterator(const_iterator end_iterator)
    {  return priv_container_from_end_iterator(end_iterator);   }
 
    //! <b>Precondition</b>: it must be a valid iterator
    //!   of treap.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the treap associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static treap_impl &container_from_iterator(iterator it)
    {  return priv_container_from_iterator(it);   }
 
    //! <b>Precondition</b>: it must be a valid end const_iterator
    //!   of treap.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the treap associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static const treap_impl &container_from_iterator(const_iterator it)
    {  return priv_container_from_iterator(it);   }
 
    //! <b>Effects</b>: Returns the value_compare object used by the treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    {  return this->priv_comp();   }
 
    //! <b>Effects</b>: Returns the priority_compare object used by the treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If priority_compare copy-constructor throws.
    priority_compare priority_comp() const
    {  return this->priv_pcomp();   }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    {  return node_algorithms::unique(this->priv_header_ptr());   }
 
    //! <b>Effects</b>: Returns the number of elements stored in the treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this
    //!   if constant-time size option is disabled. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    {
@@ -535,9 +535,9 @@
    }
 
    //! <b>Effects</b>: Swaps the contents of two treaps.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the comparison functor's swap call throws.
    void swap(treap_impl& other)
    {
@@ -555,14 +555,14 @@
    }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the treap before the upper bound.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare or priority_compare functions throw. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_equal(reference value)
@@ -582,16 +582,16 @@
 
    //! <b>Requires</b>: value must be an lvalue, and "hint" must be
    //!   a valid iterator.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts x into the treap, using "hint" as a hint to
    //!   where it will be inserted. If "hint" is the upper_bound
    //!   the insertion takes constant time (two comparisons in the worst case)
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare or priority_compare functions throw. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_equal(const_iterator hint, reference value)
@@ -609,19 +609,19 @@
       return ret;
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a each element of a range into the treap
    //!   before the upper bound of the key of each element.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare or priority_compare functions throw.
    //!   Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -633,16 +633,16 @@
    }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the treap if the value
    //!   is not already present.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare or priority_compare functions throw.
    //!   Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    std::pair<iterator, bool> insert_unique(reference value)
@@ -656,17 +656,17 @@
 
    //! <b>Requires</b>: value must be an lvalue, and "hint" must be
    //!   a valid iterator
-   //! 
+   //!
    //! <b>Effects</b>: Tries to insert x into the treap, using "hint" as a hint
    //!   to where it will be inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time (two comparisons in the worst case)
    //!   if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare or priority_compare functions throw.
    //!   Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert_unique(const_iterator hint, reference value)
@@ -678,18 +678,18 @@
       return insert_unique_commit(value, commit_data);
    }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Tries to insert each element of a range into the treap.
-   //! 
-   //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the 
-   //!   size of the range. However, it is linear in N if the range is already sorted 
+   //!
+   //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
+   //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare or priority_compare functions throw.
    //!   Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -706,12 +706,12 @@
       }
    }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare.
-   //!   key_value_pcomp must be a comparison function that induces 
+   //!   key_value_pcomp must be a comparison function that induces
    //!   the same strict weak ordering as priority_compare. The difference is that
    //!   key_value_pcomp and key_value_comp compare an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the container, using
    //!   a user provided key instead of the value itself.
    //!
@@ -720,17 +720,17 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If the key_value_comp or key_value_pcomp
    //!   ordering functions throw. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   node that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that 
+   //!   than the value_type and this function offers the possibility to use that
    //!   part to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
@@ -748,20 +748,20 @@
          comp(key_value_comp, this);
       detail::key_nodeptr_comp<KeyValuePrioCompare, treap_impl>
          pcomp(key_value_pcomp, this);
-      std::pair<node_ptr, bool> ret = 
+      std::pair<node_ptr, bool> ret =
          (node_algorithms::insert_unique_check
             (this->priv_header_ptr(), key, comp, pcomp, commit_data));
       return std::pair<iterator, bool>(iterator(ret.first, this), ret.second);
    }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare.
-   //!   key_value_pcomp must be a comparison function that induces 
+   //!   key_value_pcomp must be a comparison function that induces
    //!   the same strict weak ordering as priority_compare. The difference is that
    //!   key_value_pcomp and key_value_comp compare an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the container, using
-   //!   a user provided key instead of the value itself, using "hint" 
+   //!   a user provided key instead of the value itself, using "hint"
    //!   as a hint to where it will be inserted.
    //!
    //! <b>Returns</b>: If there is an equivalent value
@@ -769,24 +769,24 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
    //!
    //! <b>Throws</b>: If the key_value_comp or key_value_pcomp
    //!   ordering functions throw. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   constructing that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that key 
+   //!   than the value_type and this function offers the possibility to use that key
    //!   to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
    //!   "insert_commit" to insert the object in constant-time. This can give a total
    //!   constant-time complexity to the insertion: check(O(1)) + commit(O(1)).
-   //!   
+   //!  
    //!   "commit_data" remains valid for a subsequent "insert_commit" only if no more
    //!   objects are inserted or erased from the container.
    template<class KeyType, class KeyValueCompare, class KeyValuePrioCompare>
@@ -800,7 +800,7 @@
          comp(key_value_comp, this);
       detail::key_nodeptr_comp<KeyValuePrioCompare, treap_impl>
          pcomp(key_value_pcomp, this);
-      std::pair<node_ptr, bool> ret = 
+      std::pair<node_ptr, bool> ret =
          (node_algorithms::insert_unique_check
             (this->priv_header_ptr(), hint.pointed_node(), key, comp, pcomp, commit_data));
       return std::pair<iterator, bool>(iterator(ret.first, this), ret.second);
@@ -810,16 +810,16 @@
    //!   must have been obtained from a previous call to "insert_check".
    //!   No objects should have been inserted or erased from the container between
    //!   the "insert_check" that filled "commit_data" and the call to "insert_commit".
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the avl_set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Returns</b>: An iterator to the newly inserted object.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
@@ -838,11 +838,11 @@
    //!   once inserted according to the predicate
    //!
    //! <b>Effects</b>: Inserts x into the treap before "pos".
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if "pos" is not
    //! the successor of "value" treap ordering invariant will be broken.
    //! This is a low-level function to be used only for performance reasons
@@ -864,11 +864,11 @@
    //!   than the greatest inserted key
    //!
    //! <b>Effects</b>: Inserts x into the treap in the last position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   less than the greatest inserted key treap ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -889,11 +889,11 @@
    //!   than the minimum inserted key
    //!
    //! <b>Effects</b>: Inserts x into the treap in the first position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   greater than the minimum inserted key treap ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -910,12 +910,12 @@
       this->priv_size_traits().increment();
    }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: if the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
@@ -934,26 +934,26 @@
       return ret.unconst();
    }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: if the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, const_iterator e)
    {  size_type n;   return private_erase(b, e, n);   }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: if the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -963,12 +963,12 @@
    //!   according to the comparison functor "comp".
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: if the internal priority_compare function throws.
    //!   Equivalent guarantee to <i>while(beg != end) erase(beg++);</i>
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
@@ -986,14 +986,14 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: if the internal priority_compare function throws. Strong guarantee.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -1014,12 +1014,12 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: if the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -1030,14 +1030,14 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: if the priority_compare function throws then weak guarantee and heap invariants are broken.
    //!   The safest thing would be to clear or destroy the container.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1056,12 +1056,12 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + N).
-   //! 
+   //!
    //! <b>Throws</b>: if the priority_compare function throws then weak guarantee and heap invariants are broken.
    //!   The safest thing would be to clear or destroy the container.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -1077,13 +1077,13 @@
       return n;
    }
 
-   //! <b>Effects</b>: Erases all of the elements. 
-   //! 
+   //! <b>Effects</b>: Erases all of the elements.
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
@@ -1101,9 +1101,9 @@
    //!   each node to be erased.
    //! <b>Complexity</b>: Average complexity for is at most O(log(size() + N)),
    //!   where N is the number of elements in the container.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. Calls N times to disposer functor.
    template<class Disposer>
@@ -1116,19 +1116,19 @@
    }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given value
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given value.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type count(const_reference value) const
    {  return this->count(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType &key, KeyValueCompare comp) const
@@ -1139,27 +1139,27 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator lower_bound(const_reference value)
    {  return this->lower_bound(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator lower_bound(const_reference value) const
    {  return this->lower_bound(value, priv_comp());   }
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator lower_bound(const KeyType &key, KeyValueCompare comp)
@@ -1172,9 +1172,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator lower_bound(const KeyType &key, KeyValueCompare comp) const
@@ -1187,9 +1187,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator upper_bound(const_reference value)
    {  return this->upper_bound(value, priv_comp());   }
@@ -1199,7 +1199,7 @@
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator upper_bound(const KeyType &key, KeyValueCompare comp)
@@ -1212,9 +1212,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator upper_bound(const_reference value) const
    {  return this->upper_bound(value, priv_comp());   }
@@ -1224,7 +1224,7 @@
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator upper_bound(const KeyType &key, KeyValueCompare comp) const
@@ -1235,20 +1235,20 @@
          (this->priv_header_ptr(), key, key_node_comp), this);
    }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   k or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator find(const_reference value)
    {  return this->find(value, priv_comp()); }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   k or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    iterator find(const KeyType &key, KeyValueCompare comp)
@@ -1259,20 +1259,20 @@
          (node_algorithms::find(this->priv_header_ptr(), key, key_node_comp), this);
    }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
    //!   k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator find(const_reference value) const
    {  return this->find(value, priv_comp()); }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
    //!   k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    const_iterator find(const KeyType &key, KeyValueCompare comp) const
@@ -1286,9 +1286,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return this->equal_range(value, priv_comp());   }
@@ -1296,9 +1296,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    std::pair<iterator,iterator> equal_range(const KeyType &key, KeyValueCompare comp)
@@ -1313,9 +1313,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
@@ -1324,9 +1324,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    template<class KeyType, class KeyValueCompare>
    std::pair<const_iterator, const_iterator>
@@ -1343,15 +1343,15 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const treap_impl &src, Cloner cloner, Disposer disposer)
@@ -1372,11 +1372,11 @@
    }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the treap.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the treap and the treap can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -1395,14 +1395,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any treap.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   treap with with_this. The treap does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering and priority rules. This function is faster than erasing and inserting
@@ -1418,14 +1418,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -1436,17 +1436,17 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
-   static const_iterator s_iterator_to(const_reference value) 
+   static const_iterator s_iterator_to(const_reference value)
    {
       BOOST_STATIC_ASSERT((!stateful_value_traits));
       return const_iterator (value_traits::to_node_ptr(const_cast<reference> (value)), 0);
@@ -1454,37 +1454,37 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return iterator (value_traits::to_node_ptr(value), this); }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return const_iterator (value_traits::to_node_ptr(const_cast<reference> (value)), this); }
 
    //! <b>Requires</b>: value shall not be in a treap.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
@@ -1658,7 +1658,7 @@
 struct make_treap_opt
 {
    typedef typename pack_options
-      < treap_set_defaults<T>, 
+      < treap_set_defaults<T>,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -1690,7 +1690,7 @@
 {
    /// @cond
    typedef treap_impl
-      < typename make_treap_opt<T, 
+      < typename make_treap_opt<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -1710,7 +1710,7 @@
 template<class T, class ...Options>
 #endif
 class treap
-   :  public make_trie<T, 
+   :  public make_trie<T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -1719,7 +1719,7 @@
       >::type
 {
    typedef typename make_trie
-      <T, 
+      <T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -1776,8 +1776,8 @@
 #endif
 
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/treap_algorithms.hpp
==============================================================================
--- trunk/boost/intrusive/treap_algorithms.hpp	(original)
+++ trunk/boost/intrusive/treap_algorithms.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -28,15 +28,15 @@
 namespace boost {
 namespace intrusive {
 
-//! treap_algorithms provides basic algorithms to manipulate 
+//! treap_algorithms provides basic algorithms to manipulate
 //! nodes forming a treap.
-//! 
+//!
 //! (1) the header node is maintained with links not only to the root
 //! but also to the leftmost node of the tree, to enable constant time
 //! begin(), and to the rightmost node of the tree, to enable linear time
 //! performance when used with the generic set algorithms (set_union,
 //! etc.);
-//! 
+//!
 //! (2) when a node being deleted has two children its successor node is
 //! relinked into its place, rather than copied, so that the only
 //! pointers invalidated are those referring to the deleted node.
@@ -56,15 +56,15 @@
 //! <b>Static functions</b>:
 //!
 //! <tt>static node_ptr get_parent(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_parent(node_ptr n, node_ptr parent);</tt>
 //!
 //! <tt>static node_ptr get_left(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_left(node_ptr n, node_ptr left);</tt>
 //!
 //! <tt>static node_ptr get_right(const_node_ptr n);</tt>
-//! 
+//!
 //! <tt>static void set_right(node_ptr n, node_ptr right);</tt>
 template<class NodeTraits>
 class treap_algorithms
@@ -92,7 +92,7 @@
             tree_algorithms::erase(header_, z_);
          }
       }
-      
+     
       void release()
       {  remove_it_ = false;  }
 
@@ -117,7 +117,7 @@
             rotate_up_n(header_, p_, n_);
          }
       }
-      
+     
       void release()
       {  remove_it_ = false;  }
 
@@ -170,27 +170,27 @@
 
    //! <b>Requires</b>: header1 and header2 must be the header nodes
    //!  of two trees.
-   //! 
-   //! <b>Effects</b>: Swaps two trees. After the function header1 will contain 
+   //!
+   //! <b>Effects</b>: Swaps two trees. After the function header1 will contain
    //!   links to the second tree and header2 will have links to the first tree.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
    static void swap_tree(const node_ptr & header1, const node_ptr & header2)
    {  return tree_algorithms::swap_tree(header1, header2);  }
 
    //! <b>Requires</b>: node1 and node2 can't be header nodes
    //!  of two trees.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps two nodes. After the function node1 will be inserted
    //!   in the position node2 before the function. node2 will be inserted in the
    //!   position node1 had before the function.
-   //! 
-   //! <b>Complexity</b>: Logarithmic. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Logarithmic.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   node1 and node2 are not equivalent according to the ordering rules.
    //!
@@ -199,22 +199,22 @@
    {
       if(node1 == node2)
          return;
-   
+  
       node_ptr header1(tree_algorithms::get_header(node1)), header2(tree_algorithms::get_header(node2));
       swap_nodes(node1, header1, node2, header2);
    }
 
    //! <b>Requires</b>: node1 and node2 can't be header nodes
    //!  of two trees with header header1 and header2.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps two nodes. After the function node1 will be inserted
    //!   in the position node2 before the function. node2 will be inserted in the
    //!   position node1 had before the function.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   node1 and node2 are not equivalent according to the ordering rules.
    //!
@@ -224,14 +224,14 @@
 
    //! <b>Requires</b>: node_to_be_replaced must be inserted in a tree
    //!   and new_node must not be inserted in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces node_to_be_replaced in its position in the
    //!   tree with new_node. The tree does not need to be rebalanced
-   //! 
-   //! <b>Complexity</b>: Logarithmic. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Logarithmic.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   new_node is not equivalent to node_to_be_replaced according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -247,14 +247,14 @@
 
    //! <b>Requires</b>: node_to_be_replaced must be inserted in a tree
    //!   with header "header" and new_node must not be inserted in a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces node_to_be_replaced in its position in the
    //!   tree with new_node. The tree does not need to be rebalanced
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   new_node is not equivalent to node_to_be_replaced according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -265,11 +265,11 @@
    {  tree_algorithms::replace_node(node_to_be_replaced, header, new_node);  }
 
    //! <b>Requires</b>: node is a tree node but not the header.
-   //! 
+   //!
    //! <b>Effects</b>: Unlinks the node and rebalances the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: If "pcomp" throws, strong guarantee
    template<class NodePtrPriorityCompare>
    static void unlink(const node_ptr & node, NodePtrPriorityCompare pcomp)
@@ -283,14 +283,14 @@
    }
 
    //! <b>Requires</b>: header is the header of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Unlinks the leftmost node from the tree, and
    //!   updates the header link to the new leftmost node.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -300,51 +300,51 @@
 
    //! <b>Requires</b>: node is a node of the tree or an node initialized
    //!   by init(...).
-   //! 
+   //!
    //! <b>Effects</b>: Returns true if the node is initialized by init().
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool unique(const const_node_ptr & node)
    {  return tree_algorithms::unique(node);  }
 
    //! <b>Requires</b>: node is a node of the tree but it's not the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes of the subtree.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static std::size_t count(const const_node_ptr & node)
    {  return tree_algorithms::count(node);   }
 
    //! <b>Requires</b>: header is the header node of the tree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the number of nodes above the header.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static std::size_t size(const const_node_ptr & header)
    {  return tree_algorithms::size(header);   }
 
    //! <b>Requires</b>: p is a node from the tree except the header.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the next node of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr next_node(const node_ptr & p)
    {  return tree_algorithms::next_node(p); }
 
    //! <b>Requires</b>: p is a node from the tree except the leftmost node.
-   //! 
+   //!
    //! <b>Effects</b>: Returns the previous node of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr prev_node(const node_ptr & p)
    {  return tree_algorithms::prev_node(p); }
@@ -352,9 +352,9 @@
    //! <b>Requires</b>: node must not be part of any tree.
    //!
    //! <b>Effects</b>: After the function unique(node) == true.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
@@ -365,9 +365,9 @@
    //!
    //! <b>Effects</b>: Initializes the header to represent an empty tree.
    //!   unique(header) == true.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    //!
    //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
@@ -380,9 +380,9 @@
    //!    of that tree and z != header.
    //!
    //! <b>Effects</b>: Erases node "z" from the tree with header "header".
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized constant time.
-   //! 
+   //!
    //! <b>Throws</b>: If "pcomp" throws, strong guarantee.
    template<class NodePtrPriorityCompare>
    static node_ptr erase(const node_ptr & header, const node_ptr & z, NodePtrPriorityCompare pcomp)
@@ -397,18 +397,18 @@
    //!   object taking a node_ptr and returning a new cloned node of it. "disposer" must
    //!   take a node_ptr and shouldn't throw.
    //!
-   //! <b>Effects</b>: First empties target tree calling 
+   //! <b>Effects</b>: First empties target tree calling
    //!   <tt>void disposer::operator()(const node_ptr &)</tt> for every node of the tree
    //!    except the header.
-   //!    
+   //!   
    //!   Then, duplicates the entire tree pointed by "source_header" cloning each
-   //!   source node with <tt>node_ptr Cloner::operator()(const node_ptr &)</tt> to obtain 
+   //!   source node with <tt>node_ptr Cloner::operator()(const node_ptr &)</tt> to obtain
    //!   the nodes of the target tree. If "cloner" throws, the cloned target nodes
    //!   are disposed using <tt>void disposer(const node_ptr &)</tt>.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of element of the source tree plus the.
    //!   number of elements of tree target tree when calling this function.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner functor throws. If this happens target nodes are disposed.
    template <class Cloner, class Disposer>
    static void clone
@@ -420,13 +420,13 @@
    //! <b>Requires</b>: "disposer" must be an object function
    //!   taking a node_ptr parameter and shouldn't throw.
    //!
-   //! <b>Effects</b>: Empties the target tree calling 
+   //! <b>Effects</b>: Empties the target tree calling
    //!   <tt>void disposer::operator()(const node_ptr &)</tt> for every node of the tree
    //!    except the header.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of element of the source tree plus the.
    //!   number of elements of tree target tree when calling this function.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner functor throws. If this happens target nodes are disposed.
    template<class Disposer>
    static void clear_and_dispose(const node_ptr & header, Disposer disposer)
@@ -442,7 +442,7 @@
    //!   not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr lower_bound
@@ -458,7 +458,7 @@
    //!   than "key" according to "comp" or "header" if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr upper_bound
@@ -474,7 +474,7 @@
    //!   "key" according to "comp" or "header" if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static node_ptr find
@@ -492,7 +492,7 @@
    //!   if they there are no equivalent elements.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class KeyType, class KeyNodePtrCompare>
    static std::pair<node_ptr, node_ptr> equal_range
@@ -509,10 +509,10 @@
    //!
    //! <b>Effects</b>: Inserts new_node into the tree before the upper bound
    //!   according to "comp" and rotates the tree according to "pcomp".
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throw or "pcomp" throw.
    template<class NodePtrCompare, class NodePtrPriorityCompare>
    static node_ptr insert_equal_upper_bound
@@ -534,10 +534,10 @@
    //!
    //! <b>Effects</b>: Inserts new_node into the tree before the upper bound
    //!   according to "comp" and rotates the tree according to "pcomp".
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throws.
    template<class NodePtrCompare, class NodePtrPriorityCompare>
    static node_ptr insert_equal_lower_bound
@@ -557,7 +557,7 @@
    //!   NodePtrPriorityCompare is a priority function object that induces a strict weak
    //!   ordering compatible with the one used to create the
    //!   the tree. NodePtrPriorityCompare compares two node_ptrs.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree, using "hint" as a hint to
    //!   where it will be inserted. If "hint" is the upper_bound
    //!   the insertion takes constant time (two comparisons in the worst case).
@@ -565,7 +565,7 @@
    //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time if new_node is inserted immediately before "hint".
-   //! 
+   //!
    //! <b>Throws</b>: If "comp" throw or "pcomp" throw.
    template<class NodePtrCompare, class NodePtrPriorityCompare>
    static node_ptr insert_equal
@@ -585,14 +585,14 @@
    //!   NodePtrPriorityCompare is a priority function object that induces a strict weak
    //!   ordering compatible with the one used to create the
    //!   the tree. NodePtrPriorityCompare compares two node_ptrs.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts new_node into the tree before "pos"
    //!   and rotates the tree according to "pcomp".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: If "pcomp" throws, strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: If "pos" is not the successor of the newly inserted "new_node"
    //! tree invariants might be broken.
    template<class NodePtrPriorityCompare>
@@ -611,14 +611,14 @@
    //!   NodePtrPriorityCompare is a priority function object that induces a strict weak
    //!   ordering compatible with the one used to create the
    //!   the tree. NodePtrPriorityCompare compares two node_ptrs.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts x into the tree in the last position
    //!   and rotates the tree according to "pcomp".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: If "pcomp" throws, strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: If "new_node" is less than the greatest inserted key
    //! tree invariants are broken. This function is slightly faster than
    //! using "insert_before".
@@ -636,14 +636,14 @@
    //!   NodePtrPriorityCompare is a priority function object that induces a strict weak
    //!   ordering compatible with the one used to create the
    //!   the tree. NodePtrPriorityCompare compares two node_ptrs.
-   //!   
+   //!  
    //! <b>Effects</b>: Inserts x into the tree in the first position
    //!   and rotates the tree according to "pcomp".
    //!
    //! <b>Complexity</b>: Constant-time.
-   //! 
+   //!
    //! <b>Throws</b>: If "pcomp" throws, strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: If "new_node" is greater than the lowest inserted key
    //! tree invariants are broken. This function is slightly faster than
    //! using "insert_before".
@@ -659,7 +659,7 @@
    //!   KeyNodePtrCompare is a function object that induces a strict weak
    //!   ordering compatible with the strict weak ordering used to create the
    //!   the tree. NodePtrCompare compares KeyType with a node_ptr.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if there is an equivalent node to "key" in the
    //!   tree according to "comp" and obtains the needed information to realize
    //!   a constant-time node insertion if there is no equivalent node.
@@ -670,11 +670,11 @@
    //!   in the returned pair's boolean and fills "commit_data" that is meant to
    //!   be used with the "insert_commit" function to achieve a constant-time
    //!   insertion function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If "comp" throws.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a node is expensive and the user does not want to have two equivalent nodes
    //!   in the tree: if there is an equivalent value
@@ -707,12 +707,12 @@
    //!   ordering compatible with the strict weak ordering used to create the
    //!   the tree. NodePtrCompare compares KeyType with a node_ptr.
    //!   "hint" is node from the "header"'s tree.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if there is an equivalent node to "key" in the
    //!   tree according to "comp" using "hint" as a hint to where it should be
    //!   inserted and obtains the needed information to realize
-   //!   a constant-time node insertion if there is no equivalent node. 
-   //!   If "hint" is the upper_bound the function has constant time 
+   //!   a constant-time node insertion if there is no equivalent node.
+   //!   If "hint" is the upper_bound the function has constant time
    //!   complexity (two comparisons in the worst case).
    //!
    //! <b>Returns</b>: If there is an equivalent value
@@ -721,12 +721,12 @@
    //!   in the returned pair's boolean and fills "commit_data" that is meant to
    //!   be used with the "insert_commit" function to achieve a constant-time
    //!   insertion function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic, but it is
    //!   amortized constant time if new_node should be inserted immediately before "hint".
    //!
    //! <b>Throws</b>: If "comp" throws.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a node is expensive and the user does not want to have two equivalent nodes
    //!   in the tree: if there is an equivalent value
@@ -757,16 +757,16 @@
    //!   "commit_data" must have been obtained from a previous call to
    //!   "insert_unique_check". No objects should have been inserted or erased
    //!   from the set between the "insert_unique_check" that filled "commit_data"
-   //!   and the call to "insert_commit". 
-   //! 
-   //! 
+   //!   and the call to "insert_commit".
+   //!
+   //!
    //! <b>Effects</b>: Inserts new_node in the set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_unique_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
@@ -782,7 +782,7 @@
    //! <b>Effects</b>: Returns a pointer to the header node of the tree.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static node_ptr get_header(const node_ptr & n)
    {  return tree_algorithms::get_header(n);   }
@@ -791,11 +791,11 @@
    private:
 
    //! <b>Requires</b>: p is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Returns true if p is the header of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static bool is_header(const const_node_ptr & p)
    {
@@ -887,8 +887,8 @@
    /// @endcond
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/treap_set.hpp
==============================================================================
--- trunk/boost/intrusive/treap_set.hpp	(original)
+++ trunk/boost/intrusive/treap_set.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -22,9 +22,9 @@
 namespace boost {
 namespace intrusive {
 
-//! The class template treap_set is an intrusive container, that mimics most of 
+//! The class template treap_set is an intrusive container, that mimics most of
 //! the interface of std::set as described in the C++ standard.
-//! 
+//!
 //! The template parameter \c T is the type to be managed by the container.
 //! The user can specify additional options and if no options are provided
 //! default options are used.
@@ -80,31 +80,31 @@
    /// @endcond
 
    public:
-   //! <b>Effects</b>: Constructs an empty treap_set. 
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //! <b>Effects</b>: Constructs an empty treap_set.
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor of the value_compare object throws. 
+   //!   or the copy constructor of the value_compare object throws.
    treap_set_impl( const value_compare &cmp      = value_compare()
                 , const priority_compare &pcmp  = priority_compare()
-                , const value_traits &v_traits  = value_traits()) 
+                , const value_traits &v_traits  = value_traits())
       :  tree_(cmp, pcmp, v_traits)
    {}
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type. 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
    //!   cmp must be a comparison function that induces a strict weak ordering.
-   //! 
-   //! <b>Effects</b>: Constructs an empty treap_set and inserts elements from 
+   //!
+   //! <b>Effects</b>: Constructs an empty treap_set and inserts elements from
    //!   [b, e).
-   //! 
-   //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using 
+   //!
+   //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise N * log N, where N is std::distance(last, first).
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare object throws. 
+   //!   or the copy constructor/operator() of the value_compare object throws.
    template<class Iterator>
    treap_set_impl( Iterator b, Iterator e
            , const value_compare &cmp = value_compare()
@@ -114,186 +114,186 @@
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   treap_set_impl(BOOST_RV_REF(treap_set_impl) x) 
+   //!  
+   treap_set_impl(BOOST_RV_REF(treap_set_impl) x)
       :  tree_(::boost::move(x.tree_))
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   treap_set_impl& operator=(BOOST_RV_REF(treap_set_impl) x) 
+   //!  
+   treap_set_impl& operator=(BOOST_RV_REF(treap_set_impl) x)
    {  tree_ = ::boost::move(x.tree_);  return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the treap_set 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the treap_set
    //!   are not deleted (i.e. no destructors are called).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~treap_set_impl() 
+   ~treap_set_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    { return tree_.cbegin();  }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns an iterator pointing to the highest priority object of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator top()
    { return tree_.top();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the highest priority object of the tree..
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator top() const
    {  return this->ctop();   }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the highest priority object of the tree..
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator ctop() const
    { return tree_.ctop();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    { return tree_.cend();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    { return tree_.crbegin();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    { return tree_.crend();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the highest priority object of the
    //!    reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rtop()
    {  return tree_.rtop();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the highest priority objec
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rtop() const
    {  return tree_.crtop();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the highest priority object
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crtop() const
    {  return tree_.crtop();  }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of treap_set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the treap_set associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static treap_set_impl &container_from_end_iterator(iterator end_iterator)
    {
@@ -304,11 +304,11 @@
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of treap_set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the treap_set associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const treap_set_impl &container_from_end_iterator(const_iterator end_iterator)
    {
@@ -318,11 +318,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid iterator of set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a reference to the set associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static treap_set_impl &container_from_iterator(iterator it)
    {
@@ -332,11 +332,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid const_iterator of set.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the set associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
    static const treap_set_impl &container_from_iterator(const_iterator it)
    {
@@ -346,50 +346,50 @@
    }
 
    //! <b>Effects</b>: Returns the key_compare object used by the treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If key_compare copy-constructor throws.
    key_compare key_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns the value_compare object used by the treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns the priority_compare object used by the treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If priority_compare copy-constructor throws.
    priority_compare priority_comp() const
    {  return tree_.priority_comp();   }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    { return tree_.empty(); }
 
    //! <b>Effects</b>: Returns the number of elements stored in the treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this if,
    //!   constant-time size option is enabled. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    { return tree_.size(); }
 
    //! <b>Effects</b>: Swaps the contents of two sets.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the swap() call for the comparison functor
    //!   found using ADL throws. Strong guarantee.
    void swap(treap_set_impl& other)
@@ -399,22 +399,22 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const treap_set_impl &src, Cloner cloner, Disposer disposer)
    {  tree_.clone_from(src.tree_, cloner, disposer);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Tries to inserts value into the treap_set.
    //!
    //! <b>Returns</b>: If the value
@@ -422,43 +422,43 @@
    //!   iterator to the new value and true. If there is an equivalent value
    //!   returns a pair containing an iterator to the already present value
    //!   and false.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare or priority_compare ordering function throw.
    //!   Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    std::pair<iterator, bool> insert(reference value)
    {  return tree_.insert_unique(value);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
-   //! <b>Effects</b>: Tries to to insert x into the treap_set, using "hint" 
+   //!
+   //! <b>Effects</b>: Tries to to insert x into the treap_set, using "hint"
    //!   as a hint to where it will be inserted.
    //!
-   //! <b>Returns</b>: An iterator that points to the position where the 
+   //! <b>Returns</b>: An iterator that points to the position where the
    //!   new element was inserted into the treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare or priority_compare ordering
    //!   functions throw. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(const_iterator hint, reference value)
    {  return tree_.insert_unique(hint, value);  }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare.
-   //!   key_value_pcomp must be a comparison function that induces 
+   //!   key_value_pcomp must be a comparison function that induces
    //!   the same strict weak ordering as priority_compare. The difference is that
    //!   key_value_pcomp and key_value_comp compare an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the treap_set, using
    //!   a user provided key instead of the value itself.
    //!
@@ -467,17 +467,17 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is at most logarithmic.
    //!
    //! <b>Throws</b>: If key_value_comp or key_value_pcomp ordering function throw.
    //!    Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   node that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that 
+   //!   than the value_type and this function offers the possibility to use that
    //!   part to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
@@ -492,14 +492,14 @@
       , insert_commit_data &commit_data)
    {  return tree_.insert_unique_check(key, key_value_comp, key_value_pcomp, commit_data); }
 
-   //! <b>Requires</b>: key_value_comp must be a comparison function that induces 
+   //! <b>Requires</b>: key_value_comp must be a comparison function that induces
    //!   the same strict weak ordering as value_compare.
-   //!   key_value_pcomp must be a comparison function that induces 
+   //!   key_value_pcomp must be a comparison function that induces
    //!   the same strict weak ordering as priority_compare. The difference is that
    //!   key_value_pcomp and key_value_comp compare an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the treap_set, using
-   //!   a user provided key instead of the value itself, using "hint" 
+   //!   a user provided key instead of the value itself, using "hint"
    //!   as a hint to where it will be inserted.
    //!
    //! <b>Returns</b>: If there is an equivalent value
@@ -507,24 +507,24 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it's amortized
    //!   constant time if t is inserted immediately before hint.
    //!
    //! <b>Throws</b>: If key_value_comp or key_value_pcomp ordering function throw.
    //!    Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
    //!   constructing that is used to impose the order is much cheaper to construct
-   //!   than the value_type and this function offers the possibility to use that key 
+   //!   than the value_type and this function offers the possibility to use that key
    //!   to check if the insertion will be successful.
    //!
    //!   If the check is successful, the user can construct the value_type and use
    //!   "insert_commit" to insert the object in constant-time. This can give a total
    //!   constant-time complexity to the insertion: check(O(1)) + commit(O(1)).
-   //!   
+   //!  
    //!   "commit_data" remains valid for a subsequent "insert_commit" only if no more
    //!   objects are inserted or erased from the treap_set.
    template<class KeyType, class KeyValueCompare, class KeyValuePriorityCompare>
@@ -538,34 +538,34 @@
    //!   must have been obtained from a previous call to "insert_check".
    //!   No objects should have been inserted or erased from the treap_set between
    //!   the "insert_check" that filled "commit_data" and the call to "insert_commit".
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the treap_set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Returns</b>: An iterator to the newly inserted object.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
    iterator insert_commit(reference value, const insert_commit_data &commit_data)
    {  return tree_.insert_unique_commit(value, commit_data); }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a range into the treap_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare or priority_compare ordering function
    //!   throw. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -578,11 +578,11 @@
    //!   inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the treap before "pos".
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if "pos" is not
    //! the successor of "value" treap ordering invariant will be broken.
    //! This is a low-level function to be used only for performance reasons
@@ -594,11 +594,11 @@
    //!   any inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the treap in the last position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   less than the greatest inserted key treap ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -611,11 +611,11 @@
    //!   than any inserted key according to the predicate.
    //!
    //! <b>Effects</b>: Inserts x into the treap in the first position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   greater than the minimum inserted key treap ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -624,42 +624,42 @@
    void push_front(reference value)
    {  tree_.push_front(value);  }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
    {  return tree_.erase(i);  }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, const_iterator e)
    {  return tree_.erase(b, e);  }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size()) + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If internal value_compare or priority_compare
    //!   ordering functions throw. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -667,14 +667,14 @@
 
    //! <b>Effects</b>: Erases all the elements that compare equal with
    //!   the given key and the given comparison functor.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp or internal priority_compare
    //!   ordering functions throw. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
@@ -687,16 +687,16 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -712,14 +712,14 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -730,13 +730,13 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(value)). Basic guarantee.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -750,12 +750,12 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp or internal priority_compare ordering functions throw.
    //!   Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -767,26 +767,26 @@
    {  return tree_.erase_and_dispose(key, comp, disposer);  }
 
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
    {  return tree_.clear();  }
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
-   //! 
+   //!
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -794,20 +794,20 @@
    {  return tree_.clear_and_dispose(disposer);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    size_type count(const_reference value) const
    {  return tree_.find(value) != end();  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the same key
    //!   compared with the given comparison functor.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType& key, KeyValueCompare comp) const
@@ -815,9 +815,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator lower_bound(const_reference value)
    {  return tree_.lower_bound(value);  }
@@ -827,13 +827,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -843,9 +843,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator lower_bound(const_reference value) const
    {  return tree_.lower_bound(value);  }
@@ -855,13 +855,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -871,9 +871,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator upper_bound(const_reference value)
    {  return tree_.upper_bound(value);  }
@@ -883,11 +883,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -899,9 +899,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator upper_bound(const_reference value) const
    {  return tree_.upper_bound(value);  }
@@ -911,11 +911,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -925,11 +925,11 @@
    const_iterator upper_bound(const KeyType& key, KeyValueCompare comp) const
    {  return tree_.upper_bound(key, comp);  }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator find(const_reference value)
    {  return tree_.find(value);  }
@@ -938,12 +938,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -953,11 +953,11 @@
    iterator find(const KeyType& key, KeyValueCompare comp)
    {  return tree_.find(key, comp);  }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator find(const_reference value) const
    {  return tree_.find(value);  }
@@ -966,12 +966,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -984,9 +984,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return tree_.equal_range(value);  }
@@ -995,13 +995,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1014,9 +1014,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
@@ -1026,13 +1026,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1045,14 +1045,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a treap_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the treap_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -1060,14 +1060,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a treap_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   treap_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static const_iterator s_iterator_to(const_reference value)
@@ -1075,48 +1075,48 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a treap_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the treap_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a treap_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   treap_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value shall not be in a treap_set/treap_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
    { tree_type::init_node(value);   }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -1126,14 +1126,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   tree with with_this. The tree does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -1142,21 +1142,21 @@
    {  tree_.replace_node(replace_this, with_this);   }
 
    //! <b>Effects</b>: Rebalances the tree.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear.
    void rebalance()
    {  tree_.rebalance(); }
 
    //! <b>Requires</b>: old_root is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
    //!
    //! <b>Returns</b>: The new root of the subtree.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements in the subtree.
    iterator rebalance_subtree(iterator root)
    {  return tree_.rebalance_subtree(root); }
@@ -1164,18 +1164,18 @@
    //! <b>Returns</b>: The balance factor (alpha) used in this tree
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    float balance_factor() const
    {  return tree_.balance_factor(); }
 
    //! <b>Requires</b>: new_alpha must be a value between 0.5 and 1.0
-   //! 
+   //!
    //! <b>Effects</b>: Establishes a new balance factor (alpha) and rebalances
    //!   the tree if the new balance factor is stricter (less) than the old factor.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements in the subtree.
    void balance_factor(float new_alpha)
    {  tree_.balance_factor(new_alpha); }
@@ -1266,7 +1266,7 @@
 {
    /// @cond
    typedef treap_set_impl
-      < typename make_treap_opt<T, 
+      < typename make_treap_opt<T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -1286,7 +1286,7 @@
 template<class T, class ...Options>
 #endif
 class treap_set
-   :  public make_treap_set<T, 
+   :  public make_treap_set<T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -1295,7 +1295,7 @@
       >::type
 {
    typedef typename make_treap_set
-      <T, 
+      <T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -1350,9 +1350,9 @@
 
 #endif
 
-//! The class template treap_multiset is an intrusive container, that mimics most of 
+//! The class template treap_multiset is an intrusive container, that mimics most of
 //! the interface of std::treap_multiset as described in the C++ standard.
-//! 
+//!
 //! The template parameter \c T is the type to be managed by the container.
 //! The user can specify additional options and if no options are provided
 //! default options are used.
@@ -1406,31 +1406,31 @@
    /// @endcond
 
    public:
-   //! <b>Effects</b>: Constructs an empty treap_multiset. 
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //! <b>Effects</b>: Constructs an empty treap_multiset.
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor of the value_compare/priority_compare objects throw. 
+   //!   or the copy constructor of the value_compare/priority_compare objects throw.
    treap_multiset_impl( const value_compare &cmp     = value_compare()
                      , const priority_compare &pcmp = priority_compare()
-                     , const value_traits &v_traits = value_traits()) 
+                     , const value_traits &v_traits = value_traits())
       :  tree_(cmp, pcmp, v_traits)
    {}
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type. 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
    //!   cmp must be a comparison function that induces a strict weak ordering.
-   //! 
-   //! <b>Effects</b>: Constructs an empty treap_multiset and inserts elements from 
+   //!
+   //! <b>Effects</b>: Constructs an empty treap_multiset and inserts elements from
    //!   [b, e).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
    //!   comp and otherwise N * log N, where N is the distance between first and last
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor/operator() of the value_compare/priority_compare objects throw. 
+   //!   or the copy constructor/operator() of the value_compare/priority_compare objects throw.
    template<class Iterator>
    treap_multiset_impl( Iterator b, Iterator e
                 , const value_compare &cmp     = value_compare()
@@ -1440,186 +1440,186 @@
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   treap_multiset_impl(BOOST_RV_REF(treap_multiset_impl) x) 
+   //!  
+   treap_multiset_impl(BOOST_RV_REF(treap_multiset_impl) x)
       :  tree_(::boost::move(x.tree_))
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   treap_multiset_impl& operator=(BOOST_RV_REF(treap_multiset_impl) x) 
+   //!  
+   treap_multiset_impl& operator=(BOOST_RV_REF(treap_multiset_impl) x)
    {  tree_ = ::boost::move(x.tree_);  return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the treap_multiset 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the treap_multiset
    //!   are not deleted (i.e. no destructors are called).
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~treap_multiset_impl() 
+   ~treap_multiset_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    { return tree_.begin();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    { return tree_.cbegin();  }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    { return tree_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    { return tree_.cend();  }
 
    //! <b>Effects</b>: Returns an iterator pointing to the highest priority object of the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator top()
    { return tree_.top();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the highest priority object of the tree..
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator top() const
    {  return this->ctop();   }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the highest priority object of the tree..
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator ctop() const
    { return tree_.ctop();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
    //!    reversed treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rbegin()
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rbegin() const
    { return tree_.rbegin();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
    //!    of the reversed treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crbegin() const
    { return tree_.crbegin();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
    //!    of the reversed treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rend()
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rend() const
    { return tree_.rend();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
    //!    of the reversed treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crend() const
    { return tree_.crend();  }
 
    //! <b>Effects</b>: Returns a reverse_iterator pointing to the highest priority object of the
    //!    reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    reverse_iterator rtop()
    {  return tree_.rtop();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the highest priority objec
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator rtop() const
    {  return tree_.crtop();  }
 
    //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the highest priority object
    //!    of the reversed tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_reverse_iterator crtop() const
    {  return tree_.crtop();  }
 
    //! <b>Precondition</b>: end_iterator must be a valid end iterator
    //!   of treap_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the treap_multiset associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static treap_multiset_impl &container_from_end_iterator(iterator end_iterator)
    {
@@ -1630,11 +1630,11 @@
 
    //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
    //!   of treap_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the treap_multiset associated to the end iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const treap_multiset_impl &container_from_end_iterator(const_iterator end_iterator)
    {
@@ -1644,11 +1644,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid iterator of multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the multiset associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static treap_multiset_impl &container_from_iterator(iterator it)
    {
@@ -1658,11 +1658,11 @@
    }
 
    //! <b>Precondition</b>: it must be a valid const_iterator of multiset.
-   //! 
+   //!
    //! <b>Effects</b>: Returns a const reference to the multiset associated to the iterator
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    static const treap_multiset_impl &container_from_iterator(const_iterator it)
    {
@@ -1672,50 +1672,50 @@
    }
 
    //! <b>Effects</b>: Returns the key_compare object used by the treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If key_compare copy-constructor throws.
    key_compare key_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns the value_compare object used by the treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If value_compare copy-constructor throws.
    value_compare value_comp() const
    { return tree_.value_comp(); }
 
    //! <b>Effects</b>: Returns the priority_compare object used by the treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If priority_compare copy-constructor throws.
    priority_compare priority_comp() const
    {  return tree_.priority_comp();   }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    { return tree_.empty(); }
 
    //! <b>Effects</b>: Returns the number of elements stored in the treap_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this if,
    //!   constant-time size option is enabled. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    { return tree_.size(); }
 
    //! <b>Effects</b>: Swaps the contents of two treap_multisets.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the swap() call for the comparison functor
    //!   found using ADL throws. Strong guarantee.
    void swap(treap_multiset_impl& other)
@@ -1725,72 +1725,72 @@
    //!   Cloner should yield to nodes equivalent to the original nodes.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. Copies the predicate from the source container.
    //!
    //!   If cloner throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
    template <class Cloner, class Disposer>
    void clone_from(const treap_multiset_impl &src, Cloner cloner, Disposer disposer)
    {  tree_.clone_from(src.tree_, cloner, disposer);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the treap_multiset.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity for insert element is at
    //!   most logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare or priority_compare ordering
    //!  function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(reference value)
    {  return tree_.insert_equal(value);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts x into the treap_multiset, using pos as a hint to
    //!   where it will be inserted.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic in general, but it is amortized
    //!   constant time if t is inserted immediately before hint.
-   //! 
+   //!
    //! <b>Throws</b>: If internal value_compare or priority_compare ordering functions throw.
    //!   Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(const_iterator hint, reference value)
    {  return tree_.insert_equal(hint, value);  }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Inserts a range into the treap_multiset.
-   //! 
+   //!
    //! <b>Returns</b>: An iterator that points to the position where the new
    //!   element was inserted.
-   //! 
+   //!
    //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
    //!   size of the range. However, it is linear in N if the range is already sorted
    //!   by value_comp().
-   //! 
+   //!
    //! <b>Throws</b>: If internal value_compare or priority_compare ordering functions throw.
    //!   Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
@@ -1802,11 +1802,11 @@
    //!   once inserted according to the predicate
    //!
    //! <b>Effects</b>: Inserts x into the treap before "pos".
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if "pos" is not
    //! the successor of "value" treap ordering invariant will be broken.
    //! This is a low-level function to be used only for performance reasons
@@ -1818,11 +1818,11 @@
    //!   than the greatest inserted key.
    //!
    //! <b>Effects</b>: Inserts x into the treap in the last position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   less than the greatest inserted key treap ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -1835,11 +1835,11 @@
    //!   than the minimum inserted key
    //!
    //! <b>Effects</b>: Inserts x into the treap in the first position.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: This function does not check preconditions so if value is
    //!   greater than the minimum inserted key treap ordering invariant will be broken.
    //!   This function is slightly more efficient than using "insert_before".
@@ -1848,42 +1848,42 @@
    void push_front(reference value)
    {  tree_.push_front(value);  }
 
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
-   //! 
-   //! <b>Complexity</b>: Average complexity is constant time. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
+   //!
+   //! <b>Complexity</b>: Average complexity is constant time.
+   //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator i)
    {  return tree_.erase(i);  }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!
    //! <b>Returns</b>: An iterator to the element after the erased elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    iterator erase(const_iterator b, const_iterator e)
    {  return tree_.erase(b, e);  }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare or priority_compare ordering
    //!   functiona throw. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
@@ -1891,13 +1891,13 @@
 
    //! <b>Effects</b>: Erases all the elements that compare equal with
    //!   the given key and the given comparison functor.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp or internal priority_compare ordering functions throw. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyValueCompare>
@@ -1912,14 +1912,14 @@
    //!
    //! <b>Returns</b>: An iterator to the element after the erased element.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by pos. 
+   //! <b>Effects</b>: Erases the element pointed to by pos.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase element is constant time. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase element is constant time.
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    iterator erase_and_dispose(const_iterator i, Disposer disposer)
@@ -1937,12 +1937,12 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
-   //! <b>Complexity</b>: Average complexity for erase range is at most 
+   //!
+   //! <b>Complexity</b>: Average complexity for erase range is at most
    //!   O(log(size() + N)), where N is the number of elements in the range.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal priority_compare function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -1953,13 +1953,13 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(value)).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1973,11 +1973,11 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
-   //! 
+   //!
    //! <b>Throws</b>: If comp or internal priority_compare ordering functions throw. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyValueCompare, class Disposer>
@@ -1989,26 +1989,26 @@
    {  return tree_.erase_and_dispose(key, comp, disposer);  }
 
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
    {  return tree_.clear();  }
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
-   //! 
+   //!
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -2016,20 +2016,20 @@
    {  return tree_.clear_and_dispose(disposer);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    size_type count(const_reference value) const
    {  return tree_.count(value);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the same key
    //!   compared with the given comparison functor.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
    //!   to number of objects with the given key.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    template<class KeyType, class KeyValueCompare>
    size_type count(const KeyType& key, KeyValueCompare comp) const
@@ -2037,9 +2037,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator lower_bound(const_reference value)
    {  return tree_.lower_bound(value);  }
@@ -2049,13 +2049,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -2065,9 +2065,9 @@
 
    //! <b>Effects</b>: Returns a const iterator to the first element whose
    //!   key is not less than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator lower_bound(const_reference value) const
    {  return tree_.lower_bound(value);  }
@@ -2077,13 +2077,13 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is not less than k or 
+   //!   key according to the comparison functor is not less than k or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
-   //! 
+   //!
    //! <b>Note</b>: This function is used when constructing a value_type
    //!   is expensive and the value_type can be compared with a cheaper
    //!   key type. Usually this key is part of the value_type.
@@ -2093,9 +2093,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator upper_bound(const_reference value)
    {  return tree_.upper_bound(value);  }
@@ -2105,11 +2105,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns an iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2121,9 +2121,9 @@
 
    //! <b>Effects</b>: Returns an iterator to the first element whose
    //!   key is greater than k or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator upper_bound(const_reference value) const
    {  return tree_.upper_bound(value);  }
@@ -2133,11 +2133,11 @@
    //!   that is used in the ordering functor.
    //!
    //! <b>Effects</b>: Returns a const_iterator to the first element whose
-   //!   key according to the comparison functor is greater than key or 
+   //!   key according to the comparison functor is greater than key or
    //!   end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2147,11 +2147,11 @@
    const_iterator upper_bound(const KeyType& key, KeyValueCompare comp) const
    {  return tree_.upper_bound(key, comp);  }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    iterator find(const_reference value)
    {  return tree_.find(value);  }
@@ -2160,12 +2160,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
    //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2175,11 +2175,11 @@
    iterator find(const KeyType& key, KeyValueCompare comp)
    {  return tree_.find(key, comp);  }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    const_iterator find(const_reference value) const
    {  return tree_.find(value);  }
@@ -2188,12 +2188,12 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
-   //!   "key" according to the comparison functor or end() if that element 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
+   //!   "key" according to the comparison functor or end() if that element
    //!   does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2206,9 +2206,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return tree_.equal_range(value);  }
@@ -2217,13 +2217,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2236,9 +2236,9 @@
    //! <b>Effects</b>: Finds a range containing all elements whose key is k or
    //!   an empty range that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal value_compare ordering function throws.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
@@ -2248,13 +2248,13 @@
    //!   value_compare. Usually key is the part of the value_type
    //!   that is used in the ordering functor.
    //!
-   //! <b>Effects</b>: Finds a range containing all elements whose key is k 
-   //!   according to the comparison functor or an empty range 
+   //! <b>Effects</b>: Finds a range containing all elements whose key is k
+   //!   according to the comparison functor or an empty range
    //!   that indicates the position where those elements would be
    //!   if they there is no elements with key k.
-   //! 
+   //!
    //! <b>Complexity</b>: Logarithmic.
-   //! 
+   //!
    //! <b>Throws</b>: If comp ordering function throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -2267,14 +2267,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a treap_multiset of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the treap_multiset
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static iterator s_iterator_to(reference value)
@@ -2282,14 +2282,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a treap_multiset of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   treap_multiset that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static const_iterator s_iterator_to(const_reference value)
@@ -2297,48 +2297,48 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a treap_multiset of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator i belonging to the treap_multiset
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator iterator_to(reference value)
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a treap_multiset of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
    //!   treap_multiset that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator iterator_to(const_reference value) const
    {  return tree_.iterator_to(value);  }
 
    //! <b>Requires</b>: value shall not be in a treap_multiset/treap_multiset.
-   //! 
+   //!
    //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
    //!   state.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
-   //! 
+   //!
    //! <b>Note</b>: This function puts the hook in the well-known default state
    //!   used by auto_unlink and safe hooks.
    static void init_node(reference value)
    { tree_type::init_node(value);   }
 
    //! <b>Effects</b>: Unlinks the leftmost node from the tree.
-   //! 
+   //!
    //! <b>Complexity</b>: Average complexity is constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function breaks the tree and the tree can
    //!   only be used for more unlink_leftmost_without_rebalance calls.
    //!   This function is normally used to achieve a step by step
@@ -2348,14 +2348,14 @@
 
    //! <b>Requires</b>: replace_this must be a valid iterator of *this
    //!   and with_this must not be inserted in any tree.
-   //! 
+   //!
    //! <b>Effects</b>: Replaces replace_this in its position in the
    //!   tree with with_this. The tree does not need to be rebalanced.
-   //! 
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This function will break container ordering invariants if
    //!   with_this is not equivalent to *replace_this according to the
    //!   ordering rules. This function is faster than erasing and inserting
@@ -2364,21 +2364,21 @@
    {  tree_.replace_node(replace_this, with_this);   }
 
    //! <b>Effects</b>: Rebalances the tree.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear.
    void rebalance()
    {  tree_.rebalance(); }
 
    //! <b>Requires</b>: old_root is a node of a tree.
-   //! 
+   //!
    //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
    //!
    //! <b>Returns</b>: The new root of the subtree.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements in the subtree.
    iterator rebalance_subtree(iterator root)
    {  return tree_.rebalance_subtree(root); }
@@ -2386,18 +2386,18 @@
    //! <b>Returns</b>: The balance factor (alpha) used in this tree
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    float balance_factor() const
    {  return tree_.balance_factor(); }
 
    //! <b>Requires</b>: new_alpha must be a value between 0.5 and 1.0
-   //! 
+   //!
    //! <b>Effects</b>: Establishes a new balance factor (alpha) and rebalances
    //!   the tree if the new balance factor is stricter (less) than the old factor.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the elements in the subtree.
    void balance_factor(float new_alpha)
    {  tree_.balance_factor(new_alpha); }
@@ -2488,7 +2488,7 @@
 {
    /// @cond
    typedef treap_multiset_impl
-      < typename make_treap_opt<T, 
+      < typename make_treap_opt<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -2508,7 +2508,7 @@
 template<class T, class ...Options>
 #endif
 class treap_multiset
-   :  public make_treap_multiset<T, 
+   :  public make_treap_multiset<T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -2517,7 +2517,7 @@
       >::type
 {
    typedef typename make_treap_multiset
-      <T, 
+      <T,
       #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
       O1, O2, O3, O4
       #else
@@ -2573,8 +2573,8 @@
 
 #endif
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/trivial_value_traits.hpp
==============================================================================
--- trunk/boost/intrusive/trivial_value_traits.hpp	(original)
+++ trunk/boost/intrusive/trivial_value_traits.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -40,7 +40,7 @@
    static const const_pointer  &to_value_ptr(const const_node_ptr &n)  {  return n; }
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #endif //BOOST_INTRUSIVE_TRIVIAL_VALUE_TRAITS_HPP
Modified: trunk/boost/intrusive/unordered_set.hpp
==============================================================================
--- trunk/boost/intrusive/unordered_set.hpp	(original)
+++ trunk/boost/intrusive/unordered_set.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -23,7 +23,7 @@
 namespace boost {
 namespace intrusive {
 
-//! The class template unordered_set is an intrusive container, that mimics most of 
+//! The class template unordered_set is an intrusive container, that mimics most of
 //! the interface of std::tr1::unordered_set as described in the C++ TR1.
 //!
 //! unordered_set is a semi-intrusive container: each object to be stored in the
@@ -113,73 +113,73 @@
    //!
    //! <b>Effects</b>: Constructs an empty unordered_set_impl, storing a reference
    //!   to the bucket array and copies of the hasher and equal functors.
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor or invocation of Hash or Equal throws. 
+   //!   or the copy constructor or invocation of Hash or Equal throws.
    //!
    //! <b>Notes</b>: buckets array must be disposed only after
-   //!   *this is disposed. 
+   //!   *this is disposed.
    unordered_set_impl( const bucket_traits &b_traits
                      , const hasher & hash_func = hasher()
                      , const key_equal &equal_func = key_equal()
-                     , const value_traits &v_traits = value_traits()) 
+                     , const value_traits &v_traits = value_traits())
       :  table_(b_traits, hash_func, equal_func, v_traits)
    {}
 
    //! <b>Requires</b>: buckets must not be being used by any other resource
    //!   and Dereferencing iterator must yield an lvalue of type value_type.
-   //! 
-   //! <b>Effects</b>: Constructs an empty unordered_set and inserts elements from 
+   //!
+   //! <b>Effects</b>: Constructs an empty unordered_set and inserts elements from
    //!   [b, e).
-   //!   
+   //!  
    //! <b>Complexity</b>: If N is std::distance(b, e): Average case is O(N)
    //!   (with a good hash function and with buckets_len >= N),worst case O(N2).
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor or invocation of hasher or key_equal throws. 
+   //!   or the copy constructor or invocation of hasher or key_equal throws.
    //!
    //! <b>Notes</b>: buckets array must be disposed only after
-   //!   *this is disposed. 
+   //!   *this is disposed.
    template<class Iterator>
    unordered_set_impl( Iterator b
                      , Iterator e
                      , const bucket_traits &b_traits
                      , const hasher & hash_func = hasher()
                      , const key_equal &equal_func = key_equal()
-                     , const value_traits &v_traits = value_traits()) 
+                     , const value_traits &v_traits = value_traits())
       :  table_(b_traits, hash_func, equal_func, v_traits)
    {  table_.insert_unique(b, e);  }
 
    //! <b>Effects</b>: to-do
-   //!   
-   unordered_set_impl(BOOST_RV_REF(unordered_set_impl) x) 
+   //!  
+   unordered_set_impl(BOOST_RV_REF(unordered_set_impl) x)
       :  table_(::boost::move(x.table_))
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   unordered_set_impl& operator=(BOOST_RV_REF(unordered_set_impl) x) 
+   //!  
+   unordered_set_impl& operator=(BOOST_RV_REF(unordered_set_impl) x)
    {  table_ = ::boost::move(x.table_);  return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the unordered_set 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the unordered_set
    //!   are not deleted (i.e. no destructors are called).
-   //! 
-   //! <b>Complexity</b>: Linear to the number of elements in the unordered_set, if 
+   //!
+   //! <b>Complexity</b>: Linear to the number of elements in the unordered_set, if
    //!   it's a safe-mode or auto-unlink value. Otherwise constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~unordered_set_impl() 
+   ~unordered_set_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time if `cache_begin<>` is true. Amortized
    //!   constant time with worst case (empty unordered_set) O(this->bucket_count())
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    { return table_.begin();  }
@@ -189,7 +189,7 @@
    //!
    //! <b>Complexity</b>: Constant time if `cache_begin<>` is true. Amortized
    //!   constant time with worst case (empty unordered_set) O(this->bucket_count())
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    { return table_.begin();  }
@@ -199,76 +199,76 @@
    //!
    //! <b>Complexity</b>: Constant time if `cache_begin<>` is true. Amortized
    //!   constant time with worst case (empty unordered_set) O(this->bucket_count())
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    { return table_.cbegin();  }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    { return table_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    { return table_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    { return table_.cend();  }
 
    //! <b>Effects</b>: Returns the hasher object used by the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If hasher copy-constructor throws.
    hasher hash_function() const
    { return table_.hash_function(); }
 
    //! <b>Effects</b>: Returns the key_equal object used by the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If key_equal copy-constructor throws.
    key_equal key_eq() const
    { return table_.key_eq(); }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: if constant-time size and cache_last options are disabled,
    //!   average constant time (worst case, with empty() == true: O(this->bucket_count()).
    //!   Otherwise constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    { return table_.empty(); }
 
    //! <b>Effects</b>: Returns the number of elements stored in the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this if
    //!   constant-time size option is disabled. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    { return table_.size(); }
 
    //! <b>Requires</b>: the hasher and the equality function unqualified swap
    //!   call should not throw.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps the contents of two unordered_sets.
    //!   Swaps also the contained bucket array and equality and hasher functors.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    //!
    //! <b>Throws</b>: If the swap() call for the comparison or hash functors
@@ -281,7 +281,7 @@
    //!   hash than the original node.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. The hash function and the equality
    //!   predicate are copied from the source.
@@ -290,9 +290,9 @@
    //!
    //!   If any operation throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner or hasher throw or hash or equality predicate copying
    //!   throws. Basic guarantee.
    template <class Cloner, class Disposer>
@@ -300,7 +300,7 @@
    {  table_.clone_from(src.table_, cloner, disposer);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Tries to inserts value into the unordered_set.
    //!
    //! <b>Returns</b>: If the value
@@ -308,40 +308,40 @@
    //!   iterator to the new value and true. If there is an equivalent value
    //!   returns a pair containing an iterator to the already present value
    //!   and false.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    std::pair<iterator, bool> insert(reference value)
    {  return table_.insert_unique(value);  }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Equivalent to this->insert(t) for each element in [b, e).
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(N), where N is std::distance(b, e).
    //!   Worst case O(N*this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
    void insert(Iterator b, Iterator e)
    {  table_.insert_unique(b, e);  }
 
-   //! <b>Requires</b>: "hasher" must be a hash function that induces 
+   //! <b>Requires</b>: "hasher" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hasher" hashes the given key instead of the value_type.
    //!
-   //!   "key_value_equal" must be a equality function that induces 
+   //!   "key_value_equal" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "key_value_equal" compares an arbitrary key with the contained values.
-   //! 
+   //!
    //! <b>Effects</b>: Checks if a value can be inserted in the unordered_set, using
    //!   a user provided key instead of the value itself.
    //!
@@ -350,11 +350,11 @@
    //!   and false. If the value can be inserted returns true in the returned
    //!   pair boolean and fills "commit_data" that is meant to be used with
    //!   the "insert_commit" function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
    //!
    //! <b>Throws</b>: If hasher or key_value_equal throw. Strong guarantee.
-   //! 
+   //!
    //! <b>Notes</b>: This function is used to improve performance when constructing
    //!   a value_type is expensive: if there is an equivalent value
    //!   the constructed object must be discarded. Many times, the part of the
@@ -378,16 +378,16 @@
    //!   must have been obtained from a previous call to "insert_check".
    //!   No objects should have been inserted or erased from the unordered_set between
    //!   the "insert_check" that filled "commit_data" and the call to "insert_commit".
-   //! 
+   //!
    //! <b>Effects</b>: Inserts the value in the unordered_set using the information obtained
    //!   from the "commit_data" that a previous "insert_check" filled.
    //!
    //! <b>Returns</b>: An iterator to the newly inserted object.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time.
    //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Notes</b>: This function has only sense if a "insert_check" has been
    //!   previously executed to fill "commit_data". No value should be inserted or
    //!   erased between the "insert_check" and "insert_commit" calls.
@@ -396,61 +396,61 @@
    iterator insert_commit(reference value, const insert_commit_data &commit_data)
    {  return table_.insert_unique_commit(value, commit_data); }
 
-   //! <b>Effects</b>: Erases the element pointed to by i. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by i.
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased element. No destructors are called.
    void erase(const_iterator i)
    {  table_.erase(i);  }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
-   //! 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
+   //!
    //! <b>Complexity</b>: Average case O(std::distance(b, e)),
    //!   worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void erase(const_iterator b, const_iterator e)
    {  table_.erase(b, e);  }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.  Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
    {  return table_.erase(value);  }
 
-   //! <b>Requires</b>: "hasher" must be a hash function that induces 
+   //! <b>Requires</b>: "hasher" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hasher" hashes the given key instead of the value_type.
    //!
-   //!   "key_value_equal" must be a equality function that induces 
+   //!   "key_value_equal" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "key_value_equal" compares an arbitrary key with the contained values.
    //!
    //! <b>Effects</b>: Erases all the elements that have the same hash and
    //!   compare equal with the given key.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func or equal_func throw. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyHasher, class KeyValueEqual>
@@ -459,14 +459,14 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by i. 
+   //! <b>Effects</b>: Erases the element pointed to by i.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    void erase_and_dispose(const_iterator i, Disposer disposer
@@ -480,12 +480,12 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(std::distance(b, e)),
    //!   worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -496,14 +496,14 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -517,39 +517,39 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func or equal_func throw. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyHasher, class KeyValueEqual, class Disposer>
    size_type erase_and_dispose(const KeyType& key, KeyHasher hash_func, KeyValueEqual equal_func, Disposer disposer)
    {  return table_.erase_and_dispose(key, hash_func, equal_func, disposer);  }
 
-   //! <b>Effects</b>: Erases all of the elements. 
-   //! 
+   //! <b>Effects</b>: Erases all of the elements.
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
    {  return table_.clear();  }
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
-   //! 
-   //! <b>Effects</b>: Erases all of the elements. 
-   //! 
+   //!
+   //! <b>Effects</b>: Erases all of the elements.
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -557,25 +557,25 @@
    {  return table_.clear_and_dispose(disposer);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given value
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    size_type count(const_reference value) const
    {  return table_.find(value) != end();  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "equal_func" must be a equality function that induces 
+   //!   "equal_func" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "equal_func" compares an arbitrary key with the contained values.
    //!
    //! <b>Effects</b>: Returns the number of contained elements with the given key
    //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func or equal_func throw.
    template<class KeyType, class KeyHasher, class KeyValueEqual>
    size_type count(const KeyType& key, KeyHasher hash_func, KeyValueEqual equal_func) const
@@ -585,25 +585,25 @@
    //!   "value" or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    iterator find(const_reference value)
    {  return table_.find(value);  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "equal_func" must be a equality function that induces 
+   //!   "equal_func" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "equal_func" compares an arbitrary key with the contained values.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   "key" according to the given hasher and equality functor or end() if
    //!   that element does not exist.
    //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func or equal_func throw.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -613,29 +613,29 @@
    iterator find(const KeyType& key, KeyHasher hash_func, KeyValueEqual equal_func)
    {  return table_.find(key, hash_func, equal_func);  }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
    //!   "key" or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    const_iterator find(const_reference value) const
    {  return table_.find(value);  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "equal_func" must be a equality function that induces 
+   //!   "equal_func" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "equal_func" compares an arbitrary key with the contained values.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   "key" according to the given hasher and equality functor or end() if
    //!   that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func or equal_func throw.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -646,30 +646,30 @@
    {  return table_.find(key, hash_func, equal_func);  }
 
    //! <b>Effects</b>: Returns a range containing all elements with values equivalent
-   //!   to value. Returns std::make_pair(this->end(), this->end()) if no such 
+   //!   to value. Returns std::make_pair(this->end(), this->end()) if no such
    //!   elements exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)). Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return table_.equal_range(value);  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "equal_func" must be a equality function that induces 
+   //!   "equal_func" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "equal_func" compares an arbitrary key with the contained values.
    //!
    //! <b>Effects</b>: Returns a range containing all elements with equivalent
-   //!   keys. Returns std::make_pair(this->end(), this->end()) if no such 
+   //!   keys. Returns std::make_pair(this->end(), this->end()) if no such
    //!   elements exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(key, hash_func, hash_func)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func or the equal_func throw.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -680,31 +680,31 @@
    {  return table_.equal_range(key, hash_func, equal_func);  }
 
    //! <b>Effects</b>: Returns a range containing all elements with values equivalent
-   //!   to value. Returns std::make_pair(this->end(), this->end()) if no such 
+   //!   to value. Returns std::make_pair(this->end(), this->end()) if no such
    //!   elements exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)). Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
    {  return table_.equal_range(value);  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "equal_func" must be a equality function that induces 
+   //!   "equal_func" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "equal_func" compares an arbitrary key with the contained values.
    //!
    //! <b>Effects</b>: Returns a range containing all elements with equivalent
-   //!   keys. Returns std::make_pair(this->end(), this->end()) if no such 
+   //!   keys. Returns std::make_pair(this->end(), this->end()) if no such
    //!   elements exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(key, hash_func, equal_func)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the hash_func or equal_func throw.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -717,38 +717,38 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator belonging to the unordered_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hash function throws.
    iterator iterator_to(reference value)
    {  return table_.iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator belonging to the
    //!   unordered_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hash function throws.
    const_iterator iterator_to(const_reference value) const
    {  return table_.iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid local_iterator belonging to the unordered_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static local_iterator s_local_iterator_to(reference value)
@@ -756,14 +756,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_local_iterator belonging to
    //!   the unordered_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static const_local_iterator s_local_iterator_to(const_reference value)
@@ -771,33 +771,33 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid local_iterator belonging to the unordered_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    local_iterator local_iterator_to(reference value)
    {  return table_.local_iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_local_iterator belonging to
    //!   the unordered_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_local_iterator local_iterator_to(const_reference value) const
    {  return table_.local_iterator_to(value);  }
 
    //! <b>Effects</b>: Returns the number of buckets passed in the constructor
    //!   or the last rehash function.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type bucket_count() const
    {  return table_.bucket_count();   }
@@ -805,33 +805,33 @@
    //! <b>Requires</b>: n is in the range [0, this->bucket_count()).
    //!
    //! <b>Effects</b>: Returns the number of elements in the nth bucket.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type bucket_size(size_type n) const
    {  return table_.bucket_size(n);   }
 
    //! <b>Effects</b>: Returns the index of the bucket in which elements
    //!   with keys equivalent to k would be found, if any such element existed.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the hash functor throws.
    //!
    //! <b>Note</b>: the return value is in the range [0, this->bucket_count()).
    size_type bucket(const value_type& k) const
    {  return table_.bucket(k);   }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
    //! <b>Effects</b>: Returns the index of the bucket in which elements
    //!   with keys equivalent to k would be found, if any such element existed.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func throws.
    //!
    //! <b>Note</b>: the return value is in the range [0, this->bucket_count()).
@@ -841,9 +841,9 @@
 
    //! <b>Effects</b>: Returns the bucket array pointer passed in the constructor
    //!   or the last rehash function.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bucket_ptr bucket_pointer() const
    {  return table_.bucket_pointer();   }
@@ -852,13 +852,13 @@
    //!
    //! <b>Effects</b>: Returns a local_iterator pointing to the beginning
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    local_iterator begin(size_type n)
    {  return table_.begin(n);   }
 
@@ -866,13 +866,13 @@
    //!
    //! <b>Effects</b>: Returns a const_local_iterator pointing to the beginning
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    const_local_iterator begin(size_type n) const
    {  return table_.begin(n);   }
 
@@ -880,13 +880,13 @@
    //!
    //! <b>Effects</b>: Returns a const_local_iterator pointing to the beginning
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    const_local_iterator cbegin(size_type n) const
    {  return table_.cbegin(n);   }
 
@@ -894,13 +894,13 @@
    //!
    //! <b>Effects</b>: Returns a local_iterator pointing to the end
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    local_iterator end(size_type n)
    {  return table_.end(n);   }
 
@@ -908,13 +908,13 @@
    //!
    //! <b>Effects</b>: Returns a const_local_iterator pointing to the end
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    const_local_iterator end(size_type n) const
    {  return table_.end(n);   }
 
@@ -922,13 +922,13 @@
    //!
    //! <b>Effects</b>: Returns a const_local_iterator pointing to the end
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    const_local_iterator cend(size_type n) const
    {  return table_.cend(n);   }
 
@@ -938,22 +938,22 @@
    //!   n can be bigger or smaller than this->bucket_count().
    //!
    //! <b>Effects</b>: Updates the internal reference with the new bucket erases
-   //!   the values from the old bucket and inserts then in the new one. 
+   //!   the values from the old bucket and inserts then in the new one.
    //!
    //!   If store_hash option is true, this method does not use the hash function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case linear in this->size(), worst case quadratic.
-   //! 
+   //!
    //! <b>Throws</b>: If the hasher functor throws. Basic guarantee.
    void rehash(const bucket_traits &new_bucket_traits)
    {  table_.rehash(new_bucket_traits); }
 
    //! <b>Requires</b>:
    //!
-   //! <b>Effects</b>: 
-   //! 
-   //! <b>Complexity</b>: 
-   //! 
+   //! <b>Effects</b>:
+   //!
+   //! <b>Complexity</b>:
+   //!
    //! <b>Throws</b>:
    //!
    //! <b>Note</b>: this method is only available if incremental<true> option is activated.
@@ -966,22 +966,22 @@
 
    //! <b>Requires</b>:
    //!
-   //! <b>Effects</b>: 
-   //! 
-   //! <b>Complexity</b>: 
-   //! 
-   //! <b>Throws</b>: 
+   //! <b>Effects</b>:
+   //!
+   //! <b>Complexity</b>:
+   //!
+   //! <b>Throws</b>:
    size_type split_count() const
    {  return table_.split_count(); }
 
    //! <b>Effects</b>: Returns the nearest new bucket count optimized for
    //!   the container that is bigger than n. This suggestion can be used
    //!   to create bucket arrays with a size that will usually improve
-   //!   container's performance. If such value does not exist, the 
+   //!   container's performance. If such value does not exist, the
    //!   higher possible value is returned.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static size_type suggested_upper_bucket_count(size_type n)
    {  return table_type::suggested_upper_bucket_count(n);  }
@@ -989,11 +989,11 @@
    //! <b>Effects</b>: Returns the nearest new bucket count optimized for
    //!   the container that is smaller than n. This suggestion can be used
    //!   to create bucket arrays with a size that will usually improve
-   //!   container's performance. If such value does not exist, the 
+   //!   container's performance. If such value does not exist, the
    //!   lower possible value is returned.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static size_type suggested_lower_bucket_count(size_type n)
    {  return table_type::suggested_lower_bucket_count(n);  }
@@ -1016,7 +1016,7 @@
    /// @cond
    typedef unordered_set_impl
       <  typename make_hashtable_opt
-            <T, true, 
+            <T, true,
                #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
                O1, O2, O3, O4, O5, O6, O7, O8, O9, O10
                #else
@@ -1036,7 +1036,7 @@
 template<class T, class ...Options>
 #endif
 class unordered_set
-   :  public make_unordered_set<T, 
+   :  public make_unordered_set<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4, O5, O6, O7, O8, O9, O10
          #else
@@ -1045,7 +1045,7 @@
       >::type
 {
    typedef typename make_unordered_set
-      <T, 
+      <T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4, O5, O6, O7, O8, O9, O10
          #else
@@ -1070,7 +1070,7 @@
    unordered_set  ( const bucket_traits &b_traits
                   , const hasher & hash_func = hasher()
                   , const key_equal &equal_func = key_equal()
-                  , const value_traits &v_traits = value_traits()) 
+                  , const value_traits &v_traits = value_traits())
       :  Base(b_traits, hash_func, equal_func, v_traits)
    {}
 
@@ -1080,7 +1080,7 @@
                   , const bucket_traits &b_traits
                   , const hasher & hash_func = hasher()
                   , const key_equal &equal_func = key_equal()
-                  , const value_traits &v_traits = value_traits()) 
+                  , const value_traits &v_traits = value_traits())
       :  Base(b, e, b_traits, hash_func, equal_func, v_traits)
    {}
 
@@ -1095,7 +1095,7 @@
 #endif
 
 
-//! The class template unordered_multiset is an intrusive container, that mimics most of 
+//! The class template unordered_multiset is an intrusive container, that mimics most of
 //! the interface of std::tr1::unordered_multiset as described in the C++ TR1.
 //!
 //! unordered_multiset is a semi-intrusive container: each object to be stored in the
@@ -1184,34 +1184,34 @@
    //!
    //! <b>Effects</b>: Constructs an empty unordered_multiset, storing a reference
    //!   to the bucket array and copies of the hasher and equal functors.
-   //!   
-   //! <b>Complexity</b>: Constant. 
-   //! 
+   //!  
+   //! <b>Complexity</b>: Constant.
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor or invocation of Hash or Equal throws. 
+   //!   or the copy constructor or invocation of Hash or Equal throws.
    //!
    //! <b>Notes</b>: buckets array must be disposed only after
-   //!   *this is disposed. 
+   //!   *this is disposed.
    unordered_multiset_impl ( const bucket_traits &b_traits
                            , const hasher & hash_func = hasher()
                            , const key_equal &equal_func = key_equal()
-                           , const value_traits &v_traits = value_traits()) 
+                           , const value_traits &v_traits = value_traits())
       :  table_(b_traits, hash_func, equal_func, v_traits)
    {}
 
    //! <b>Requires</b>: buckets must not be being used by any other resource
    //!   and Dereferencing iterator must yield an lvalue of type value_type.
-   //! 
-   //! <b>Effects</b>: Constructs an empty unordered_multiset and inserts elements from 
+   //!
+   //! <b>Effects</b>: Constructs an empty unordered_multiset and inserts elements from
    //!   [b, e).
-   //!   
+   //!  
    //! <b>Complexity</b>: If N is std::distance(b, e): Average case is O(N)
    //!   (with a good hash function and with buckets_len >= N),worst case O(N2).
-   //! 
+   //!
    //! <b>Throws</b>: If value_traits::node_traits::node
    //!   constructor throws (this does not happen with predefined Boost.Intrusive hooks)
-   //!   or the copy constructor or invocation of hasher or key_equal throws. 
+   //!   or the copy constructor or invocation of hasher or key_equal throws.
    //!
    //! <b>Notes</b>: buckets array must be disposed only after
    //!   *this is disposed.
@@ -1221,36 +1221,36 @@
                            , const bucket_traits &b_traits
                            , const hasher & hash_func = hasher()
                            , const key_equal &equal_func = key_equal()
-                           , const value_traits &v_traits = value_traits()) 
+                           , const value_traits &v_traits = value_traits())
       :  table_(b_traits, hash_func, equal_func, v_traits)
    {  table_.insert_equal(b, e);  }
 
    //! <b>Effects</b>: to-do
-   //!   
-   unordered_multiset_impl(BOOST_RV_REF(unordered_multiset_impl) x) 
+   //!  
+   unordered_multiset_impl(BOOST_RV_REF(unordered_multiset_impl) x)
       :  table_(::boost::move(x.table_))
    {}
 
    //! <b>Effects</b>: to-do
-   //!   
-   unordered_multiset_impl& operator=(BOOST_RV_REF(unordered_multiset_impl) x) 
+   //!  
+   unordered_multiset_impl& operator=(BOOST_RV_REF(unordered_multiset_impl) x)
    {  table_ = ::boost::move(x.table_);  return *this;  }
 
-   //! <b>Effects</b>: Detaches all elements from this. The objects in the unordered_multiset 
+   //! <b>Effects</b>: Detaches all elements from this. The objects in the unordered_multiset
    //!   are not deleted (i.e. no destructors are called).
-   //! 
-   //! <b>Complexity</b>: Linear to the number of elements in the unordered_multiset, if 
+   //!
+   //! <b>Complexity</b>: Linear to the number of elements in the unordered_multiset, if
    //!   it's a safe-mode or auto-unlink value. Otherwise constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   ~unordered_multiset_impl() 
+   ~unordered_multiset_impl()
    {}
 
    //! <b>Effects</b>: Returns an iterator pointing to the beginning of the unordered_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant time if `cache_begin<>` is true. Amortized
    //!   constant time with worst case (empty unordered_set) O(this->bucket_count())
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator begin()
    { return table_.begin();  }
@@ -1260,7 +1260,7 @@
    //!
    //! <b>Complexity</b>: Constant time if `cache_begin<>` is true. Amortized
    //!   constant time with worst case (empty unordered_set) O(this->bucket_count())
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator begin() const
    { return table_.begin();  }
@@ -1270,77 +1270,77 @@
    //!
    //! <b>Complexity</b>: Constant time if `cache_begin<>` is true. Amortized
    //!   constant time with worst case (empty unordered_set) O(this->bucket_count())
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cbegin() const
    { return table_.cbegin();  }
 
    //! <b>Effects</b>: Returns an iterator pointing to the end of the unordered_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    iterator end()
    { return table_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the unordered_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator end() const
    { return table_.end();  }
 
    //! <b>Effects</b>: Returns a const_iterator pointing to the end of the unordered_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_iterator cend() const
    { return table_.cend();  }
 
    //! <b>Effects</b>: Returns the hasher object used by the unordered_set.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If hasher copy-constructor throws.
    hasher hash_function() const
    { return table_.hash_function(); }
 
    //! <b>Effects</b>: Returns the key_equal object used by the unordered_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If key_equal copy-constructor throws.
    key_equal key_eq() const
    { return table_.key_eq(); }
 
    //! <b>Effects</b>: Returns true if the container is empty.
-   //! 
+   //!
    //! <b>Complexity</b>: if constant-time size and cache_last options are disabled,
    //!   average constant time (worst case, with empty() == true: O(this->bucket_count()).
    //!   Otherwise constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bool empty() const
    { return table_.empty(); }
 
    //! <b>Effects</b>: Returns the number of elements stored in the unordered_multiset.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to elements contained in *this if
    //!   constant-time size option is disabled. Constant-time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type size() const
    { return table_.size(); }
 
    //! <b>Requires</b>: the hasher and the equality function unqualified swap
    //!   call should not throw.
-   //! 
+   //!
    //! <b>Effects</b>: Swaps the contents of two unordered_multisets.
    //!   Swaps also the contained bucket array and equality and hasher functors.
    //!
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
    //!
    //! <b>Throws</b>: If the swap() call for the comparison or hash functors
@@ -1353,7 +1353,7 @@
    //!   hash than the original node.
    //!
    //! <b>Effects</b>: Erases all the elements from *this
-   //!   calling Disposer::operator()(pointer), clones all the 
+   //!   calling Disposer::operator()(pointer), clones all the
    //!   elements from src calling Cloner::operator()(const_reference )
    //!   and inserts them on *this. The hash function and the equality
    //!   predicate are copied from the source.
@@ -1362,9 +1362,9 @@
    //!
    //!   If any operation throws, all cloned elements are unlinked and disposed
    //!   calling Disposer::operator()(pointer).
-   //!   
+   //!  
    //! <b>Complexity</b>: Linear to erased plus inserted elements.
-   //! 
+   //!
    //! <b>Throws</b>: If cloner or hasher throw or hash or equality predicate copying
    //!   throws. Basic guarantee.
    template <class Cloner, class Disposer>
@@ -1372,92 +1372,92 @@
    {  table_.clone_from(src.table_, cloner, disposer);  }
 
    //! <b>Requires</b>: value must be an lvalue
-   //! 
+   //!
    //! <b>Effects</b>: Inserts value into the unordered_multiset.
    //!
    //! <b>Returns</b>: An iterator to the new inserted value.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws. Strong guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    iterator insert(reference value)
    {  return table_.insert_equal(value);  }
 
-   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue 
+   //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
    //!   of type value_type.
-   //! 
+   //!
    //! <b>Effects</b>: Equivalent to this->insert(t) for each element in [b, e).
-   //! 
+   //!
    //! <b>Complexity</b>: Average case is O(N), where N is the
    //!   size of the range.
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Does not affect the validity of iterators and references.
    //!   No copy-constructors are called.
    template<class Iterator>
    void insert(Iterator b, Iterator e)
    {  table_.insert_equal(b, e);  }
 
-   //! <b>Effects</b>: Erases the element pointed to by i. 
-   //! 
+   //! <b>Effects</b>: Erases the element pointed to by i.
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased element. No destructors are called.
    void erase(const_iterator i)
    {  table_.erase(i);  }
 
-   //! <b>Effects</b>: Erases the range pointed to by b end e. 
-   //! 
+   //! <b>Effects</b>: Erases the range pointed to by b end e.
+   //!
    //! <b>Complexity</b>: Average case O(std::distance(b, e)),
    //!   worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void erase(const_iterator b, const_iterator e)
    {  table_.erase(b, e);  }
 
    //! <b>Effects</b>: Erases all the elements with the given value.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    size_type erase(const_reference value)
    {  return table_.erase(value);  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "key_value_equal" must be a equality function that induces 
+   //!   "key_value_equal" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "key_value_equal" compares an arbitrary key with the contained values.
    //!
    //! <b>Effects</b>: Erases all the elements that have the same hash and
    //!   compare equal with the given key.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the hash_func or the equal_func functors throws.
    //!   Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class KeyType, class KeyHasher, class KeyValueEqual>
@@ -1466,14 +1466,14 @@
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
    //!
-   //! <b>Effects</b>: Erases the element pointed to by i. 
+   //! <b>Effects</b>: Erases the element pointed to by i.
    //!   Disposer::operator()(pointer) is called for the removed element.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
-   //! <b>Note</b>: Invalidates the iterators 
+   //!
+   //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
    void erase_and_dispose(const_iterator i, Disposer disposer
@@ -1493,12 +1493,12 @@
    //!
    //! <b>Effects</b>: Erases the range pointed to by b end e.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(std::distance(b, e)),
    //!   worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class Disposer>
@@ -1509,14 +1509,14 @@
    //!
    //! <b>Effects</b>: Erases all the elements with the given value.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1530,12 +1530,12 @@
    //!   Disposer::operator()(pointer) is called for the removed elements.
    //!
    //! <b>Returns</b>: The number of erased elements.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If hash_func or equal_func throw. Basic guarantee.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators
    //!    to the erased elements.
    template<class KeyType, class KeyHasher, class KeyValueEqual, class Disposer>
@@ -1543,26 +1543,26 @@
    {  return table_.erase_and_dispose(key, hash_func, equal_func, disposer);  }
 
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    void clear()
    {  return table_.clear();  }
 
    //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
-   //! 
+   //!
    //! <b>Effects</b>: Erases all the elements of the container.
-   //! 
+   //!
    //! <b>Complexity</b>: Linear to the number of elements on the container.
    //!   Disposer::operator()(pointer) is called for the removed elements.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: Invalidates the iterators (but not the references)
    //!    to the erased elements. No destructors are called.
    template<class Disposer>
@@ -1570,53 +1570,53 @@
    {  return table_.clear_and_dispose(disposer);  }
 
    //! <b>Effects</b>: Returns the number of contained elements with the given key
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    size_type count(const_reference value) const
    {  return table_.count(value);  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "key_value_equal" must be a equality function that induces 
+   //!   "key_value_equal" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "key_value_equal" compares an arbitrary key with the contained values.
    //!
    //! <b>Effects</b>: Returns the number of contained elements with the given key
    //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    template<class KeyType, class KeyHasher, class KeyValueEqual>
    size_type count(const KeyType& key, KeyHasher hash_func, KeyValueEqual equal_func) const
    {  return table_.count(key, hash_func, equal_func);  }
 
-   //! <b>Effects</b>: Finds an iterator to the first element whose value is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose value is
    //!   "value" or end() if that element does not exist.
    //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    iterator find(const_reference value)
    {  return table_.find(value);  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "key_value_equal" must be a equality function that induces 
+   //!   "key_value_equal" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "key_value_equal" compares an arbitrary key with the contained values.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   "key" according to the given hasher and equality functor or end() if
    //!   that element does not exist.
    //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1626,29 +1626,29 @@
    iterator find(const KeyType& key, KeyHasher hash_func, KeyValueEqual equal_func)
    {  return table_.find(key, hash_func, equal_func);  }
 
-   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
    //!   "key" or end() if that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    const_iterator find(const_reference value) const
    {  return table_.find(value);  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "key_value_equal" must be a equality function that induces 
+   //!   "key_value_equal" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "key_value_equal" compares an arbitrary key with the contained values.
    //!
-   //! <b>Effects</b>: Finds an iterator to the first element whose key is 
+   //! <b>Effects</b>: Finds an iterator to the first element whose key is
    //!   "key" according to the given hasher and equality functor or end() if
    //!   that element does not exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(1), worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1659,30 +1659,30 @@
    {  return table_.find(key, hash_func, equal_func);  }
 
    //! <b>Effects</b>: Returns a range containing all elements with values equivalent
-   //!   to value. Returns std::make_pair(this->end(), this->end()) if no such 
+   //!   to value. Returns std::make_pair(this->end(), this->end()) if no such
    //!   elements exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)). Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    std::pair<iterator,iterator> equal_range(const_reference value)
    {  return table_.equal_range(value);  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "key_value_equal" must be a equality function that induces 
+   //!   "key_value_equal" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "key_value_equal" compares an arbitrary key with the contained values.
    //!
    //! <b>Effects</b>: Returns a range containing all elements with equivalent
-   //!   keys. Returns std::make_pair(this->end(), this->end()) if no such 
+   //!   keys. Returns std::make_pair(this->end(), this->end()) if no such
    //!   elements exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(key, hash_func, equal_func)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1694,31 +1694,31 @@
    {  return table_.equal_range(key, hash_func, equal_func);  }
 
    //! <b>Effects</b>: Returns a range containing all elements with values equivalent
-   //!   to value. Returns std::make_pair(this->end(), this->end()) if no such 
+   //!   to value. Returns std::make_pair(this->end(), this->end()) if no such
    //!   elements exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(value)). Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    std::pair<const_iterator, const_iterator>
       equal_range(const_reference value) const
    {  return table_.equal_range(value);  }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
-   //!   "key_value_equal" must be a equality function that induces 
+   //!   "key_value_equal" must be a equality function that induces
    //!   the same equality as key_equal. The difference is that
    //!   "key_value_equal" compares an arbitrary key with the contained values.
    //!
    //! <b>Effects</b>: Returns a range containing all elements with equivalent
-   //!   keys. Returns std::make_pair(this->end(), this->end()) if no such 
+   //!   keys. Returns std::make_pair(this->end(), this->end()) if no such
    //!   elements exist.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case O(this->count(key, hash_func, equal_func)).
    //!   Worst case O(this->size()).
-   //! 
+   //!
    //! <b>Throws</b>: If the internal hasher or the equality functor throws.
    //!
    //! <b>Note</b>: This function is used when constructing a value_type
@@ -1731,38 +1731,38 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_multiset of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid iterator belonging to the unordered_multiset
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the hash function throws.
    iterator iterator_to(reference value)
    {  return table_.iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_multiset of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_iterator belonging to the
    //!   unordered_multiset that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the hash function throws.
    const_iterator iterator_to(const_reference value) const
    {  return table_.iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid local_iterator belonging to the unordered_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static local_iterator s_local_iterator_to(reference value)
@@ -1770,14 +1770,14 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_local_iterator belonging to
    //!   the unordered_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>: This static function is available only if the <i>value traits</i>
    //!   is stateless.
    static const_local_iterator s_local_iterator_to(const_reference value)
@@ -1785,33 +1785,33 @@
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid local_iterator belonging to the unordered_set
    //!   that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    local_iterator local_iterator_to(reference value)
    {  return table_.local_iterator_to(value);  }
 
    //! <b>Requires</b>: value must be an lvalue and shall be in a unordered_set of
    //!   appropriate type. Otherwise the behavior is undefined.
-   //! 
+   //!
    //! <b>Effects</b>: Returns: a valid const_local_iterator belonging to
    //!   the unordered_set that points to the value
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    const_local_iterator local_iterator_to(const_reference value) const
    {  return table_.local_iterator_to(value);  }
 
    //! <b>Effects</b>: Returns the number of buckets passed in the constructor
    //!   or the last rehash function.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type bucket_count() const
    {  return table_.bucket_count();   }
@@ -1819,33 +1819,33 @@
    //! <b>Requires</b>: n is in the range [0, this->bucket_count()).
    //!
    //! <b>Effects</b>: Returns the number of elements in the nth bucket.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    size_type bucket_size(size_type n) const
    {  return table_.bucket_size(n);   }
 
    //! <b>Effects</b>: Returns the index of the bucket in which elements
    //!   with keys equivalent to k would be found, if any such element existed.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the hash functor throws.
    //!
    //! <b>Note</b>: the return value is in the range [0, this->bucket_count()).
    size_type bucket(const value_type& k) const
    {  return table_.bucket(k);   }
 
-   //! <b>Requires</b>: "hash_func" must be a hash function that induces 
+   //! <b>Requires</b>: "hash_func" must be a hash function that induces
    //!   the same hash values as the stored hasher. The difference is that
    //!   "hash_func" hashes the given key instead of the value_type.
    //!
    //! <b>Effects</b>: Returns the index of the bucket in which elements
    //!   with keys equivalent to k would be found, if any such element existed.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: If the hash functor throws.
    //!
    //! <b>Note</b>: the return value is in the range [0, this->bucket_count()).
@@ -1855,9 +1855,9 @@
 
    //! <b>Effects</b>: Returns the bucket array pointer passed in the constructor
    //!   or the last rehash function.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    bucket_ptr bucket_pointer() const
    {  return table_.bucket_pointer();   }
@@ -1866,13 +1866,13 @@
    //!
    //! <b>Effects</b>: Returns a local_iterator pointing to the beginning
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    local_iterator begin(size_type n)
    {  return table_.begin(n);   }
 
@@ -1880,13 +1880,13 @@
    //!
    //! <b>Effects</b>: Returns a const_local_iterator pointing to the beginning
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    const_local_iterator begin(size_type n) const
    {  return table_.begin(n);   }
 
@@ -1894,13 +1894,13 @@
    //!
    //! <b>Effects</b>: Returns a const_local_iterator pointing to the beginning
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    const_local_iterator cbegin(size_type n) const
    {  return table_.cbegin(n);   }
 
@@ -1908,13 +1908,13 @@
    //!
    //! <b>Effects</b>: Returns a local_iterator pointing to the end
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    local_iterator end(size_type n)
    {  return table_.end(n);   }
 
@@ -1922,13 +1922,13 @@
    //!
    //! <b>Effects</b>: Returns a const_local_iterator pointing to the end
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    const_local_iterator end(size_type n) const
    {  return table_.end(n);   }
 
@@ -1936,13 +1936,13 @@
    //!
    //! <b>Effects</b>: Returns a const_local_iterator pointing to the end
    //!   of the sequence stored in the bucket n.
-   //! 
+   //!
    //! <b>Complexity</b>: Constant.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
-   //! 
+   //!
    //! <b>Note</b>:  [this->begin(n), this->end(n)) is a valid range
-   //!   containing all of the elements in the nth bucket. 
+   //!   containing all of the elements in the nth bucket.
    const_local_iterator cend(size_type n) const
    {  return table_.cend(n);   }
 
@@ -1952,22 +1952,22 @@
    //!   n can be bigger or smaller than this->bucket_count().
    //!
    //! <b>Effects</b>: Updates the internal reference with the new bucket erases
-   //!   the values from the old bucket and inserts then in the new one. 
+   //!   the values from the old bucket and inserts then in the new one.
    //!
    //!   If store_hash option is true, this method does not use the hash function.
-   //! 
+   //!
    //! <b>Complexity</b>: Average case linear in this->size(), worst case quadratic.
-   //! 
+   //!
    //! <b>Throws</b>: If the hasher functor throws.
    void rehash(const bucket_traits &new_bucket_traits)
    {  table_.rehash(new_bucket_traits); }
 
    //! <b>Requires</b>:
    //!
-   //! <b>Effects</b>: 
-   //! 
-   //! <b>Complexity</b>: 
-   //! 
+   //! <b>Effects</b>:
+   //!
+   //! <b>Complexity</b>:
+   //!
    //! <b>Throws</b>:
    //!
    //! <b>Note</b>: this method is only available if incremental<true> option is activated.
@@ -1980,22 +1980,22 @@
 
    //! <b>Requires</b>:
    //!
-   //! <b>Effects</b>: 
-   //! 
-   //! <b>Complexity</b>: 
-   //! 
-   //! <b>Throws</b>: 
+   //! <b>Effects</b>:
+   //!
+   //! <b>Complexity</b>:
+   //!
+   //! <b>Throws</b>:
    size_type split_count() const
    {  return table_.split_count(); }
 
    //! <b>Effects</b>: Returns the nearest new bucket count optimized for
    //!   the container that is bigger than n. This suggestion can be used
    //!   to create bucket arrays with a size that will usually improve
-   //!   container's performance. If such value does not exist, the 
+   //!   container's performance. If such value does not exist, the
    //!   higher possible value is returned.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static size_type suggested_upper_bucket_count(size_type n)
    {  return table_type::suggested_upper_bucket_count(n);  }
@@ -2003,11 +2003,11 @@
    //! <b>Effects</b>: Returns the nearest new bucket count optimized for
    //!   the container that is smaller than n. This suggestion can be used
    //!   to create bucket arrays with a size that will usually improve
-   //!   container's performance. If such value does not exist, the 
+   //!   container's performance. If such value does not exist, the
    //!   lower possible value is returned.
-   //! 
+   //!
    //! <b>Complexity</b>: Amortized constant time.
-   //! 
+   //!
    //! <b>Throws</b>: Nothing.
    static size_type suggested_lower_bucket_count(size_type n)
    {  return table_type::suggested_lower_bucket_count(n);  }
@@ -2030,7 +2030,7 @@
    /// @cond
    typedef unordered_multiset_impl
       <  typename make_hashtable_opt
-            <T, false, 
+            <T, false,
                #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
                O1, O2, O3, O4, O5, O6, O7, O8, O9, O10
                #else
@@ -2050,7 +2050,7 @@
 template<class T, class ...Options>
 #endif
 class unordered_multiset
-   :  public make_unordered_multiset<T, 
+   :  public make_unordered_multiset<T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4, O5, O6, O7, O8, O9, O10
          #else
@@ -2059,7 +2059,7 @@
       >::type
 {
    typedef typename make_unordered_multiset
-      <T, 
+      <T,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4, O5, O6, O7, O8, O9, O10
          #else
@@ -2083,7 +2083,7 @@
    unordered_multiset( const bucket_traits &b_traits
                      , const hasher & hash_func = hasher()
                      , const key_equal &equal_func = key_equal()
-                     , const value_traits &v_traits = value_traits()) 
+                     , const value_traits &v_traits = value_traits())
       :  Base(b_traits, hash_func, equal_func, v_traits)
    {}
 
@@ -2093,7 +2093,7 @@
                      , const bucket_traits &b_traits
                      , const hasher & hash_func = hasher()
                      , const key_equal &equal_func = key_equal()
-                     , const value_traits &v_traits = value_traits()) 
+                     , const value_traits &v_traits = value_traits())
       :  Base(b, e, b_traits, hash_func, equal_func, v_traits)
    {}
 
@@ -2107,8 +2107,8 @@
 
 #endif
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>
 
Modified: trunk/boost/intrusive/unordered_set_hook.hpp
==============================================================================
--- trunk/boost/intrusive/unordered_set_hook.hpp	(original)
+++ trunk/boost/intrusive/unordered_set_hook.hpp	2012-05-20 05:57:59 EDT (Sun, 20 May 2012)
@@ -95,10 +95,10 @@
    {  n->prev_in_group_ = prev;  }
 
    static std::size_t get_hash(const const_node_ptr & n)
-   {  return n->hash_;  }  
+   {  return n->hash_;  } 
 
    static void set_hash(const node_ptr & n, std::size_t h)
-   {  n->hash_ = h;  }  
+   {  n->hash_ = h;  } 
 };
 
 template<class NodeTraits>
@@ -147,12 +147,12 @@
 {
    typedef typename detail::if_c
       < (StoreHash || OptimizeMultiKey)
-      , unordered_node_traits<VoidPointer, StoreHash, OptimizeMultiKey> 
-      , slist_node_traits<VoidPointer> 
+      , unordered_node_traits<VoidPointer, StoreHash, OptimizeMultiKey>
+      , slist_node_traits<VoidPointer>
       >::type node_traits_type;
    typedef typename detail::if_c
       < OptimizeMultiKey
-      , unordered_algorithms<node_traits_type> 
+      , unordered_algorithms<node_traits_type>
       , circular_slist_algorithms<node_traits_type>
       >::type type;
 };
@@ -169,7 +169,7 @@
 {
    /// @cond
    typedef typename pack_options
-      < hook_defaults, 
+      < hook_defaults,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -190,16 +190,16 @@
    typedef implementation_defined type;
 };
 
-//! Derive a class from unordered_set_base_hook in order to store objects in 
-//! in an unordered_set/unordered_multi_set. unordered_set_base_hook holds the data necessary to maintain 
+//! Derive a class from unordered_set_base_hook in order to store objects in
+//! in an unordered_set/unordered_multi_set. unordered_set_base_hook holds the data necessary to maintain
 //! the unordered_set/unordered_multi_set and provides an appropriate value_traits class for unordered_set/unordered_multi_set.
-//! 
+//!
 //! The hook admits the following options: \c tag<>, \c void_pointer<>,
 //! \c link_mode<>, \c store_hash<> and \c optimize_multikey<>.
 //!
-//! \c tag<> defines a tag to identify the node. 
-//! The same tag value can be used in different classes, but if a class is 
-//! derived from more than one \c list_base_hook, then each \c list_base_hook needs its 
+//! \c tag<> defines a tag to identify the node.
+//! The same tag value can be used in different classes, but if a class is
+//! derived from more than one \c list_base_hook, then each \c list_base_hook needs its
 //! unique tag.
 //!
 //! \c void_pointer<> is the pointer type that will be used internally in the hook
@@ -232,27 +232,27 @@
    public:
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    unordered_set_base_hook();
 
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    unordered_set_base_hook(const unordered_set_base_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    unordered_set_base_hook& operator=(const unordered_set_base_hook& );
@@ -261,37 +261,37 @@
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in an unordered_set an assertion is raised. If link_mode is
    //!   \c auto_unlink and \c is_linked() is true, the node is unlinked.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~unordered_set_base_hook();
 
-   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements 
-   //!   related to those nodes in one or two containers. That is, if the node 
-   //!   this is part of the element e1, the node x is part of the element e2 
-   //!   and both elements are included in the containers s1 and s2, then after 
-   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1 
-   //!   at the position of e1. If one element is not in a container, then 
-   //!   after the swap-operation the other element is not in a container. 
-   //!   Iterators to e1 and e2 related to those nodes are invalidated. 
+   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements
+   //!   related to those nodes in one or two containers. That is, if the node
+   //!   this is part of the element e1, the node x is part of the element e2
+   //!   and both elements are included in the containers s1 and s2, then after
+   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1
+   //!   at the position of e1. If one element is not in a container, then
+   //!   after the swap-operation the other element is not in a container.
+   //!   Iterators to e1 and e2 related to those nodes are invalidated.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
-   //! <b>Throws</b>: Nothing. 
+   //! <b>Throws</b>: Nothing.
    void swap_nodes(unordered_set_base_hook &other);
 
    //! <b>Precondition</b>: link_mode must be \c safe_link or \c auto_unlink.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c unordered_set::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c unordered_set::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
 
    //! <b>Effects</b>: Removes the node if it's inserted in a container.
    //!   This function is only allowed if link_mode is \c auto_unlink.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    void unlink();
    #endif
 };
@@ -308,7 +308,7 @@
 {
    /// @cond
    typedef typename pack_options
-      < hook_defaults, 
+      < hook_defaults,
          #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
          O1, O2, O3, O4
          #else
@@ -332,7 +332,7 @@
 //! Put a public data member unordered_set_member_hook in order to store objects of this class in
 //! an unordered_set/unordered_multi_set. unordered_set_member_hook holds the data necessary for maintaining the
 //! unordered_set/unordered_multi_set and provides an appropriate value_traits class for unordered_set/unordered_multi_set.
-//! 
+//!
 //! The hook admits the following options: \c void_pointer<>,
 //! \c link_mode<> and \c store_hash<>.
 //!
@@ -362,27 +362,27 @@
    public:
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    unordered_set_member_hook();
 
    //! <b>Effects</b>: If link_mode is \c auto_unlink or \c safe_link
    //!   initializes the node to an unlinked state. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
    //! <b>Rationale</b>: Providing a copy-constructor
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    unordered_set_member_hook(const unordered_set_member_hook& );
 
    //! <b>Effects</b>: Empty function. The argument is ignored.
-   //! 
-   //! <b>Throws</b>: Nothing. 
-   //! 
-   //! <b>Rationale</b>: Providing an assignment operator 
-   //!   makes classes using the hook STL-compliant without forcing the 
+   //!
+   //! <b>Throws</b>: Nothing.
+   //!
+   //! <b>Rationale</b>: Providing an assignment operator
+   //!   makes classes using the hook STL-compliant without forcing the
    //!   user to do some additional work. \c swap can be used to emulate
    //!   move-semantics.
    unordered_set_member_hook& operator=(const unordered_set_member_hook& );
@@ -391,43 +391,43 @@
    //!   nothing (ie. no code is generated). If link_mode is \c safe_link and the
    //!   object is stored in an unordered_set an assertion is raised. If link_mode is
    //!   \c auto_unlink and \c is_linked() is true, the node is unlinked.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    ~unordered_set_member_hook();
 
-   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements 
-   //!   related to those nodes in one or two containers. That is, if the node 
-   //!   this is part of the element e1, the node x is part of the element e2 
-   //!   and both elements are included in the containers s1 and s2, then after 
-   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1 
-   //!   at the position of e1. If one element is not in a container, then 
-   //!   after the swap-operation the other element is not in a container. 
-   //!   Iterators to e1 and e2 related to those nodes are invalidated. 
+   //! <b>Effects</b>: Swapping two nodes swaps the position of the elements
+   //!   related to those nodes in one or two containers. That is, if the node
+   //!   this is part of the element e1, the node x is part of the element e2
+   //!   and both elements are included in the containers s1 and s2, then after
+   //!   the swap-operation e1 is in s2 at the position of e2 and e2 is in s1
+   //!   at the position of e1. If one element is not in a container, then
+   //!   after the swap-operation the other element is not in a container.
+   //!   Iterators to e1 and e2 related to those nodes are invalidated.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    //!
-   //! <b>Throws</b>: Nothing. 
+   //! <b>Throws</b>: Nothing.
    void swap_nodes(unordered_set_member_hook &other);
 
    //! <b>Precondition</b>: link_mode must be \c safe_link or \c auto_unlink.
    //!
    //! <b>Returns</b>: true, if the node belongs to a container, false
-   //!   otherwise. This function can be used to test whether \c unordered_set::iterator_to 
-   //!   will return a valid iterator. 
+   //!   otherwise. This function can be used to test whether \c unordered_set::iterator_to
+   //!   will return a valid iterator.
    //!
-   //! <b>Complexity</b>: Constant 
+   //! <b>Complexity</b>: Constant
    bool is_linked() const;
 
    //! <b>Effects</b>: Removes the node if it's inserted in a container.
    //!   This function is only allowed if link_mode is \c auto_unlink.
-   //! 
-   //! <b>Throws</b>: Nothing. 
+   //!
+   //! <b>Throws</b>: Nothing.
    void unlink();
    #endif
 };
 
-} //namespace intrusive 
-} //namespace boost 
+} //namespace intrusive
+} //namespace boost
 
 #include <boost/intrusive/detail/config_end.hpp>