[prev in list] [next in list] [prev in thread] [next in thread] 

List:       boost-commit
Subject:    [Boost-commit] svn:boost r76236 - in trunk/boost/container: .
From:       igaztanaga () gmail ! com
Date:       2011-12-30 23:38:14
Message-ID: 20111230233814.8D57D2F818C () wowbagger ! osl ! iu ! edu
[Download RAW message or body]

Author: igaztanaga
Date: 2011-12-30 18:38:12 EST (Fri, 30 Dec 2011)
New Revision: 76236
URL: http://svn.boost.org/trac/boost/changeset/76236

Log:
Bugs #6335 & #6336
Text files modified: 
   trunk/boost/container/allocator/allocator_traits.hpp |     5 ++-                   \
  trunk/boost/container/detail/flat_tree.hpp           |    48 \
++++++++++++-------------------------     trunk/boost/container/detail/mpl.hpp        \
|     4 +++                                       \
trunk/boost/container/detail/tree.hpp                |    26 +++++++++++---------     \
  trunk/boost/container/flat_map.hpp                   |    50 \
+++++++++++++++++++++------------------   trunk/boost/container/flat_set.hpp          \
|    23 +++++++++--------                         trunk/boost/container/map.hpp       \
|    25 ++++++++++---------                       trunk/boost/container/set.hpp       \
|    38 ++++++++++++++++++------------            trunk/boost/container/slist.hpp     \
|     9 ++++--                                    \
trunk/boost/container/stable_vector.hpp              |    19 ++++++++-------          \
  trunk/boost/container/vector.hpp                     |    18 +++++++-------         \
  11 files changed, 137 insertions(+), 128 deletions(-)

Modified: trunk/boost/container/allocator/allocator_traits.hpp
==============================================================================
--- trunk/boost/container/allocator/allocator_traits.hpp	(original)
+++ trunk/boost/container/allocator/allocator_traits.hpp	2011-12-30 18:38:12 EST \
(Fri, 30 Dec 2011) @@ -26,6 +26,7 @@
 #include <boost/intrusive/pointer_traits.hpp>
 #include <boost/container/allocator/memory_util.hpp>
 #include <boost/type_traits/integral_constant.hpp>
+#include <boost/container/detail/mpl.hpp>
 #include <boost/move/move.hpp>
 #include <limits> //numeric_limits<>::max()
 #include <new>    //placement new
@@ -124,11 +125,11 @@
                const_pointer;
       //reference
       typedef BOOST_INTRUSIVE_OBTAIN_TYPE_WITH_DEFAULT(boost::container::container_detail::, \
                Alloc,
-         reference, value_type&)
+         reference, typename container_detail::unvoid<value_type>::type&)
             reference;
       //const_reference
       typedef BOOST_INTRUSIVE_OBTAIN_TYPE_WITH_DEFAULT(boost::container::container_detail::, \
                Alloc, 
-         const_reference, const value_type&)
+         const_reference, const typename \
container_detail::unvoid<value_type>::type&)  const_reference;
       //void_pointer
       typedef BOOST_INTRUSIVE_OBTAIN_TYPE_WITH_EVAL_DEFAULT(boost::container::container_detail::, \
Alloc, 

Modified: trunk/boost/container/detail/flat_tree.hpp
==============================================================================
--- trunk/boost/container/detail/flat_tree.hpp	(original)
+++ trunk/boost/container/detail/flat_tree.hpp	2011-12-30 18:38:12 EST (Fri, 30 Dec \
2011) @@ -352,7 +352,7 @@
    #ifdef BOOST_CONTAINER_PERFECT_FORWARDING
 
    template <class... Args>
-   iterator emplace_unique(Args&&... args)
+   std::pair<iterator, bool> emplace_unique(Args&&... args)
    {
       value_type && val = value_type(boost::forward<Args>(args)...);
       insert_commit_data data;
@@ -361,7 +361,7 @@
       if(ret.second){
          ret.first = priv_insert_commit(data, boost::move(val));
       }
-      return ret.first;
+      return ret;
    }
 
    template <class... Args>
@@ -398,27 +398,28 @@
 
    #define BOOST_PP_LOCAL_MACRO(n)                                                   \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
                BOOST_PP_EXPR_IF(n, >) \
-   iterator emplace_unique(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))       \
\ +   std::pair<iterator, bool>                                                       \
\ +      emplace_unique(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))           \
\  {                                                                                  \
                \
-      BOOST_PP_EXPR_IF(BOOST_PP_NOT(n), container_detail::value_init<) value_type    \
\ +      BOOST_PP_EXPR_IF(BOOST_PP_NOT(n), container_detail::value_init<) value_type  \
                \
          BOOST_PP_EXPR_IF(BOOST_PP_NOT(n), >) vval BOOST_PP_LPAREN_IF(n)             \
                \
-            BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _) \
BOOST_PP_RPAREN_IF(n); \ +            BOOST_PP_ENUM(n, \
                BOOST_CONTAINER_PP_PARAM_FORWARD, _) BOOST_PP_RPAREN_IF(n);  \
       value_type &val = vval;                                                        \
                \
       insert_commit_data data;                                                       \
                \
       std::pair<iterator,bool> ret = priv_insert_unique_prepare(val, data);          \
                \
       if(ret.second){                                                                \
                \
          ret.first = priv_insert_commit(data, boost::move(val));                     \
                \
       }                                                                              \
                \
-      return ret.first;                                                              \
\ +      return ret;                                                                  \
\  }                                                                                  \
                \
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
BOOST_PP_EXPR_IF(n, >) \  iterator emplace_hint_unique(const_iterator hint            \
                \
-                        BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
\ +                        BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, \
_))      \  {                                                                         \
                \
-      BOOST_PP_EXPR_IF(BOOST_PP_NOT(n), container_detail::value_init<) value_type    \
\ +      BOOST_PP_EXPR_IF(BOOST_PP_NOT(n), container_detail::value_init<) value_type  \
                \
          BOOST_PP_EXPR_IF(BOOST_PP_NOT(n), >) vval BOOST_PP_LPAREN_IF(n)             \
                \
-            BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _) \
BOOST_PP_RPAREN_IF(n); \ +            BOOST_PP_ENUM(n, \
                BOOST_CONTAINER_PP_PARAM_FORWARD, _) BOOST_PP_RPAREN_IF(n);  \
       value_type &val = vval;                                                        \
                \
       insert_commit_data data;                                                       \
                \
       std::pair<iterator,bool> ret = priv_insert_unique_prepare(hint, val, data);    \
\ @@ -429,11 +430,11 @@
    }                                                                                 \
                \
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
                BOOST_PP_EXPR_IF(n, >) \
-   iterator emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))        \
\ +   iterator emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))      \
\  {                                                                                  \
                \
-      BOOST_PP_EXPR_IF(BOOST_PP_NOT(n), container_detail::value_init<) value_type    \
\ +      BOOST_PP_EXPR_IF(BOOST_PP_NOT(n), container_detail::value_init<) value_type  \
                \
          BOOST_PP_EXPR_IF(BOOST_PP_NOT(n), >) vval BOOST_PP_LPAREN_IF(n)             \
                \
-            BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _) \
BOOST_PP_RPAREN_IF(n); \ +            BOOST_PP_ENUM(n, \
                BOOST_CONTAINER_PP_PARAM_FORWARD, _) BOOST_PP_RPAREN_IF(n);  \
       value_type &val = vval;                                                        \
                \
       iterator i = this->upper_bound(KeyOfValue()(val));                             \
                \
       i = this->m_data.m_vect.insert(i, boost::move(val));                           \
\ @@ -442,11 +443,11 @@
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
BOOST_PP_EXPR_IF(n, >) \  iterator emplace_hint_equal(const_iterator hint             \
                \
-                      BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _))   \
\ +                      BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
\  {                                                                                  \
                \
-      BOOST_PP_EXPR_IF(BOOST_PP_NOT(n), container_detail::value_init<) value_type    \
\ +      BOOST_PP_EXPR_IF(BOOST_PP_NOT(n), container_detail::value_init<) value_type  \
                \
          BOOST_PP_EXPR_IF(BOOST_PP_NOT(n), >) vval BOOST_PP_LPAREN_IF(n)             \
                \
-            BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _) \
BOOST_PP_RPAREN_IF(n); \ +            BOOST_PP_ENUM(n, \
                BOOST_CONTAINER_PP_PARAM_FORWARD, _) BOOST_PP_RPAREN_IF(n);  \
       value_type &val = vval;                                                        \
                \
       insert_commit_data data;                                                       \
                \
       priv_insert_equal_prepare(hint, val, data);                                    \
\ @@ -743,23 +744,6 @@
       for ( ; first != last; ++first)
          this->insert_equal(*first);
    }
-
-/*
-   template <class FwdIt>
-   void priv_insert_unique(FwdIt first, FwdIt last, std::forward_iterator_tag)
-   {
-      size_type len = static_cast<size_type>(std::distance(first, last));
-      this->reserve(this->size()+len);
-      priv_insert_unique(first, last, std::input_iterator_tag());
-   }
-
-   template <class InIt>
-   void priv_insert_unique(InIt first, InIt last, std::input_iterator_tag)
-   {
-      for ( ; first != last; ++first)
-         this->insert_unique(*first);
-   }
-*/
 };
 
 template <class Key, class Value, class KeyOfValue, 

Modified: trunk/boost/container/detail/mpl.hpp
==============================================================================
--- trunk/boost/container/detail/mpl.hpp	(original)
+++ trunk/boost/container/detail/mpl.hpp	2011-12-30 18:38:12 EST (Fri, 30 Dec 2011)
@@ -148,6 +148,10 @@
    static const std::size_t value = 0;
 };
 
+template <typename T> struct unvoid { typedef T type; };
+template <> struct unvoid<void> { struct type { }; };
+template <> struct unvoid<const void> { struct type { }; };
+
 }  //namespace container_detail { 
 }  //namespace container { 
 }  //namespace boost {

Modified: trunk/boost/container/detail/tree.hpp
==============================================================================
--- trunk/boost/container/detail/tree.hpp	(original)
+++ trunk/boost/container/detail/tree.hpp	2011-12-30 18:38:12 EST (Fri, 30 Dec 2011)
@@ -753,7 +753,7 @@
    }
 
    private:
-   iterator emplace_unique_impl(NodePtr p)
+   std::pair<iterator, bool> emplace_unique_impl(NodePtr p)
    {
       value_type &v = p->get_data();
       insert_commit_data data;
@@ -761,9 +761,11 @@
          this->insert_unique_check(KeyOfValue()(v), data);
       if(!ret.second){
          Destroyer(this->node_alloc())(p);
-         return ret.first;
+         return ret;
       }
-      return iterator(iiterator(this->icont().insert_unique_commit(*p, data)));
+      return std::pair<iterator,bool>
+         ( iterator(iiterator(this->icont().insert_unique_commit(*p, data)))
+         , true );
    }
 
    iterator emplace_unique_hint_impl(const_iterator hint, NodePtr p)
@@ -784,7 +786,7 @@
    #ifdef BOOST_CONTAINER_PERFECT_FORWARDING
 
    template <class... Args>
-   iterator emplace_unique(Args&&... args)
+   std::pair<iterator, bool> emplace_unique(Args&&... args)
    {  return this->emplace_unique_impl(AllocHolder::create_node(boost::forward<Args>(args)...)); \
}  
    template <class... Args>
@@ -809,32 +811,32 @@
 
    #define BOOST_PP_LOCAL_MACRO(n)                                                   \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
                BOOST_PP_EXPR_IF(n, >)                   \
-   iterator emplace_unique(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))       \
\ +   std::pair<iterator, bool> emplace_unique(BOOST_PP_ENUM(n, \
BOOST_CONTAINER_PP_PARAM_LIST, _))             \  {                                   \
                \
       return this->emplace_unique_impl                                               \
                \
-         (AllocHolder::create_node(BOOST_PP_ENUM(n, \
BOOST_CONTAINER_PP_PARAM_FORWARD, _)));                \ +         \
(AllocHolder::create_node(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)));    \
\  }                                                                                  \
                \
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
BOOST_PP_EXPR_IF(n, >)                   \  iterator \
emplace_hint_unique(const_iterator hint                                               \
                \
-                       BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _))  \
\ +                       BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, \
_))                         \  {                                                      \
                \
       return this->emplace_unique_hint_impl                                          \
                \
-         (hint, AllocHolder::create_node(BOOST_PP_ENUM(n, \
BOOST_CONTAINER_PP_PARAM_FORWARD, _)));          \ +         (hint, \
AllocHolder::create_node(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)));     \
\  }                                                                                  \
                \
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
                BOOST_PP_EXPR_IF(n, >)                   \
-   iterator emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))        \
\ +   iterator emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))      \
\  {                                                                                  \
                \
-      NodePtr p(AllocHolder::create_node(BOOST_PP_ENUM(n, \
BOOST_CONTAINER_PP_PARAM_FORWARD, _)));          \ +      NodePtr \
p(AllocHolder::create_node(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)));   \
                \
       return iterator(this->icont().insert_equal(this->icont().end(), *p));          \
\  }                                                                                  \
                \
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
BOOST_PP_EXPR_IF(n, >)                   \  iterator \
emplace_hint_equal(const_iterator hint                                                \
                \
-                       BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _))  \
\ +                       BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, \
_))                         \  {                                                      \
                \
-      NodePtr p(AllocHolder::create_node(BOOST_PP_ENUM(n, \
BOOST_CONTAINER_PP_PARAM_FORWARD, _)));          \ +      NodePtr \
p(AllocHolder::create_node(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)));   \
                \
       return iterator(this->icont().insert_equal(hint.get(), *p));                   \
\  }                                                                                  \
\  //!

Modified: trunk/boost/container/flat_map.hpp
==============================================================================
--- trunk/boost/container/flat_map.hpp	(original)
+++ trunk/boost/container/flat_map.hpp	2011-12-30 18:38:12 EST (Fri, 30 Dec 2011)
@@ -515,8 +515,8 @@
    //!
    //! <b>Note</b>: If an element is inserted it might invalidate elements.
    iterator insert(const_iterator position, BOOST_RV_REF(value_type) x)
-      { return container_detail::force_copy<iterator>(
-         m_flat_tree.insert_unique(container_detail::force<impl_const_iterator>(position), \
boost::move(container_detail::force<impl_value_type>(x)))); } +      { return \
container_detail::force_copy<iterator> +         \
(m_flat_tree.insert_unique(container_detail::force<impl_const_iterator>(position), \
boost::move(container_detail::force<impl_value_type>(x)))); }  
    //! <b>Effects</b>: Inserts an element move constructed from x in the container.
    //!   p is a hint pointing to where the insert should start to search.
@@ -548,7 +548,7 @@
 
    #if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || \
defined(BOOST_CONTAINER_DOXYGEN_INVOKED)  
-   //! <b>Effects</b>: Inserts an object of type T constructed with
+   //! <b>Effects</b>: Inserts an object x of type T constructed with
    //!   std::forward<Args>(args)... if and only if there is no element in the \
container   //!   with key equivalent to the key of x.
    //!
@@ -561,8 +561,8 @@
    //!
    //! <b>Note</b>: If an element is inserted it might invalidate elements.
    template <class... Args>
-   iterator emplace(Args&&... args)
-   {  return container_detail::force_copy<iterator>(m_flat_tree.emplace_unique(boost::forward<Args>(args)...)); \
} +   std::pair<iterator,bool> emplace(Args&&... args)
+   {  return container_detail::force_copy< std::pair<iterator, bool> \
>(m_flat_tree.emplace_unique(boost::forward<Args>(args)...)); }  
    //! <b>Effects</b>: Inserts an object of type T constructed with
    //!   std::forward<Args>(args)... in the container if and only if there is 
@@ -578,22 +578,23 @@
    //! <b>Note</b>: If an element is inserted it might invalidate elements.
    template <class... Args>
    iterator emplace_hint(const_iterator hint, Args&&... args)
-   {  return container_detail::force_copy<iterator>(m_flat_tree.emplace_hint_unique(container_detail::force<impl_const_iterator>(hint), \
boost::forward<Args>(args)...)); } +   {  return \
container_detail::force_copy<iterator> +      \
(m_flat_tree.emplace_hint_unique(container_detail::force<impl_const_iterator>(hint), \
boost::forward<Args>(args)...)); }  
    #else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
 
    #define BOOST_PP_LOCAL_MACRO(n)                                                   \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
                BOOST_PP_EXPR_IF(n, >)          \
-   iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))              \
                \
-   {  return container_detail::force_copy<iterator>(m_flat_tree.emplace_unique       \
                \
-               (BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); }           \
\ +   std::pair<iterator,bool> emplace(BOOST_PP_ENUM(n, \
BOOST_CONTAINER_PP_PARAM_LIST, _))            \ +   {  return \
container_detail::force_copy< std::pair<iterator, bool> >                             \
\ +         (m_flat_tree.emplace_unique(BOOST_PP_ENUM(n, \
                BOOST_CONTAINER_PP_PARAM_FORWARD, _))); }    \
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
BOOST_PP_EXPR_IF(n, >)          \  iterator emplace_hint(const_iterator hint          \
                \
-                         BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, \
                _))             \
-   {  return container_detail::force_copy<iterator>(m_flat_tree.emplace_hint_unique  \
                \
-            (container_detail::force<impl_const_iterator>(hint)                      \
                \
-               BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); }   \
\ +                         BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, \
_))              \ +   {  return \
container_detail::force_copy<iterator>(m_flat_tree.emplace_hint_unique                \
\ +            (container_detail::force<impl_const_iterator>(hint)                    \
\ +               BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); } \
\  //!
    #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
    #include BOOST_PP_LOCAL_ITERATE()
@@ -631,7 +632,8 @@
    //! <b>Complexity</b>: Logarithmic search time plus erasure time
    //!   linear to the elements with bigger keys.
    iterator erase(const_iterator first, const_iterator last)
-      { return container_detail::force_copy<iterator>(m_flat_tree.erase(container_detail::force<impl_const_iterator>(first), \
container_detail::force<impl_const_iterator>(last))); } +      { return \
container_detail::force_copy<iterator> +         \
(m_flat_tree.erase(container_detail::force<impl_const_iterator>(first), \
container_detail::force<impl_const_iterator>(last))); }  
    //! <b>Effects</b>: erase(a.begin(),a.end()).
    //!
@@ -1151,7 +1153,8 @@
    //!
    //! <b>Note</b>: If an element is inserted it might invalidate elements.
    iterator insert(const_iterator position, const value_type& x) 
-      { return container_detail::force_copy<iterator>(m_flat_tree.insert_equal(container_detail::force<impl_const_iterator>(position), \
container_detail::force<impl_value_type>(x))); } +      { return \
container_detail::force_copy<iterator> +         \
(m_flat_tree.insert_equal(container_detail::force<impl_const_iterator>(position), \
container_detail::force<impl_value_type>(x))); }  
    //! <b>Effects</b>: Inserts a value move constructed from x in the container.
    //!   p is a hint pointing to where the insert should start to search.
@@ -1237,16 +1240,16 @@
 
    #define BOOST_PP_LOCAL_MACRO(n)                                                   \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
                BOOST_PP_EXPR_IF(n, >)          \
-   iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))              \
                \
-   {  return container_detail::force_copy<iterator>(m_flat_tree.emplace_equal        \
                \
-               (BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); }           \
\ +   iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))            \
\ +   {  return container_detail::force_copy<iterator>(m_flat_tree.emplace_equal      \
\ +               (BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); }         \
                \
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
BOOST_PP_EXPR_IF(n, >)          \  iterator emplace_hint(const_iterator hint          \
                \
-                         BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, \
                _))             \
-   {  return container_detail::force_copy<iterator>(m_flat_tree.emplace_hint_equal   \
                \
-            (container_detail::force<impl_const_iterator>(hint)                      \
                \
-               BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); }   \
\ +                         BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, \
_))              \ +   {  return \
container_detail::force_copy<iterator>(m_flat_tree.emplace_hint_equal                 \
\ +            (container_detail::force<impl_const_iterator>(hint)                    \
\ +               BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); } \
\  //!
    #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
    #include BOOST_PP_LOCAL_ITERATE()
@@ -1284,7 +1287,8 @@
    //! <b>Complexity</b>: Logarithmic search time plus erasure time
    //!   linear to the elements with bigger keys.
    iterator erase(const_iterator first, const_iterator last)
-      { return container_detail::force_copy<iterator>(m_flat_tree.erase(container_detail::force<impl_const_iterator>(first), \
container_detail::force<impl_const_iterator>(last))); } +      { return \
container_detail::force_copy<iterator> +         \
(m_flat_tree.erase(container_detail::force<impl_const_iterator>(first), \
container_detail::force<impl_const_iterator>(last))); }  
    //! <b>Effects</b>: erase(a.begin(),a.end()).
    //!

Modified: trunk/boost/container/flat_set.hpp
==============================================================================
--- trunk/boost/container/flat_set.hpp	(original)
+++ trunk/boost/container/flat_set.hpp	2011-12-30 18:38:12 EST (Fri, 30 Dec 2011)
@@ -418,7 +418,7 @@
 
    #if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || \
defined(BOOST_CONTAINER_DOXYGEN_INVOKED)  
-   //! <b>Effects</b>: Inserts an object of type T constructed with
+   //! <b>Effects</b>: Inserts an object x of type T constructed with
    //!   std::forward<Args>(args)... if and only if there is no element in the \
container   //!   with key equivalent to the key of x.
    //!
@@ -431,7 +431,7 @@
    //!
    //! <b>Note</b>: If an element is inserted it might invalidate elements.
    template <class... Args>
-   iterator emplace(Args&&... args)
+   std::pair<iterator,bool> emplace(Args&&... args)
    {  return m_flat_tree.emplace_unique(boost::forward<Args>(args)...); }
 
    //! <b>Effects</b>: Inserts an object of type T constructed with
@@ -454,14 +454,14 @@
 
    #define BOOST_PP_LOCAL_MACRO(n)                                                   \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
                BOOST_PP_EXPR_IF(n, >)          \
-   iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))              \
                \
-   {  return m_flat_tree.emplace_unique(BOOST_PP_ENUM(n, \
BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \ +   std::pair<iterator,bool> \
emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))            \ +   {  \
return m_flat_tree.emplace_unique(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, \
                _)); }  \
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
BOOST_PP_EXPR_IF(n, >)          \  iterator emplace_hint(const_iterator hint          \
                \
-                         BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, \
_))             \ +                         BOOST_PP_ENUM_TRAILING(n, \
BOOST_CONTAINER_PP_PARAM_LIST, _))              \  {  return \
m_flat_tree.emplace_hint_unique                                                       \
                \
-            (hint BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \
\ +            (hint BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
}               \  //!
    #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
    #include BOOST_PP_LOCAL_ITERATE()
@@ -982,7 +982,8 @@
    { return this->insert(position, const_cast<const T &>(x)); }
 
    template<class U>
-   iterator insert(const_iterator position, const U &u, typename \
container_detail::enable_if_c<container_detail::is_same<T, U>::value && \
!::boost::has_move_emulation_enabled<U>::value >::type* =0) +   iterator insert( \
const_iterator position, const U &u +                  , typename \
container_detail::enable_if_c<container_detail::is_same<T, U>::value && \
!::boost::has_move_emulation_enabled<U>::value >::type* =0)  {  return \
priv_insert(position, u); }  #endif
 
@@ -1044,14 +1045,14 @@
 
    #define BOOST_PP_LOCAL_MACRO(n)                                                   \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
                BOOST_PP_EXPR_IF(n, >)          \
-   iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))              \
                \
-   {  return m_flat_tree.emplace_equal(BOOST_PP_ENUM(n, \
BOOST_CONTAINER_PP_PARAM_FORWARD, _)); }  \ +   iterator emplace(BOOST_PP_ENUM(n, \
BOOST_CONTAINER_PP_PARAM_LIST, _))                            \ +   {  return \
m_flat_tree.emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); }   \
                \
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
BOOST_PP_EXPR_IF(n, >)          \  iterator emplace_hint(const_iterator hint          \
                \
-                         BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, \
_))             \ +                         BOOST_PP_ENUM_TRAILING(n, \
BOOST_CONTAINER_PP_PARAM_LIST, _))              \  {  return \
m_flat_tree.emplace_hint_equal                                                        \
                \
-            (hint BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \
\ +            (hint BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
}               \  //!
    #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
    #include BOOST_PP_LOCAL_ITERATE()

Modified: trunk/boost/container/map.hpp
==============================================================================
--- trunk/boost/container/map.hpp	(original)
+++ trunk/boost/container/map.hpp	2011-12-30 18:38:12 EST (Fri, 30 Dec 2011)
@@ -504,18 +504,19 @@
 
    #if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || \
defined(BOOST_CONTAINER_DOXYGEN_INVOKED)  
-   //! <b>Effects</b>: Inserts an object of type T constructed with
+   //! <b>Effects</b>: Inserts an object x of type T constructed with
    //!   std::forward<Args>(args)... in the container if and only if there is 
    //!   no element in the container with an equivalent key.
    //!   p is a hint pointing to where the insert should start to search.
    //!
-   //! <b>Returns</b>: An iterator pointing to the element with key equivalent
-   //!   to the key of x.
+   //! <b>Returns</b>: The bool component of the returned pair is true if and only 
+   //!   if the insertion takes place, and the iterator component of the pair
+   //!   points to the element with key equivalent to the key of x.
    //!
    //! <b>Complexity</b>: Logarithmic in general, but amortized constant if t
    //!   is inserted right before p.
    template <class... Args>
-   iterator emplace(Args&&... args)
+   std::pair<iterator,bool> emplace(Args&&... args)
    {  return m_tree.emplace_unique(boost::forward<Args>(args)...); }
 
    //! <b>Effects</b>: Inserts an object of type T constructed with
@@ -536,14 +537,14 @@
 
    #define BOOST_PP_LOCAL_MACRO(n)                                                   \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
                BOOST_PP_EXPR_IF(n, >)          \
-   iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))              \
                \
-   {  return m_tree.emplace_unique(BOOST_PP_ENUM(n, \
BOOST_CONTAINER_PP_PARAM_FORWARD, _)); }      \ +   std::pair<iterator,bool> \
emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))            \ +   {  \
return m_tree.emplace_unique(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
                }       \
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
BOOST_PP_EXPR_IF(n, >)          \  iterator emplace_hint(const_iterator hint          \
                \
-                         BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, \
_))             \ +                         BOOST_PP_ENUM_TRAILING(n, \
BOOST_CONTAINER_PP_PARAM_LIST, _))              \  {  return \
m_tree.emplace_hint_unique(hint                                                       \
                \
-                               BOOST_PP_ENUM_TRAILING(n, \
BOOST_CONTAINER_PP_PARAM_FORWARD, _));}  \ +                               \
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _));}   \  //!
    #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
    #include BOOST_PP_LOCAL_ITERATE()
@@ -1138,14 +1139,14 @@
 
    #define BOOST_PP_LOCAL_MACRO(n)                                                   \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
                BOOST_PP_EXPR_IF(n, >)          \
-   iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))              \
                \
-   {  return m_tree.emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, \
_)); }       \ +   iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, \
_))                            \ +   {  return m_tree.emplace_equal(BOOST_PP_ENUM(n, \
                BOOST_CONTAINER_PP_PARAM_FORWARD, _)); }        \
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
BOOST_PP_EXPR_IF(n, >)          \  iterator emplace_hint(const_iterator hint          \
                \
-                         BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, \
_))             \ +                         BOOST_PP_ENUM_TRAILING(n, \
BOOST_CONTAINER_PP_PARAM_LIST, _))              \  {  return \
m_tree.emplace_hint_equal(hint                                                        \
                \
-                               BOOST_PP_ENUM_TRAILING(n, \
BOOST_CONTAINER_PP_PARAM_FORWARD, _));}  \ +                               \
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _));}   \  //!
    #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
    #include BOOST_PP_LOCAL_ITERATE()

Modified: trunk/boost/container/set.hpp
==============================================================================
--- trunk/boost/container/set.hpp	(original)
+++ trunk/boost/container/set.hpp	2011-12-30 18:38:12 EST (Fri, 30 Dec 2011)
@@ -340,7 +340,8 @@
    { return this->insert(const_cast<const T &>(x)); }
 
    template<class U>
-   std::pair<iterator,bool> insert(const U &u, typename \
container_detail::enable_if_c<container_detail::is_same<T, U>::value && \
!::boost::has_move_emulation_enabled<U>::value >::type* =0) +   \
std::pair<iterator,bool> insert(const U &u +      , typename \
container_detail::enable_if_c<container_detail::is_same<T, U>::value && \
!::boost::has_move_emulation_enabled<U>::value >::type* =0)  {  return \
priv_insert(u); }  #endif
 
@@ -372,7 +373,8 @@
    { return this->insert(position, const_cast<const T &>(x)); }
 
    template<class U>
-   iterator insert(const_iterator position, const U &u, typename \
container_detail::enable_if_c<container_detail::is_same<T, U>::value && \
!::boost::has_move_emulation_enabled<U>::value >::type* =0) +   iterator insert( \
const_iterator position, const U &u +                  , typename \
container_detail::enable_if_c<container_detail::is_same<T, U>::value && \
!::boost::has_move_emulation_enabled<U>::value >::type* =0)  {  return \
priv_insert(position, u); }  #endif
 
@@ -397,18 +399,22 @@
 
    #if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || \
defined(BOOST_CONTAINER_DOXYGEN_INVOKED)  
-   //! <b>Effects</b>:  Inserts an object of type T constructed with
+   //! <b>Effects</b>:  Inserts an object x of type T constructed with
    //!   std::forward<Args>(args)... if and only if there is 
    //!   no element in the container with equivalent value.
    //!   and returns the iterator pointing to the
-   //!   newly inserted element. 
+   //!   newly inserted element.
+   //!
+   //! <b>Returns</b>: The bool component of the returned pair is true if and only 
+   //!   if the insertion takes place, and the iterator component of the pair
+   //!   points to the element with key equivalent to the key of x.
    //!
    //! <b>Throws</b>: If memory allocation throws or
    //!   T's in-place constructor throws.
    //!
    //! <b>Complexity</b>: Logarithmic.
    template <class... Args>
-   iterator emplace(Args&&... args)
+   std::pair<iterator,bool> emplace(Args&&... args)
    {  return m_tree.emplace_unique(boost::forward<Args>(args)...); }
 
    //! <b>Effects</b>:  Inserts an object of type T constructed with
@@ -428,14 +434,14 @@
 
    #define BOOST_PP_LOCAL_MACRO(n)                                                   \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
                BOOST_PP_EXPR_IF(n, >)          \
-   iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))              \
                \
-   {  return m_tree.emplace_unique(BOOST_PP_ENUM(n, \
BOOST_CONTAINER_PP_PARAM_FORWARD, _)); }      \ +   std::pair<iterator,bool> \
emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))            \ +   {  \
return m_tree.emplace_unique(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
                }       \
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
BOOST_PP_EXPR_IF(n, >)          \  iterator emplace_hint(const_iterator hint          \
                \
-                         BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, \
_))             \ +                         BOOST_PP_ENUM_TRAILING(n, \
BOOST_CONTAINER_PP_PARAM_LIST, _))              \  {  return \
m_tree.emplace_hint_unique(hint                                                       \
                \
-                               BOOST_PP_ENUM_TRAILING(n, \
BOOST_CONTAINER_PP_PARAM_FORWARD, _));}  \ +                               \
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _));}   \  //!
    #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
    #include BOOST_PP_LOCAL_ITERATE()
@@ -902,7 +908,8 @@
    { return this->insert(const_cast<const T &>(x)); }
 
    template<class U>
-   iterator insert(const U &u, typename \
container_detail::enable_if_c<container_detail::is_same<T, U>::value && \
!::boost::has_move_emulation_enabled<U>::value >::type* =0) +   iterator insert(const \
U &u +      , typename container_detail::enable_if_c<container_detail::is_same<T, \
U>::value && !::boost::has_move_emulation_enabled<U>::value >::type* =0)  {  return \
priv_insert(u); }  #endif
 
@@ -932,7 +939,8 @@
    { return this->insert(position, const_cast<const T &>(x)); }
 
    template<class U>
-   iterator insert(const_iterator position, const U &u, typename \
container_detail::enable_if_c<container_detail::is_same<T, U>::value && \
!::boost::has_move_emulation_enabled<U>::value >::type* =0) +   iterator insert( \
const_iterator position, const U &u +                  , typename \
container_detail::enable_if_c<container_detail::is_same<T, U>::value && \
!::boost::has_move_emulation_enabled<U>::value >::type* =0)  {  return \
priv_insert(position, u); }  #endif
 
@@ -983,14 +991,14 @@
 
    #define BOOST_PP_LOCAL_MACRO(n)                                                   \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
                BOOST_PP_EXPR_IF(n, >)          \
-   iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))              \
                \
-   {  return m_tree.emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, \
_)); }       \ +   iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, \
_))                            \ +   {  return m_tree.emplace_equal(BOOST_PP_ENUM(n, \
                BOOST_CONTAINER_PP_PARAM_FORWARD, _)); }        \
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
BOOST_PP_EXPR_IF(n, >)          \  iterator emplace_hint(const_iterator hint          \
                \
-                         BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, \
_))             \ +                         BOOST_PP_ENUM_TRAILING(n, \
BOOST_CONTAINER_PP_PARAM_LIST, _))              \  {  return \
m_tree.emplace_hint_equal(hint                                                        \
                \
-                               BOOST_PP_ENUM_TRAILING(n, \
BOOST_CONTAINER_PP_PARAM_FORWARD, _));}  \ +                               \
BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _));}   \  //!
    #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
    #include BOOST_PP_LOCAL_ITERATE()

Modified: trunk/boost/container/slist.hpp
==============================================================================
--- trunk/boost/container/slist.hpp	(original)
+++ trunk/boost/container/slist.hpp	2011-12-30 18:38:12 EST (Fri, 30 Dec 2011)
@@ -638,7 +638,8 @@
    void push_front(T &x) { push_front(const_cast<const T &>(x)); }
 
    template<class U>
-   void push_front(const U &u, typename \
container_detail::enable_if_c<container_detail::is_same<T, U>::value && \
!::boost::has_move_emulation_enabled<U>::value >::type* =0) +   void push_front(const \
U &u +      , typename container_detail::enable_if_c<container_detail::is_same<T, \
U>::value && !::boost::has_move_emulation_enabled<U>::value >::type* =0)  {  return \
priv_push_front(u); }  #endif
 
@@ -700,7 +701,8 @@
    { return this->insert_after(position, const_cast<const T &>(x)); }
 
    template<class U>
-   iterator insert_after(const_iterator position, const U &u, typename \
container_detail::enable_if_c<container_detail::is_same<T, U>::value && \
!::boost::has_move_emulation_enabled<U>::value >::type* =0) +   iterator \
insert_after( const_iterator position, const U &u +                        , typename \
container_detail::enable_if_c<container_detail::is_same<T, U>::value && \
!::boost::has_move_emulation_enabled<U>::value >::type* =0)  {  return \
this->priv_insert_after(position, u); }  #endif
 
@@ -768,7 +770,8 @@
    { return this->insert(position, const_cast<const T &>(x)); }
 
    template<class U>
-   iterator insert(const_iterator position, const U &u, typename \
container_detail::enable_if_c<container_detail::is_same<T, U>::value && \
!::boost::has_move_emulation_enabled<U>::value >::type* =0) +   iterator insert( \
const_iterator position, const U &u +                  , typename \
container_detail::enable_if_c<container_detail::is_same<T, U>::value && \
!::boost::has_move_emulation_enabled<U>::value >::type* =0)  {  return \
this->priv_insert(position, u); }  #endif
 

Modified: trunk/boost/container/stable_vector.hpp
==============================================================================
--- trunk/boost/container/stable_vector.hpp	(original)
+++ trunk/boost/container/stable_vector.hpp	2011-12-30 18:38:12 EST (Fri, 30 Dec \
2011) @@ -7,13 +7,14 @@
 // See http://www.boost.org/libs/container for documentation.
 //
 //////////////////////////////////////////////////////////////////////////////
-/* Stable vector.
- *
- * Copyright 2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- */
+// Stable vector.
+//
+// Copyright 2008 Joaquin M Lopez Munoz.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+//////////////////////////////////////////////////////////////////////////////
 
 #ifndef BOOST_CONTAINER_STABLE_VECTOR_HPP
 #define BOOST_CONTAINER_STABLE_VECTOR_HPP
@@ -140,8 +141,8 @@
 
    #define BOOST_PP_LOCAL_MACRO(n)                                                   \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
                BOOST_PP_EXPR_IF(n, >)    \
-   node_type(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))                     \
                \
-      : value(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))                 \
\ +   node_type(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))                   \
\ +      : value(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))               \
\  {}                                                                                 \
\  //!
    #define BOOST_PP_LOCAL_LIMITS (1, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)

Modified: trunk/boost/container/vector.hpp
==============================================================================
--- trunk/boost/container/vector.hpp	(original)
+++ trunk/boost/container/vector.hpp	2011-12-30 18:38:12 EST (Fri, 30 Dec 2011)
@@ -1045,32 +1045,32 @@
 
    #define BOOST_PP_LOCAL_MACRO(n)                                                   \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
                BOOST_PP_EXPR_IF(n, >)       \
-   void emplace_back(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))             \
\ +   void emplace_back(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _))           \
\  {                                                                                  \
                \
-      T* back_pos = container_detail::to_raw_pointer                                 \
\ +      T* back_pos = container_detail::to_raw_pointer                               \
                \
          (this->members_.m_start) + this->members_.m_size;                           \
                \
       if (this->members_.m_size < this->members_.m_capacity){                        \
                \
          allocator_traits_type::construct (this->alloc()                             \
                \
-            , back_pos BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, \
_) );       \ +            , back_pos BOOST_PP_ENUM_TRAILING(n, \
                BOOST_CONTAINER_PP_PARAM_FORWARD, _) );        \
          ++this->members_.m_size;                                                    \
                \
       }                                                                              \
                \
       else{                                                                          \
                \
-         container_detail::BOOST_PP_CAT(BOOST_PP_CAT(advanced_insert_aux_emplace, \
n), arg)     \ +         \
container_detail::BOOST_PP_CAT(BOOST_PP_CAT(advanced_insert_aux_emplace, n), arg)     \
                \
             <A, T* BOOST_PP_ENUM_TRAILING_PARAMS(n, P)> proxy                        \
                \
-            (this->alloc() BOOST_PP_ENUM_TRAILING(n, \
BOOST_CONTAINER_PP_PARAM_FORWARD, _));    \ +            (this->alloc() \
                BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _));     \
                \
          priv_range_insert(back_pos, 1, proxy);                                      \
                \
       }                                                                              \
\  }                                                                                  \
                \
                                                                                      \
\  BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) \
BOOST_PP_EXPR_IF(n, >)       \  iterator emplace(const_iterator pos                   \
                \
-                    BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _))     \
\ +                    BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _))   \
\  {                                                                                  \
                \
       size_type pos_n = pos - cbegin();                                              \
                \
-         container_detail::BOOST_PP_CAT(BOOST_PP_CAT(advanced_insert_aux_emplace, \
n), arg)     \ +         \
container_detail::BOOST_PP_CAT(BOOST_PP_CAT(advanced_insert_aux_emplace, n), arg)     \
                \
             <A, T* BOOST_PP_ENUM_TRAILING_PARAMS(n, P)> proxy                        \
                \
-            (this->alloc() BOOST_PP_ENUM_TRAILING(n, \
                BOOST_CONTAINER_PP_PARAM_FORWARD, _));    \
-      priv_range_insert(container_detail::to_raw_pointer(pos.get_ptr()), 1, proxy);  \
\ +            (this->alloc() BOOST_PP_ENUM_TRAILING(n, \
BOOST_CONTAINER_PP_PARAM_FORWARD, _));     \ +      \
priv_range_insert(container_detail::to_raw_pointer(pos.get_ptr()), 1, proxy);         \
                \
       return iterator(this->members_.m_start + pos_n);                               \
\  }                                                                                  \
\  //!
_______________________________________________
Boost-commit mailing list
Boost-commit@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-commit


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic