Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r81727 - in branches/release: . boost boost/unordered boost/unordered/detail libs libs/unordered libs/unordered/doc libs/unordered/test/exception libs/unordered/test/objects libs/unordered/test/unordered
From: dnljms_at_[hidden]
Date: 2012-12-05 17:07:06


Author: danieljames
Date: 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
New Revision: 81727
URL: http://svn.boost.org/trac/boost/changeset/81727

Log:
Unordered: Remove and update various deprecated things.

Removed:
   branches/release/libs/unordered/test/unordered/equality_deprecated.cpp
Properties modified:
   branches/release/ (props changed)
   branches/release/boost/ (props changed)
   branches/release/boost/unordered/ (props changed)
   branches/release/libs/ (props changed)
   branches/release/libs/unordered/ (props changed)
Text files modified:
   branches/release/boost/unordered/detail/allocate.hpp | 209 ++++++++-------------------------------
   branches/release/boost/unordered/detail/buckets.hpp | 2
   branches/release/boost/unordered/detail/equivalent.hpp | 26 ----
   branches/release/boost/unordered/detail/extract_key.hpp | 37 +-----
   branches/release/boost/unordered/detail/table.hpp | 12 ++
   branches/release/boost/unordered/detail/unique.hpp | 13 -
   branches/release/boost/unordered/unordered_map.hpp | 20 +-
   branches/release/boost/unordered/unordered_set.hpp | 20 +-
   branches/release/libs/unordered/doc/changes.qbk | 8 +
   branches/release/libs/unordered/doc/ref.php | 16 --
   branches/release/libs/unordered/doc/ref.xml | 64 +----------
   branches/release/libs/unordered/test/exception/insert_exception_tests.cpp | 4
   branches/release/libs/unordered/test/objects/cxx11_allocator.hpp | 2
   branches/release/libs/unordered/test/objects/exception.hpp | 4
   branches/release/libs/unordered/test/objects/minimal.hpp | 6
   branches/release/libs/unordered/test/objects/test.hpp | 2
   branches/release/libs/unordered/test/unordered/Jamfile.v2 | 4
   branches/release/libs/unordered/test/unordered/compile_tests.hpp | 4
   branches/release/libs/unordered/test/unordered/insert_tests.cpp | 36 +++---
   branches/release/libs/unordered/test/unordered/move_tests.cpp | 4
   branches/release/libs/unordered/test/unordered/unnecessary_copy_tests.cpp | 12 +-
   21 files changed, 147 insertions(+), 358 deletions(-)

Modified: branches/release/boost/unordered/detail/allocate.hpp
==============================================================================
--- branches/release/boost/unordered/detail/allocate.hpp (original)
+++ branches/release/boost/unordered/detail/allocate.hpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -85,7 +85,7 @@
     // Either forwarding variadic arguments, or storing the arguments in
     // emplace_args##n
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
 
 #define BOOST_UNORDERED_EMPLACE_TEMPLATE typename... Args
 #define BOOST_UNORDERED_EMPLACE_ARGS BOOST_FWD_REF(Args)... args
@@ -136,7 +136,7 @@
 #define BOOST_UNORDERED_EMPLACE_ARGS2 create_emplace_args
 #define BOOST_UNORDERED_EMPLACE_ARGS3 create_emplace_args
 
-#if defined(BOOST_NO_RVALUE_REFERENCES)
+#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
 
 #define BOOST_UNORDERED_EARGS_MEMBER(z, n, _) \
     typedef BOOST_FWD_REF(BOOST_PP_CAT(A, n)) BOOST_PP_CAT(Arg, n); \
@@ -342,7 +342,7 @@
 # include <boost/type_traits/is_same.hpp>
 # endif
 
-# if !defined(BOOST_NO_VARIADIC_TEMPLATES) && \
+# if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \
         !defined(BOOST_NO_SFINAE_EXPR)
 # define BOOST_UNORDERED_DETAIL_FULL_CONSTRUCT 1
 # else
@@ -432,7 +432,7 @@
         max_size, U const, (), 0
     );
 
-# if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+# if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
 
     template <typename T, typename ValueType, typename... Args>
     BOOST_UNORDERED_HAS_FUNCTION(
@@ -763,7 +763,7 @@
     ////////////////////////////////////////////////////////////////////////////
     // call_construct
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
 
 # if BOOST_UNORDERED_DETAIL_FULL_CONSTRUCT
 
@@ -812,7 +812,7 @@
     //
     // Used for piecewise construction.
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
 
 # define BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(n, namespace_) \
     template<typename Alloc, typename T> \
@@ -921,62 +921,26 @@
 #endif
 
     ////////////////////////////////////////////////////////////////////////////
- // SFINAE traits for construction.
+ // Trait to check for piecewise construction.
 
- // Decide which construction method to use for a three argument
- // call. Note that this is difficult to do using overloads because
- // the arguments are packed into 'emplace_args3'.
- //
- // The decision is made on the first argument.
-
-
-#if defined(BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT)
- template <typename A, typename B, typename A0>
- struct emulation1 {
- static choice1::type test(choice1, std::pair<A, B> const&);
- static choice2::type test(choice2, A const&);
- static choice3::type test(choice3, convert_from_anything const&);
-
- enum { value =
- sizeof(test(choose(), boost::unordered::detail::make<A0>())) ==
- sizeof(choice2::type) };
- };
-#endif
-
- template <typename A, typename B, typename A0>
- struct check3_base {
+ template <typename A0>
+ struct use_piecewise {
         static choice1::type test(choice1,
             boost::unordered::piecewise_construct_t);
 
-#if defined(BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT)
- static choice2::type test(choice2, A const&);
-#endif
-
- static choice3::type test(choice3, ...);
+ static choice2::type test(choice2, ...);
 
- enum { value =
+ enum { value = sizeof(choice1::type) ==
             sizeof(test(choose(), boost::unordered::detail::make<A0>())) };
     };
 
- template <typename A, typename B, typename A0>
- struct piecewise3 {
- enum { value = check3_base<A,B,A0>::value == sizeof(choice1::type) };
- };
-
-#if defined(BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT)
- template <typename A, typename B, typename A0>
- struct emulation3 {
- enum { value = check3_base<A,B,A0>::value == sizeof(choice2::type) };
- };
-
-#endif
-
-// TODO: Full construct?
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
 
     ////////////////////////////////////////////////////////////////////////////
     // Construct from variadic parameters
 
+ // For the standard pair constructor.
+
     template <typename Alloc, typename T, typename... Args>
     inline void construct_value_impl(Alloc& alloc, T* address,
         BOOST_FWD_REF(Args)... args)
@@ -985,9 +949,14 @@
             address, boost::forward<Args>(args)...);
     }
 
+ // Special case for piece_construct
+ //
+ // TODO: When possible, it might be better to use std::pair's
+ // constructor for std::piece_construct with std::tuple.
+
     template <typename Alloc, typename A, typename B,
         typename A0, typename A1, typename A2>
- inline typename enable_if<piecewise3<A, B, A0>, void>::type
+ inline typename enable_if<use_piecewise<A0>, void>::type
         construct_value_impl(Alloc& alloc, std::pair<A, B>* address,
             BOOST_FWD_REF(A0), BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
     {
@@ -997,70 +966,13 @@
             boost::addressof(address->second), boost::forward<A2>(a2));
     }
 
-#if defined(BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT)
-
- template <typename Alloc, typename A, typename B, typename A0>
- inline typename enable_if<emulation1<A, B, A0>, void>::type
- construct_value_impl(Alloc& alloc, std::pair<A, B>* address,
- BOOST_FWD_REF(A0) a0)
- {
- boost::unordered::detail::call_construct(alloc,
- boost::addressof(address->first),boost::forward<A0>(a0));
- boost::unordered::detail::call_construct(alloc,
- boost::addressof(address->second));
- }
-
- template <typename Alloc, typename A, typename B,
- typename A0, typename A1, typename A2>
- inline typename enable_if<emulation3<A, B, A0>, void>::type
- construct_value_impl(Alloc& alloc, std::pair<A, B>* address,
- BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2)
- {
- boost::unordered::detail::call_construct(alloc,
- boost::addressof(address->first),boost::forward<A0>(a0));
- boost::unordered::detail::call_construct(alloc,
- boost::addressof(address->second),
- boost::forward<A1>(a1),
- boost::forward<A2>(a2));
- }
-
- template <typename Alloc, typename A, typename B,
- typename A0, typename A1, typename A2, typename A3,
- typename... Args>
- inline void construct_value_impl(Alloc& alloc, std::pair<A, B>* address,
- BOOST_FWD_REF(A0) a0, BOOST_FWD_REF(A1) a1, BOOST_FWD_REF(A2) a2,
- BOOST_FWD_REF(A3) a3, BOOST_FWD_REF(Args)... args)
- {
- boost::unordered::detail::call_construct(alloc,
- boost::addressof(address->first),boost::forward<A0>(a0));
- boost::unordered::detail::call_construct(alloc,
- boost::addressof(address->second),
- boost::forward<A1>(a1),
- boost::forward<A2>(a2),
- boost::forward<A3>(a3),
- boost::forward<Args>(args)...);
- }
-
-#endif // BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT
-#else // BOOST_NO_VARIADIC_TEMPLATES
+#else // BOOST_NO_CXX11_VARIADIC_TEMPLATES
 
 ////////////////////////////////////////////////////////////////////////////////
 // Construct from emplace_args
 
-#define BOOST_UNORDERED_CONSTRUCT_IMPL(z, num_params, _) \
- template < \
- typename Alloc, typename T, \
- BOOST_PP_ENUM_PARAMS_Z(z, num_params, typename A) \
- > \
- inline void construct_value_impl(Alloc&, T* address, \
- boost::unordered::detail::BOOST_PP_CAT(emplace_args,num_params) < \
- BOOST_PP_ENUM_PARAMS_Z(z, num_params, A) \
- > const& args) \
- { \
- new((void*) address) T( \
- BOOST_PP_ENUM_##z(num_params, BOOST_UNORDERED_CALL_FORWARD, \
- args.a)); \
- }
+ // Explicitly write out first three overloads for the sake of sane
+ // error messages.
 
     template <typename Alloc, typename T, typename A0>
     inline void construct_value_impl(Alloc&, T* address,
@@ -1090,16 +1002,35 @@
         );
     }
 
+ // Use a macro for the rest.
+
+#define BOOST_UNORDERED_CONSTRUCT_IMPL(z, num_params, _) \
+ template < \
+ typename Alloc, typename T, \
+ BOOST_PP_ENUM_PARAMS_Z(z, num_params, typename A) \
+ > \
+ inline void construct_value_impl(Alloc&, T* address, \
+ boost::unordered::detail::BOOST_PP_CAT(emplace_args,num_params) < \
+ BOOST_PP_ENUM_PARAMS_Z(z, num_params, A) \
+ > const& args) \
+ { \
+ new((void*) address) T( \
+ BOOST_PP_ENUM_##z(num_params, BOOST_UNORDERED_CALL_FORWARD, \
+ args.a)); \
+ }
+
     BOOST_PP_REPEAT_FROM_TO(4, BOOST_UNORDERED_EMPLACE_LIMIT,
         BOOST_UNORDERED_CONSTRUCT_IMPL, _)
 
 #undef BOOST_UNORDERED_CONSTRUCT_IMPL
 
+ // Construct with piece_construct
+
     template <typename Alloc, typename A, typename B,
         typename A0, typename A1, typename A2>
     inline void construct_value_impl(Alloc& alloc, std::pair<A, B>* address,
             boost::unordered::detail::emplace_args3<A0, A1, A2> const& args,
- typename enable_if<piecewise3<A, B, A0>, void*>::type = 0)
+ typename enable_if<use_piecewise<A0>, void*>::type = 0)
     {
         boost::unordered::detail::construct_from_tuple(alloc,
             boost::addressof(address->first), args.a1);
@@ -1107,59 +1038,7 @@
             boost::addressof(address->second), args.a2);
     }
 
-#if defined(BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT)
-
- template <typename Alloc, typename A, typename B, typename A0>
- inline void construct_value_impl(Alloc&, std::pair<A, B>* address,
- boost::unordered::detail::emplace_args1<A0> const& args,
- typename enable_if<emulation1<A, B, A0>, void*>::type = 0)
- {
- new((void*) boost::addressof(address->first)) A(
- boost::forward<A0>(args.a0));
- new((void*) boost::addressof(address->second)) B();
- }
-
- template <typename Alloc, typename A, typename B,
- typename A0, typename A1, typename A2>
- inline void construct_value_impl(Alloc&, std::pair<A, B>* address,
- boost::unordered::detail::emplace_args3<A0, A1, A2> const& args,
- typename enable_if<emulation3<A, B, A0>, void*>::type = 0)
- {
- new((void*) boost::addressof(address->first)) A(
- boost::forward<A0>(args.a0));
- new((void*) boost::addressof(address->second)) B(
- boost::forward<A1>(args.a1),
- boost::forward<A2>(args.a2));
- }
-
-#define BOOST_UNORDERED_CONSTRUCT_PAIR_IMPL(z, num_params, _) \
- template <typename Alloc, typename A, typename B, \
- BOOST_PP_ENUM_PARAMS_Z(z, num_params, typename A) \
- > \
- inline void construct_value_impl(Alloc&, std::pair<A, B>* address, \
- boost::unordered::detail::BOOST_PP_CAT(emplace_args, num_params) < \
- BOOST_PP_ENUM_PARAMS_Z(z, num_params, A) \
- > const& args) \
- { \
- new((void*) boost::addressof(address->first)) A( \
- boost::forward<A0>(args.a0)); \
- new((void*) boost::addressof(address->second)) B( \
- BOOST_PP_ENUM_##z(BOOST_PP_DEC(num_params), \
- BOOST_UNORDERED_CALL_FORWARD2, args.a)); \
- }
-
-#define BOOST_UNORDERED_CALL_FORWARD2(z, i, a) \
- BOOST_UNORDERED_CALL_FORWARD(z, BOOST_PP_INC(i), a)
-
- BOOST_UNORDERED_CONSTRUCT_PAIR_IMPL(1, 2, _)
- BOOST_PP_REPEAT_FROM_TO(4, BOOST_UNORDERED_EMPLACE_LIMIT,
- BOOST_UNORDERED_CONSTRUCT_PAIR_IMPL, _)
-
-#undef BOOST_UNORDERED_CONSTRUCT_PAIR_IMPL
-#undef BOOST_UNORDERED_CALL_FORWARD2
-
-#endif // BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT
-#endif // BOOST_NO_VARIADIC_TEMPLATES
+#endif // BOOST_NO_CXX11_VARIADIC_TEMPLATES
 
 }}}
 

Modified: branches/release/boost/unordered/detail/buckets.hpp
==============================================================================
--- branches/release/boost/unordered/detail/buckets.hpp (original)
+++ branches/release/boost/unordered/detail/buckets.hpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -777,7 +777,7 @@
     // rvalue parameters when type can't be a BOOST_RV_REF(T) parameter
     // e.g. for int
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
 # define BOOST_UNORDERED_RV_REF(T) BOOST_RV_REF(T)
 #else
     struct please_ignore_this_overload {

Modified: branches/release/boost/unordered/detail/equivalent.hpp
==============================================================================
--- branches/release/boost/unordered/detail/equivalent.hpp (original)
+++ branches/release/boost/unordered/detail/equivalent.hpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -302,8 +302,6 @@
             return true;
         }
 
-#if !defined(BOOST_UNORDERED_DEPRECATED_EQUALITY)
-
         static bool group_equals(iterator n1, iterator end1,
                 iterator n2, iterator end2)
         {
@@ -364,26 +362,6 @@
             return count;
         }
 
-#else
-
- static bool group_equals(iterator n1, iterator end1,
- iterator n2, iterator end2)
- {
- for(;;)
- {
- if(!extractor::compare_mapped(*n1, *n2))
- return false;
-
- ++n1;
- ++n2;
-
- if (n1 == end1) return n2 == end2;
- if (n2 == end2) return false;
- }
- }
-
-#endif
-
         // Emplace/Insert
 
         static inline void add_after_node(
@@ -460,8 +438,8 @@
             this->add_node(a, key_hash, this->find_node(key_hash, k));
         }
 
-#if defined(BOOST_NO_RVALUE_REFERENCES)
-# if defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+# if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         iterator emplace(boost::unordered::detail::emplace_args1<
                 boost::unordered::detail::please_ignore_this_overload> const&)
         {

Modified: branches/release/boost/unordered/detail/extract_key.hpp
==============================================================================
--- branches/release/boost/unordered/detail/extract_key.hpp (original)
+++ branches/release/boost/unordered/detail/extract_key.hpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -56,7 +56,7 @@
             return no_key();
         }
         
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         template <class... Args>
         static no_key extract(Args const&...)
         {
@@ -75,11 +75,6 @@
             return no_key();
         }
 #endif
-
- static bool compare_mapped(value_type const&, value_type const&)
- {
- return true;
- }
     };
 
     template <class Key, class ValueType>
@@ -93,11 +88,6 @@
             return v.first;
         }
             
- static key_type const& extract(key_type const& v)
- {
- return v;
- }
-
         template <class Second>
         static key_type const& extract(std::pair<key_type, Second> const& v)
         {
@@ -111,14 +101,13 @@
             return v.first;
         }
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
- template <class Arg1, class... Args>
- static key_type const& extract(key_type const& k,
- Arg1 const&, Args const&...)
+ template <class Arg1>
+ static key_type const& extract(key_type const& k, Arg1 const&)
         {
             return k;
         }
 
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         template <class... Args>
         static no_key extract(Args const&...)
         {
@@ -126,12 +115,6 @@
         }
 #else
 
- template <class Arg1>
- static key_type const& extract(key_type const& k, Arg1 const&)
- {
- return k;
- }
-
         static no_key extract()
         {
             return no_key();
@@ -150,12 +133,12 @@
         }
 #endif
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
 
 #define BOOST_UNORDERED_KEY_FROM_TUPLE(namespace_) \
         template <typename T2> \
         static no_key extract(boost::unordered::piecewise_construct_t, \
- namespace_ tuple<> const&, BOOST_FWD_REF(T2)) \
+ namespace_ tuple<> const&, T2 const&) \
         { \
             return no_key(); \
         } \
@@ -163,7 +146,7 @@
         template <typename T, typename T2> \
         static typename is_key<key_type, T>::type \
             extract(boost::unordered::piecewise_construct_t, \
- namespace_ tuple<T> const& k, BOOST_FWD_REF(T2)) \
+ namespace_ tuple<T> const& k, T2 const&) \
         { \
             return typename is_key<key_type, T>::type( \
                 namespace_ get<0>(k)); \
@@ -194,12 +177,6 @@
 #if !defined(BOOST_NO_CXX11_HDR_TUPLE)
 BOOST_UNORDERED_KEY_FROM_TUPLE(std::)
 #endif
-
-
- static bool compare_mapped(value_type const& x, value_type const& y)
- {
- return x.second == y.second;
- }
     };
 }}}
 

Modified: branches/release/boost/unordered/detail/table.hpp
==============================================================================
--- branches/release/boost/unordered/detail/table.hpp (original)
+++ branches/release/boost/unordered/detail/table.hpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -18,6 +18,18 @@
 #pragma warning(disable:4127) // conditional expression is constant
 #endif
 
+#if defined(BOOST_UNORDERED_DEPRECATED_EQUALITY)
+
+#if defined(__EDG__)
+#elif defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+#pragma message("Warning: BOOST_UNORDERED_DEPRECATED_EQUALITY is no longer supported.")
+#elif defined(__GNUC__) || defined(__HP_aCC) || \
+ defined(__SUNPRO_CC) || defined(__IBMCPP__)
+#warning "BOOST_UNORDERED_DEPRECATED_EQUALITY is no longer supported."
+#endif
+
+#endif
+
 namespace boost { namespace unordered { namespace detail {
 
     ////////////////////////////////////////////////////////////////////////////

Modified: branches/release/boost/unordered/detail/unique.hpp
==============================================================================
--- branches/release/boost/unordered/detail/unique.hpp (original)
+++ branches/release/boost/unordered/detail/unique.hpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -290,13 +290,8 @@
             {
                 iterator n2 = other.find_matching_node(n1);
 
-#if !defined(BOOST_UNORDERED_DEPRECATED_EQUALITY)
                 if (!n2.node_ || *n1 != *n2)
                     return false;
-#else
- if (!n2.node_ || !extractor::compare_mapped(*n1, *n2))
- return false;
-#endif
             }
     
             return true;
@@ -358,8 +353,8 @@
             return *add_node(a, key_hash);
         }
 
-#if defined(BOOST_NO_RVALUE_REFERENCES)
-# if defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+# if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         emplace_return emplace(boost::unordered::detail::emplace_args1<
                 boost::unordered::detail::please_ignore_this_overload> const&)
         {
@@ -379,7 +374,7 @@
         template <BOOST_UNORDERED_EMPLACE_TEMPLATE>
         emplace_return emplace(BOOST_UNORDERED_EMPLACE_ARGS)
         {
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
             return emplace_impl(
                 extractor::extract(BOOST_UNORDERED_EMPLACE_FORWARD),
                 BOOST_UNORDERED_EMPLACE_FORWARD);
@@ -390,7 +385,7 @@
 #endif
         }
 
-#if defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         template <typename A0>
         emplace_return emplace(
                 boost::unordered::detail::emplace_args1<A0> const& args)

Modified: branches/release/boost/unordered/unordered_map.hpp
==============================================================================
--- branches/release/boost/unordered/unordered_map.hpp (original)
+++ branches/release/boost/unordered/unordered_map.hpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -120,14 +120,14 @@
             : table_(other.table_, boost::unordered::detail::move_tag())
         {
         }
-#elif !defined(BOOST_NO_RVALUE_REFERENCES)
+#elif !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         unordered_map(unordered_map&& other)
             : table_(other.table_, boost::unordered::detail::move_tag())
         {
         }
 #endif
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         unordered_map(unordered_map&&, allocator_type const&);
 #endif
 
@@ -165,7 +165,7 @@
             return *this;
         }
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         unordered_map& operator=(unordered_map&& x)
         {
             table_.move_assign(x.table_);
@@ -231,7 +231,7 @@
 
         // emplace
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         template <class... Args>
         std::pair<iterator, bool> emplace(BOOST_FWD_REF(Args)... args)
         {
@@ -601,14 +601,14 @@
             : table_(other.table_, boost::unordered::detail::move_tag())
         {
         }
-#elif !defined(BOOST_NO_RVALUE_REFERENCES)
+#elif !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         unordered_multimap(unordered_multimap&& other)
             : table_(other.table_, boost::unordered::detail::move_tag())
         {
         }
 #endif
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         unordered_multimap(unordered_multimap&&, allocator_type const&);
 #endif
 
@@ -647,7 +647,7 @@
             return *this;
         }
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         unordered_multimap& operator=(unordered_multimap&& x)
         {
             table_.move_assign(x.table_);
@@ -713,7 +713,7 @@
 
         // emplace
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         template <class... Args>
         iterator emplace(BOOST_FWD_REF(Args)... args)
         {
@@ -1066,7 +1066,7 @@
     {
     }
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
 
     template <class K, class T, class H, class P, class A>
     unordered_map<K,T,H,P,A>::unordered_map(
@@ -1399,7 +1399,7 @@
     {
     }
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
 
     template <class K, class T, class H, class P, class A>
     unordered_multimap<K,T,H,P,A>::unordered_multimap(

Modified: branches/release/boost/unordered/unordered_set.hpp
==============================================================================
--- branches/release/boost/unordered/unordered_set.hpp (original)
+++ branches/release/boost/unordered/unordered_set.hpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -118,14 +118,14 @@
             : table_(other.table_, boost::unordered::detail::move_tag())
         {
         }
-#elif !defined(BOOST_NO_RVALUE_REFERENCES)
+#elif !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         unordered_set(unordered_set&& other)
             : table_(other.table_, boost::unordered::detail::move_tag())
         {
         }
 #endif
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         unordered_set(unordered_set&&, allocator_type const&);
 #endif
 
@@ -163,7 +163,7 @@
             return *this;
         }
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         unordered_set& operator=(unordered_set&& x)
         {
             table_.move_assign(x.table_);
@@ -229,7 +229,7 @@
 
         // emplace
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         template <class... Args>
         std::pair<iterator, bool> emplace(BOOST_FWD_REF(Args)... args)
         {
@@ -585,14 +585,14 @@
             : table_(other.table_, boost::unordered::detail::move_tag())
         {
         }
-#elif !defined(BOOST_NO_RVALUE_REFERENCES)
+#elif !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         unordered_multiset(unordered_multiset&& other)
             : table_(other.table_, boost::unordered::detail::move_tag())
         {
         }
 #endif
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         unordered_multiset(unordered_multiset&&, allocator_type const&);
 #endif
 
@@ -631,7 +631,7 @@
             return *this;
         }
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         unordered_multiset& operator=(unordered_multiset&& x)
         {
             table_.move_assign(x.table_);
@@ -697,7 +697,7 @@
 
         // emplace
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         template <class... Args>
         iterator emplace(BOOST_FWD_REF(Args)... args)
         {
@@ -1041,7 +1041,7 @@
     {
     }
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
 
     template <class T, class H, class P, class A>
     unordered_set<T,H,P,A>::unordered_set(
@@ -1325,7 +1325,7 @@
     {
     }
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
 
     template <class T, class H, class P, class A>
     unordered_multiset<T,H,P,A>::unordered_multiset(

Modified: branches/release/libs/unordered/doc/changes.qbk
==============================================================================
--- branches/release/libs/unordered/doc/changes.qbk (original)
+++ branches/release/libs/unordered/doc/changes.qbk 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -220,4 +220,12 @@
   for C++11 allocators.
 * Simplified the implementation a bit. Hopefully more robust.
 
+[h2 Boost 1.53.0]
+
+* Remove support for the old pre-standard variadic pair constructors, and
+ equality implementation. Both have been deprecated since Boost 1.48.
+* Remove use of deprecated config macros.
+* More internal implementation changes, including a much simpler
+ implementation of `erase`.
+
 [endsect]

Modified: branches/release/libs/unordered/doc/ref.php
==============================================================================
--- branches/release/libs/unordered/doc/ref.php (original)
+++ branches/release/libs/unordered/doc/ref.php 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -449,10 +449,6 @@
                 <para>Since existing <code>std::pair</code> implementations don't support
                       <code>std::piecewise_construct</code> this emulates it,
                       but using <code>boost::unordered::piecewise_construct</code>.</para>
- <para>In version of Boost before 1.48 this emulated the variadic pair
- constructor from older C++0x drafts. For backwards compatability
- this can be enabled by defining the macro
- <code>BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT</code>.</para>
               </notes>
             </method>
             <method name="emplace_hint">
@@ -499,10 +495,6 @@
                 <para>Since existing <code>std::pair</code> implementations don't support
                       <code>std::piecewise_construct</code> this emulates it,
                       but using <code>boost::unordered::piecewise_construct</code>.</para>
- <para>In version of Boost before 1.48 this emulated the variadic pair
- constructor from older C++0x drafts. For backwards compatability
- this can be enabled by defining the macro
- <code>BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT</code>.</para>
               </notes>
             </method>
             <method name="insert">
@@ -1114,9 +1106,7 @@
               </description>
               <notes>
                 <para>The behavior of this function was changed to match
- the C++11 standard in Boost 1.48. If you wish to use
- the old behaviour, define the macro
- <code>BOOST_UNORDERED_DEPRECATED_EQUALITY</code>.</para>
+ the C++11 standard in Boost 1.48.</para>
                 <para>Behavior is undefined if the two containers don't have
                     equivalent equality predicates.</para>
               </notes>
@@ -1157,9 +1147,7 @@
               </description>
               <notes>
                 <para>The behavior of this function was changed to match
- the C++11 standard in Boost 1.48. If you wish to use
- the old behaviour, define the macro
- <code>BOOST_UNORDERED_DEPRECATED_EQUALITY</code>.</para>
+ the C++11 standard in Boost 1.48.</para>
                 <para>Behavior is undefined if the two containers don't have
                     equivalent equality predicates.</para>
               </notes>

Modified: branches/release/libs/unordered/doc/ref.xml
==============================================================================
--- branches/release/libs/unordered/doc/ref.xml (original)
+++ branches/release/libs/unordered/doc/ref.xml 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -383,10 +383,6 @@
                 <para>Since existing <code>std::pair</code> implementations don't support
                       <code>std::piecewise_construct</code> this emulates it,
                       but using <code>boost::unordered::piecewise_construct</code>.</para>
- <para>In version of Boost before 1.48 this emulated the variadic pair
- constructor from older C++0x drafts. For backwards compatability
- this can be enabled by defining the macro
- <code>BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT</code>.</para>
               </notes>
             </method>
             <method name="emplace_hint">
@@ -426,10 +422,6 @@
                 <para>Since existing <code>std::pair</code> implementations don't support
                       <code>std::piecewise_construct</code> this emulates it,
                       but using <code>boost::unordered::piecewise_construct</code>.</para>
- <para>In version of Boost before 1.48 this emulated the variadic pair
- constructor from older C++0x drafts. For backwards compatability
- this can be enabled by defining the macro
- <code>BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT</code>.</para>
               </notes>
             </method>
             <method name="insert">
@@ -970,9 +962,7 @@
               </description>
               <notes>
                 <para>The behavior of this function was changed to match
- the C++11 standard in Boost 1.48. If you wish to use
- the old behaviour, define the macro
- <code>BOOST_UNORDERED_DEPRECATED_EQUALITY</code>.</para>
+ the C++11 standard in Boost 1.48.</para>
                 <para>Behavior is undefined if the two containers don't have
                     equivalent equality predicates.</para>
               </notes>
@@ -1005,9 +995,7 @@
               </description>
               <notes>
                 <para>The behavior of this function was changed to match
- the C++11 standard in Boost 1.48. If you wish to use
- the old behaviour, define the macro
- <code>BOOST_UNORDERED_DEPRECATED_EQUALITY</code>.</para>
+ the C++11 standard in Boost 1.48.</para>
                 <para>Behavior is undefined if the two containers don't have
                     equivalent equality predicates.</para>
               </notes>
@@ -1429,10 +1417,6 @@
                 <para>Since existing <code>std::pair</code> implementations don't support
                       <code>std::piecewise_construct</code> this emulates it,
                       but using <code>boost::unordered::piecewise_construct</code>.</para>
- <para>In version of Boost before 1.48 this emulated the variadic pair
- constructor from older C++0x drafts. For backwards compatability
- this can be enabled by defining the macro
- <code>BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT</code>.</para>
               </notes>
             </method>
             <method name="emplace_hint">
@@ -1472,10 +1456,6 @@
                 <para>Since existing <code>std::pair</code> implementations don't support
                       <code>std::piecewise_construct</code> this emulates it,
                       but using <code>boost::unordered::piecewise_construct</code>.</para>
- <para>In version of Boost before 1.48 this emulated the variadic pair
- constructor from older C++0x drafts. For backwards compatability
- this can be enabled by defining the macro
- <code>BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT</code>.</para>
               </notes>
             </method>
             <method name="insert">
@@ -2014,9 +1994,7 @@
               </description>
               <notes>
                 <para>The behavior of this function was changed to match
- the C++11 standard in Boost 1.48. If you wish to use
- the old behaviour, define the macro
- <code>BOOST_UNORDERED_DEPRECATED_EQUALITY</code>.</para>
+ the C++11 standard in Boost 1.48.</para>
                 <para>Behavior is undefined if the two containers don't have
                     equivalent equality predicates.</para>
               </notes>
@@ -2049,9 +2027,7 @@
               </description>
               <notes>
                 <para>The behavior of this function was changed to match
- the C++11 standard in Boost 1.48. If you wish to use
- the old behaviour, define the macro
- <code>BOOST_UNORDERED_DEPRECATED_EQUALITY</code>.</para>
+ the C++11 standard in Boost 1.48.</para>
                 <para>Behavior is undefined if the two containers don't have
                     equivalent equality predicates.</para>
               </notes>
@@ -2488,10 +2464,6 @@
                 <para>Since existing <code>std::pair</code> implementations don't support
                       <code>std::piecewise_construct</code> this emulates it,
                       but using <code>boost::unordered::piecewise_construct</code>.</para>
- <para>In version of Boost before 1.48 this emulated the variadic pair
- constructor from older C++0x drafts. For backwards compatability
- this can be enabled by defining the macro
- <code>BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT</code>.</para>
               </notes>
             </method>
             <method name="emplace_hint">
@@ -2531,10 +2503,6 @@
                 <para>Since existing <code>std::pair</code> implementations don't support
                       <code>std::piecewise_construct</code> this emulates it,
                       but using <code>boost::unordered::piecewise_construct</code>.</para>
- <para>In version of Boost before 1.48 this emulated the variadic pair
- constructor from older C++0x drafts. For backwards compatability
- this can be enabled by defining the macro
- <code>BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT</code>.</para>
               </notes>
             </method>
             <method name="insert">
@@ -3108,9 +3076,7 @@
               </description>
               <notes>
                 <para>The behavior of this function was changed to match
- the C++11 standard in Boost 1.48. If you wish to use
- the old behaviour, define the macro
- <code>BOOST_UNORDERED_DEPRECATED_EQUALITY</code>.</para>
+ the C++11 standard in Boost 1.48.</para>
                 <para>Behavior is undefined if the two containers don't have
                     equivalent equality predicates.</para>
               </notes>
@@ -3145,9 +3111,7 @@
               </description>
               <notes>
                 <para>The behavior of this function was changed to match
- the C++11 standard in Boost 1.48. If you wish to use
- the old behaviour, define the macro
- <code>BOOST_UNORDERED_DEPRECATED_EQUALITY</code>.</para>
+ the C++11 standard in Boost 1.48.</para>
                 <para>Behavior is undefined if the two containers don't have
                     equivalent equality predicates.</para>
               </notes>
@@ -3581,10 +3545,6 @@
                 <para>Since existing <code>std::pair</code> implementations don't support
                       <code>std::piecewise_construct</code> this emulates it,
                       but using <code>boost::unordered::piecewise_construct</code>.</para>
- <para>In version of Boost before 1.48 this emulated the variadic pair
- constructor from older C++0x drafts. For backwards compatability
- this can be enabled by defining the macro
- <code>BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT</code>.</para>
               </notes>
             </method>
             <method name="emplace_hint">
@@ -3624,10 +3584,6 @@
                 <para>Since existing <code>std::pair</code> implementations don't support
                       <code>std::piecewise_construct</code> this emulates it,
                       but using <code>boost::unordered::piecewise_construct</code>.</para>
- <para>In version of Boost before 1.48 this emulated the variadic pair
- constructor from older C++0x drafts. For backwards compatability
- this can be enabled by defining the macro
- <code>BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT</code>.</para>
               </notes>
             </method>
             <method name="insert">
@@ -4168,9 +4124,7 @@
               </description>
               <notes>
                 <para>The behavior of this function was changed to match
- the C++11 standard in Boost 1.48. If you wish to use
- the old behaviour, define the macro
- <code>BOOST_UNORDERED_DEPRECATED_EQUALITY</code>.</para>
+ the C++11 standard in Boost 1.48.</para>
                 <para>Behavior is undefined if the two containers don't have
                     equivalent equality predicates.</para>
               </notes>
@@ -4205,9 +4159,7 @@
               </description>
               <notes>
                 <para>The behavior of this function was changed to match
- the C++11 standard in Boost 1.48. If you wish to use
- the old behaviour, define the macro
- <code>BOOST_UNORDERED_DEPRECATED_EQUALITY</code>.</para>
+ the C++11 standard in Boost 1.48.</para>
                 <para>Behavior is undefined if the two containers don't have
                     equivalent equality predicates.</para>
               </notes>

Modified: branches/release/libs/unordered/test/exception/insert_exception_tests.cpp
==============================================================================
--- branches/release/libs/unordered/test/exception/insert_exception_tests.cpp (original)
+++ branches/release/libs/unordered/test/exception/insert_exception_tests.cpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -37,7 +37,7 @@
     }
 };
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES) && !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
 
 template <class T>
 struct emplace_test1 : public insert_test_base<T>
@@ -236,7 +236,7 @@
     (insert_test1)(insert_test2)(insert_test3)(insert_test4) \
     (insert_test_rehash1)(insert_test_rehash2)(insert_test_rehash3)
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES) && !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
 #define ALL_TESTS (emplace_test1)BASIC_TESTS
 #else
 #define ALL_TESTS BASIC_TESTS

Modified: branches/release/libs/unordered/test/objects/cxx11_allocator.hpp
==============================================================================
--- branches/release/libs/unordered/test/objects/cxx11_allocator.hpp (original)
+++ branches/release/libs/unordered/test/objects/cxx11_allocator.hpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -170,7 +170,7 @@
             new(p) T(t);
         }
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         template<typename... Args> void construct(T* p, BOOST_FWD_REF(Args)... args) {
             detail::tracker.track_construct((void*) p, sizeof(T), tag_);
             new(p) T(boost::forward<Args>(args)...);

Modified: branches/release/libs/unordered/test/objects/exception.hpp
==============================================================================
--- branches/release/libs/unordered/test/objects/exception.hpp (original)
+++ branches/release/libs/unordered/test/objects/exception.hpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -348,7 +348,7 @@
             test::detail::tracker.track_construct((void*) p, sizeof(T), tag_);
         }
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         template<class... Args> void construct(T* p, BOOST_FWD_REF(Args)... args) {
             UNORDERED_SCOPE(allocator::construct(pointer, BOOST_FWD_REF(Args)...)) {
                 UNORDERED_EPOINT("Mock allocator construct function.");
@@ -528,7 +528,7 @@
             test::detail::tracker.track_construct((void*) p, sizeof(T), tag_);
         }
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         template<class... Args> void construct(T* p, BOOST_FWD_REF(Args)... args) {
             UNORDERED_SCOPE(allocator2::construct(pointer, BOOST_FWD_REF(Args)...)) {
                 UNORDERED_EPOINT("Mock allocator2 construct function.");

Modified: branches/release/libs/unordered/test/objects/minimal.hpp
==============================================================================
--- branches/release/libs/unordered/test/objects/minimal.hpp (original)
+++ branches/release/libs/unordered/test/objects/minimal.hpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -155,7 +155,7 @@
         ~movable1() {}
     };
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
     class movable2
     {
     public:
@@ -371,7 +371,7 @@
 
         void construct(T* p, T const& t) { new((void*)p) T(t); }
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         template<class... Args> void construct(T* p, BOOST_FWD_REF(Args)... args) {
             new((void*)p) T(boost::forward<Args>(args)...);
         }
@@ -443,7 +443,7 @@
 
         void construct(T* p, T const& t) { new((void*)p) T(t); }
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         template<class... Args> void construct(T* p, BOOST_FWD_REF(Args)... args) {
             new((void*)p) T(boost::forward<Args>(args)...);
         }

Modified: branches/release/libs/unordered/test/objects/test.hpp
==============================================================================
--- branches/release/libs/unordered/test/objects/test.hpp (original)
+++ branches/release/libs/unordered/test/objects/test.hpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -591,7 +591,7 @@
             new(p) T(t);
         }
 
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
         template<class... Args> void construct(T* p, BOOST_FWD_REF(Args)... args) {
             detail::tracker.track_construct((void*) p, sizeof(T), tag_);
             new(p) T(boost::forward<Args>(args)...);

Modified: branches/release/libs/unordered/test/unordered/Jamfile.v2
==============================================================================
--- branches/release/libs/unordered/test/unordered/Jamfile.v2 (original)
+++ branches/release/libs/unordered/test/unordered/Jamfile.v2 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -34,9 +34,6 @@
         [ run move_tests.cpp ]
         [ run assign_tests.cpp ]
         [ run insert_tests.cpp ]
- [ run insert_tests.cpp : :
- : <define>BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT
- : insert_deprecated ]
         [ run insert_stable_tests.cpp ]
         [ run unnecessary_copy_tests.cpp ]
         [ run erase_tests.cpp ]
@@ -47,7 +44,6 @@
         [ run load_factor_tests.cpp ]
         [ run rehash_tests.cpp ]
         [ run equality_tests.cpp ]
- [ run equality_deprecated.cpp ]
         [ run swap_tests.cpp ]
 
         [ run compile_set.cpp : :

Modified: branches/release/libs/unordered/test/unordered/compile_tests.hpp
==============================================================================
--- branches/release/libs/unordered/test/unordered/compile_tests.hpp (original)
+++ branches/release/libs/unordered/test/unordered/compile_tests.hpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -137,7 +137,7 @@
 
     X x1;
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
     X x2(rvalue_default<X>());
     X x3 = rvalue_default<X>();
     // This can only be done if propagate_on_container_move_assignment::value
@@ -453,7 +453,7 @@
     typedef BOOST_DEDUCED_TYPENAME X::iterator iterator;
     typedef BOOST_DEDUCED_TYPENAME X::const_iterator const_iterator;
 
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
     X x1(rvalue_default<X>());
     X x2(boost::move(x1));
     x1 = rvalue_default<X>();

Deleted: branches/release/libs/unordered/test/unordered/equality_deprecated.cpp
==============================================================================
--- branches/release/libs/unordered/test/unordered/equality_deprecated.cpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
+++ (empty file)
@@ -1,174 +0,0 @@
-
-// Copyright 2008-2009 Daniel James.
-// 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)
-
-#define BOOST_UNORDERED_DEPRECATED_EQUALITY
-
-#include "../helpers/prefix.hpp"
-#include <boost/unordered_set.hpp>
-#include <boost/unordered_map.hpp>
-#include "../helpers/postfix.hpp"
-
-#include <boost/preprocessor/seq.hpp>
-#include <list>
-#include "../helpers/test.hpp"
-
-namespace equality_tests
-{
- struct mod_compare
- {
- bool alt_hash_;
-
- explicit mod_compare(bool alt_hash = false) : alt_hash_(alt_hash) {}
-
- bool operator()(int x, int y) const
- {
- return x % 1000 == y % 1000;
- }
-
- int operator()(int x) const
- {
- return alt_hash_ ? x % 250 : (x + 5) % 250;
- }
- };
-
-#define UNORDERED_EQUALITY_SET_TEST(seq1, op, seq2) \
- { \
- boost::unordered_set<int, mod_compare, mod_compare> set1, set2; \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_SET_INSERT, set1, seq1) \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_SET_INSERT, set2, seq2) \
- BOOST_TEST(set1 op set2); \
- }
-
-#define UNORDERED_EQUALITY_MULTISET_TEST(seq1, op, seq2) \
- { \
- boost::unordered_multiset<int, mod_compare, mod_compare> \
- set1, set2; \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_SET_INSERT, set1, seq1) \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_SET_INSERT, set2, seq2) \
- BOOST_TEST(set1 op set2); \
- }
-
-#define UNORDERED_EQUALITY_MAP_TEST(seq1, op, seq2) \
- { \
- boost::unordered_map<int, int, mod_compare, mod_compare> \
- map1, map2; \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_MAP_INSERT, map1, seq1) \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_MAP_INSERT, map2, seq2) \
- BOOST_TEST(map1 op map2); \
- }
-
-#define UNORDERED_EQUALITY_MULTIMAP_TEST(seq1, op, seq2) \
- { \
- boost::unordered_multimap<int, int, mod_compare, mod_compare> \
- map1, map2; \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_MAP_INSERT, map1, seq1) \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_MAP_INSERT, map2, seq2) \
- BOOST_TEST(map1 op map2); \
- }
-
-#define UNORDERED_SET_INSERT(r, set, item) set.insert(item);
-#define UNORDERED_MAP_INSERT(r, map, item) \
- map.insert(std::pair<int const, int> BOOST_PP_SEQ_TO_TUPLE(item));
-
- UNORDERED_AUTO_TEST(equality_size_tests)
- {
- boost::unordered_set<int> x1, x2;
- BOOST_TEST(x1 == x2);
- BOOST_TEST(!(x1 != x2));
-
- x1.insert(1);
- BOOST_TEST(x1 != x2);
- BOOST_TEST(!(x1 == x2));
- BOOST_TEST(x2 != x1);
- BOOST_TEST(!(x2 == x1));
-
- x2.insert(1);
- BOOST_TEST(x1 == x2);
- BOOST_TEST(!(x1 != x2));
-
- x2.insert(2);
- BOOST_TEST(x1 != x2);
- BOOST_TEST(!(x1 == x2));
- BOOST_TEST(x2 != x1);
- BOOST_TEST(!(x2 == x1));
- }
-
- UNORDERED_AUTO_TEST(equality_key_value_tests)
- {
- UNORDERED_EQUALITY_MULTISET_TEST((1), !=, (2))
- UNORDERED_EQUALITY_SET_TEST((2), ==, (2))
- UNORDERED_EQUALITY_MAP_TEST(((1)(1))((2)(1)), !=, ((1)(1))((3)(1)))
- }
-
- UNORDERED_AUTO_TEST(equality_collision_test)
- {
- UNORDERED_EQUALITY_MULTISET_TEST(
- (1), !=, (501))
- UNORDERED_EQUALITY_MULTISET_TEST(
- (1)(251), !=, (1)(501))
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((251)(1))((1)(1)), !=, ((501)(1))((1)(1)))
- UNORDERED_EQUALITY_MULTISET_TEST(
- (1)(501), ==, (1)(501))
- UNORDERED_EQUALITY_SET_TEST(
- (1)(501), ==, (501)(1))
- }
-
- UNORDERED_AUTO_TEST(equality_group_size_test)
- {
- UNORDERED_EQUALITY_MULTISET_TEST(
- (10)(20)(20), !=, (10)(10)(20))
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((10)(1))((20)(1))((20)(1)), !=,
- ((10)(1))((20)(1))((10)(1)))
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((20)(1))((10)(1))((10)(1)), ==,
- ((10)(1))((20)(1))((10)(1)))
- }
-
- UNORDERED_AUTO_TEST(equality_map_value_test)
- {
- UNORDERED_EQUALITY_MAP_TEST(
- ((1)(1)), !=, ((1)(2)))
- UNORDERED_EQUALITY_MAP_TEST(
- ((1)(1)), ==, ((1)(1)))
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((1)(1)), !=, ((1)(2)))
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((1)(1))((1)(1)), !=, ((1)(1))((1)(2)))
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((1)(2))((1)(1)), !=, ((1)(1))((1)(2)))
- }
-
- UNORDERED_AUTO_TEST(equality_predicate_test)
- {
- UNORDERED_EQUALITY_SET_TEST(
- (1), ==, (1001))
- UNORDERED_EQUALITY_MAP_TEST(
- ((1)(2))((1001)(1)), ==, ((1001)(2))((1)(1)))
- }
-
- // Test that equality still works when the two containers have
- // different hash functions but the same equality predicate.
-
- UNORDERED_AUTO_TEST(equality_different_hash_test)
- {
- typedef boost::unordered_set<int, mod_compare, mod_compare> set;
- set set1(0, mod_compare(false), mod_compare(false));
- set set2(0, mod_compare(true), mod_compare(true));
- BOOST_TEST(set1 == set2);
- set1.insert(1); set2.insert(2);
- BOOST_TEST(set1 != set2);
- set1.insert(2); set2.insert(1);
- BOOST_TEST(set1 == set2);
- set1.insert(10); set2.insert(20);
- BOOST_TEST(set1 != set2);
- set1.insert(20); set2.insert(10);
- BOOST_TEST(set1 == set2);
- }
-
-}
-
-RUN_TESTS()

Modified: branches/release/libs/unordered/test/unordered/insert_tests.cpp
==============================================================================
--- branches/release/libs/unordered/test/unordered/insert_tests.cpp (original)
+++ branches/release/libs/unordered/test/unordered/insert_tests.cpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -658,20 +658,6 @@
     x.emplace(2, 3);
     BOOST_TEST(x.find(2) != x.end() &&
         x.find(2)->second == overloaded_constructor(3));
-
-#if defined (BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT)
- x.emplace(1);
- BOOST_TEST(x.find(1) != x.end() &&
- x.find(1)->second == overloaded_constructor());
-
- x.emplace(4, 5, 6);
- BOOST_TEST(x.find(4) != x.end() &&
- x.find(4)->second == overloaded_constructor(5, 6));
-
- x.emplace(7, 8, 9, 10);
- BOOST_TEST(x.find(7) != x.end() &&
- x.find(7)->second == overloaded_constructor(8, 9, 10));
-#endif
 }
 
 UNORDERED_AUTO_TEST(set_emplace_test)
@@ -705,6 +691,19 @@
     BOOST_TEST(x.find(check) != x.end() && *x.find(check) == check);
 }
 
+struct derived_from_piecewise_construct_t :
+ boost::unordered::piecewise_construct_t {};
+
+derived_from_piecewise_construct_t piecewise_rvalue() {
+ return derived_from_piecewise_construct_t();
+}
+
+struct convertible_to_piecewise {
+ operator boost::unordered::piecewise_construct_t() const {
+ return boost::unordered::piecewise_construct;
+ }
+};
+
 UNORDERED_AUTO_TEST(map_emplace_test2)
 {
     boost::unordered_map<overloaded_constructor, overloaded_constructor> x;
@@ -713,13 +712,18 @@
     BOOST_TEST(x.find(overloaded_constructor()) != x.end() &&
         x.find(overloaded_constructor())->second == overloaded_constructor());
 
- x.emplace(boost::unordered::piecewise_construct, boost::make_tuple(1), boost::make_tuple());
+ x.emplace(convertible_to_piecewise(), boost::make_tuple(1), boost::make_tuple());
     BOOST_TEST(x.find(overloaded_constructor(1)) != x.end() &&
         x.find(overloaded_constructor(1))->second == overloaded_constructor());
 
- x.emplace(boost::unordered::piecewise_construct, boost::make_tuple(2,3), boost::make_tuple(4,5,6));
+ x.emplace(piecewise_rvalue(), boost::make_tuple(2,3), boost::make_tuple(4,5,6));
     BOOST_TEST(x.find(overloaded_constructor(2,3)) != x.end() &&
         x.find(overloaded_constructor(2,3))->second == overloaded_constructor(4,5,6));
+
+ derived_from_piecewise_construct_t d;
+ x.emplace(d, boost::make_tuple(9,3,1), boost::make_tuple(10));
+ BOOST_TEST(x.find(overloaded_constructor(9,3,1)) != x.end() &&
+ x.find(overloaded_constructor(9,3,1))->second == overloaded_constructor(10));
 }
 
 UNORDERED_AUTO_TEST(set_emplace_test2)

Modified: branches/release/libs/unordered/test/unordered/move_tests.cpp
==============================================================================
--- branches/release/libs/unordered/test/unordered/move_tests.cpp (original)
+++ branches/release/libs/unordered/test/unordered/move_tests.cpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -23,7 +23,7 @@
 namespace move_tests
 {
     test::seed_t initialize_seed(98624);
-#if defined(BOOST_UNORDERED_USE_MOVE) || !defined(BOOST_NO_RVALUE_REFERENCES)
+#if defined(BOOST_UNORDERED_USE_MOVE) || !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
 #define BOOST_UNORDERED_TEST_MOVING 1
 #else
 #define BOOST_UNORDERED_TEST_MOVING 0
@@ -154,7 +154,7 @@
 
             test::random_values<T> v(25, generator);
             T y(create(v, count, hf, eq, al, 1.0), al);
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
             BOOST_TEST(count == test::global_object_count);
 #elif defined(BOOST_HAS_NRVO)
             BOOST_TEST(

Modified: branches/release/libs/unordered/test/unordered/unnecessary_copy_tests.cpp
==============================================================================
--- branches/release/libs/unordered/test/unordered/unnecessary_copy_tests.cpp (original)
+++ branches/release/libs/unordered/test/unordered/unnecessary_copy_tests.cpp 2012-12-05 17:06:57 EST (Wed, 05 Dec 2012)
@@ -195,7 +195,7 @@
         reset();
         T x;
         x.emplace(source<BOOST_DEDUCED_TYPENAME T::value_type>());
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         COPY_COUNT(1);
 #else
         COPY_COUNT(2);
@@ -215,7 +215,7 @@
         BOOST_DEDUCED_TYPENAME T::value_type a;
         COPY_COUNT(1); MOVE_COUNT(0);
         x.emplace(boost::move(a));
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         COPY_COUNT(1); MOVE_COUNT(1);
 #else
         // Since std::pair isn't movable, move only works for sets.
@@ -249,7 +249,7 @@
         BOOST_DEDUCED_TYPENAME T::value_type a;
         COPY_COUNT(1); MOVE_COUNT(0);
         x.emplace(boost::move(a));
-#if defined(BOOST_NO_RVALUE_REFERENCES)
+#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         COPY_COUNT(2); MOVE_COUNT(0);
 #else
         COPY_COUNT(1); MOVE_COUNT(1);
@@ -285,8 +285,8 @@
         // the existing element.
         reset();
         x.emplace();
-#if !defined(BOOST_NO_VARIADIC_TEMPLATES) || \
- !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || \
+ !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         // source_cost doesn't make much sense here, but it seems to fit.
         COPY_COUNT(1); MOVE_COUNT(source_cost);
 #else
@@ -313,7 +313,7 @@
         // No move should take place.
         reset();
         x.emplace(boost::move(a));
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
         COPY_COUNT(0); MOVE_COUNT(0);
 #else
         COPY_COUNT(0); MOVE_COUNT(1);


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk