Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r86269 - in trunk: boost boost/multi_index boost/multi_index/detail libs/multi_index/example libs/multi_index/test
From: joaquin_at_[hidden]
Date: 2013-10-12 15:59:48


Author: joaquin
Date: 2013-10-12 15:59:48 EDT (Sat, 12 Oct 2013)
New Revision: 86269
URL: http://svn.boost.org/trac/boost/changeset/86269

Log:
removed support for compilers without template partial specialization

Text files modified:
   trunk/boost/multi_index/composite_key.hpp | 41 -------------
   trunk/boost/multi_index/detail/hash_index_iterator.hpp | 10 --
   trunk/boost/multi_index/detail/hash_index_node.hpp | 16 ++--
   trunk/boost/multi_index/detail/safe_mode.hpp | 3
   trunk/boost/multi_index/detail/serialization_version.hpp | 2
   trunk/boost/multi_index/global_fun.hpp | 15 ----
   trunk/boost/multi_index/identity.hpp | 16 ----
   trunk/boost/multi_index/member.hpp | 22 +-----
   trunk/boost/multi_index_container.hpp | 17 -----
   trunk/libs/multi_index/example/composite_keys.cpp | 14 ---
   trunk/libs/multi_index/test/test_composite_key.cpp | 123 +++++++++------------------------------
   trunk/libs/multi_index/test/test_key_extractors.cpp | 6 -
   trunk/libs/multi_index/test/test_serialization3.cpp | 4 -
   13 files changed, 54 insertions(+), 235 deletions(-)

Modified: trunk/boost/multi_index/composite_key.hpp
==============================================================================
--- trunk/boost/multi_index/composite_key.hpp Sat Oct 12 15:26:17 2013 (r86268)
+++ trunk/boost/multi_index/composite_key.hpp 2013-10-12 15:59:48 EDT (Sat, 12 Oct 2013) (r86269)
@@ -580,16 +580,6 @@
 
 /* composite_key */
 
-/* NB. Some overloads of operator() have an extra dummy parameter int=0.
- * This disambiguator serves several purposes:
- * - Without it, MSVC++ 6.0 incorrectly regards some overloads as
- * specializations of a previous member function template.
- * - MSVC++ 6.0/7.0 seem to incorrectly treat some different memfuns
- * as if they have the same signature.
- * - If remove_const is broken due to lack of PTS, int=0 avoids the
- * declaration of memfuns with identical signature.
- */
-
 template<
   typename Value,
   BOOST_MULTI_INDEX_CK_ENUM(BOOST_MULTI_INDEX_CK_TEMPLATE_PARM,KeyFromValue)
@@ -639,7 +629,7 @@
     return result_type(*this,x.get());
   }
 
- result_type operator()(const reference_wrapper<value_type>& x,int=0)const
+ result_type operator()(const reference_wrapper<value_type>& x)const
   {
     return result_type(*this,x.get());
   }
@@ -1229,7 +1219,6 @@
  * for composite_key_results enabling interoperation with tuples of values.
  */
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 namespace std{
 
 template<typename CompositeKey>
@@ -1269,34 +1258,6 @@
 };
 
 } /* namespace boost */
-#else
-/* Lacking template partial specialization, std::equal_to, std::less and
- * std::greater will still work for composite_key_results although without
- * tuple interoperability. To achieve the same graceful degrading with
- * boost::hash, we define the appropriate hash_value overload.
- */
-
-namespace boost{
-
-#if !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
-namespace multi_index{
-#endif
-
-template<typename CompositeKey>
-inline std::size_t hash_value(
- const boost::multi_index::composite_key_result<CompositeKey>& x)
-{
- boost::multi_index::composite_key_result_hash<
- boost::multi_index::composite_key_result<CompositeKey> > h;
- return h(x);
-}
-
-#if !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
-} /* namespace multi_index */
-#endif
-
-} /* namespace boost */
-#endif
 
 #undef BOOST_MULTI_INDEX_CK_RESULT_HASH_SUPER
 #undef BOOST_MULTI_INDEX_CK_RESULT_GREATER_SUPER

Modified: trunk/boost/multi_index/detail/hash_index_iterator.hpp
==============================================================================
--- trunk/boost/multi_index/detail/hash_index_iterator.hpp Sat Oct 12 15:26:17 2013 (r86268)
+++ trunk/boost/multi_index/detail/hash_index_iterator.hpp 2013-10-12 15:59:48 EDT (Sat, 12 Oct 2013) (r86269)
@@ -68,15 +68,10 @@
   typedef typename Node::base_type node_base_type;
 
   template<class Archive>
- void save(Archive& ar,const unsigned int version)const
+ void save(Archive& ar,const unsigned int)const
   {
     node_base_type* bnode=node;
     ar<<serialization::make_nvp("pointer",bnode);
- if(version<1){ /* class versioning unavailable */
- /* save anything for backwards compatibility */
- BucketArray* dummy=0;
- ar<<serialization::make_nvp("pointer",dummy);
- }
   }
 
   template<class Archive>
@@ -149,8 +144,7 @@
 
 } /* namespace multi_index */
 
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)&&\
- !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
 /* class version = 1 : hashed_index_iterator does no longer serialize a bucket
  * array pointer.
  */

Modified: trunk/boost/multi_index/detail/hash_index_node.hpp
==============================================================================
--- trunk/boost/multi_index/detail/hash_index_node.hpp Sat Oct 12 15:26:17 2013 (r86268)
+++ trunk/boost/multi_index/detail/hash_index_node.hpp 2013-10-12 15:59:48 EDT (Sat, 12 Oct 2013) (r86269)
@@ -15,8 +15,6 @@
 
 #include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
 #include <boost/detail/allocator_utilities.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/type_traits/is_same.hpp>
 
 namespace boost{
 
@@ -220,8 +218,11 @@
 struct hashed_unique_tag{};
 struct hashed_non_unique_tag{};
 
+template<typename Node,typename Category>
+struct hashed_index_node_alg;
+
 template<typename Node>
-struct hashed_unique_index_node_alg
+struct hashed_index_node_alg<Node,hashed_unique_tag>
 {
   typedef typename Node::base_pointer base_pointer;
   typedef typename Node::const_base_pointer const_base_pointer;
@@ -310,7 +311,7 @@
 };
 
 template<typename Node>
-struct hashed_non_unique_index_node_alg
+struct hashed_index_node_alg<Node,hashed_non_unique_tag>
 {
   typedef typename Node::base_pointer base_pointer;
   typedef typename Node::const_base_pointer const_base_pointer;
@@ -631,11 +632,8 @@
 
 public:
   typedef typename trampoline::impl_type impl_type;
- typedef typename mpl::if_<
- is_same<Category,hashed_unique_tag>,
- hashed_unique_index_node_alg<impl_type>,
- hashed_non_unique_index_node_alg<impl_type>
- >::type node_alg;
+ typedef hashed_index_node_alg<
+ impl_type,Category> node_alg;
   typedef typename trampoline::base_pointer impl_base_pointer;
   typedef typename trampoline::const_base_pointer const_impl_base_pointer;
   typedef typename trampoline::pointer impl_pointer;

Modified: trunk/boost/multi_index/detail/safe_mode.hpp
==============================================================================
--- trunk/boost/multi_index/detail/safe_mode.hpp Sat Oct 12 15:26:17 2013 (r86268)
+++ trunk/boost/multi_index/detail/safe_mode.hpp 2013-10-12 15:59:48 EDT (Sat, 12 Oct 2013) (r86269)
@@ -568,8 +568,7 @@
 
 } /* namespace multi_index */
 
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)&&\
- !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
 namespace serialization{
 template<typename Iterator,typename Container>
 struct version<

Modified: trunk/boost/multi_index/detail/serialization_version.hpp
==============================================================================
--- trunk/boost/multi_index/detail/serialization_version.hpp Sat Oct 12 15:26:17 2013 (r86268)
+++ trunk/boost/multi_index/detail/serialization_version.hpp 2013-10-12 15:59:48 EDT (Sat, 12 Oct 2013) (r86269)
@@ -60,7 +60,6 @@
 
 } /* namespace multi_index */
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 namespace serialization {
 template<typename T>
 struct version<boost::multi_index::detail::serialization_version<T> >
@@ -68,7 +67,6 @@
   BOOST_STATIC_CONSTANT(int,value=version<T>::value);
 };
 } /* namespace serialization */
-#endif
 
 } /* namespace boost */
 

Modified: trunk/boost/multi_index/global_fun.hpp
==============================================================================
--- trunk/boost/multi_index/global_fun.hpp Sat Oct 12 15:26:17 2013 (r86268)
+++ trunk/boost/multi_index/global_fun.hpp 2013-10-12 15:59:48 EDT (Sat, 12 Oct 2013) (r86269)
@@ -46,16 +46,6 @@
  * arbitrary combinations of these (vg. T** or auto_ptr<T*>.)
  */
 
-/* NB. Some overloads of operator() have an extra dummy parameter int=0.
- * This disambiguator serves several purposes:
- * - Without it, MSVC++ 6.0 incorrectly regards some overloads as
- * specializations of a previous member function template.
- * - MSVC++ 6.0/7.0 seem to incorrectly treat some different memfuns
- * as if they have the same signature.
- * - If remove_const is broken due to lack of PTS, int=0 avoids the
- * declaration of memfuns with identical signature.
- */
-
 template<class Value,typename Type,Type (*PtrToFunction)(Value)>
 struct const_ref_global_fun_base
 {
@@ -90,7 +80,7 @@
   Type operator()(
     const reference_wrapper<
       typename remove_const<
- typename remove_reference<Value>::type>::type>& x,int=0)const
+ typename remove_reference<Value>::type>::type>& x)const
   {
     return operator()(x.get());
   }
@@ -158,8 +148,7 @@
   }
 
   Type operator()(
- const reference_wrapper<
- typename remove_const<Value>::type>& x,int=0)const
+ const reference_wrapper<typename remove_const<Value>::type>& x)const
   {
     return operator()(x.get());
   }

Modified: trunk/boost/multi_index/identity.hpp
==============================================================================
--- trunk/boost/multi_index/identity.hpp Sat Oct 12 15:26:17 2013 (r86268)
+++ trunk/boost/multi_index/identity.hpp 2013-10-12 15:59:48 EDT (Sat, 12 Oct 2013) (r86269)
@@ -42,16 +42,6 @@
  * arbitrary combinations of these (vg. Type** or auto_ptr<Type*>.)
  */
 
-/* NB. Some overloads of operator() have an extra dummy parameter int=0.
- * This disambiguator serves several purposes:
- * - Without it, MSVC++ 6.0 incorrectly regards some overloads as
- * specializations of a previous member function template.
- * - MSVC++ 6.0/7.0 seem to incorrectly treat some different memfuns
- * as if they have the same signature.
- * - If remove_const is broken due to lack of PTS, int=0 avoids the
- * declaration of memfuns with identical signature.
- */
-
 template<typename Type>
 struct const_identity_base
 {
@@ -81,7 +71,7 @@
   }
 
   Type& operator()(
- const reference_wrapper<typename remove_const<Type>::type>& x,int=0)const
+ const reference_wrapper<typename remove_const<Type>::type>& x)const
   {
     return x.get();
   }
@@ -108,7 +98,7 @@
     return operator()(*x);
   }
 
- const Type& operator()(const Type& x,int=0)const
+ const Type& operator()(const Type& x)const
   {
     return x;
   }
@@ -118,7 +108,7 @@
     return x;
   }
 
- const Type& operator()(const reference_wrapper<const Type>& x,int=0)const
+ const Type& operator()(const reference_wrapper<const Type>& x)const
   {
     return x.get();
   }

Modified: trunk/boost/multi_index/member.hpp
==============================================================================
--- trunk/boost/multi_index/member.hpp Sat Oct 12 15:26:17 2013 (r86268)
+++ trunk/boost/multi_index/member.hpp 2013-10-12 15:59:48 EDT (Sat, 12 Oct 2013) (r86269)
@@ -41,16 +41,6 @@
  * arbitrary combinations of these (vg. T** or auto_ptr<T*>.)
  */
 
-/* NB. Some overloads of operator() have an extra dummy parameter int=0.
- * This disambiguator serves several purposes:
- * - Without it, MSVC++ 6.0 incorrectly regards some overloads as
- * specializations of a previous member function template.
- * - MSVC++ 6.0/7.0 seem to incorrectly treat some different memfuns
- * as if they have the same signature.
- * - If remove_const is broken due to lack of PTS, int=0 avoids the
- * declaration of memfuns with identical signature.
- */
-
 template<class Class,typename Type,Type Class::*PtrToMember>
 struct const_member_base
 {
@@ -80,7 +70,7 @@
     return operator()(x.get());
   }
 
- Type& operator()(const reference_wrapper<Class>& x,int=0)const
+ Type& operator()(const reference_wrapper<Class>& x)const
   {
     return operator()(x.get());
   }
@@ -105,7 +95,7 @@
     return operator()(*x);
   }
 
- const Type& operator()(const Class& x,int=0)const
+ const Type& operator()(const Class& x)const
   {
     return x.*PtrToMember;
   }
@@ -115,7 +105,7 @@
     return x.*PtrToMember;
   }
 
- const Type& operator()(const reference_wrapper<const Class>& x,int=0)const
+ const Type& operator()(const reference_wrapper<const Class>& x)const
   {
     return operator()(x.get());
   }
@@ -189,7 +179,7 @@
     return operator()(x.get());
   }
 
- Type& operator()(const reference_wrapper<Class>& x,int=0)const
+ Type& operator()(const reference_wrapper<Class>& x)const
   {
     return operator()(x.get());
   }
@@ -214,7 +204,7 @@
     return operator()(*x);
   }
 
- const Type& operator()(const Class& x,int=0)const
+ const Type& operator()(const Class& x)const
   {
     return *static_cast<const Type*>(
       static_cast<const void*>(
@@ -229,7 +219,7 @@
         static_cast<char*>(static_cast<void *>(&x))+OffsetOfMember));
   }
 
- const Type& operator()(const reference_wrapper<const Class>& x,int=0)const
+ const Type& operator()(const reference_wrapper<const Class>& x)const
   {
     return operator()(x.get());
   }

Modified: trunk/boost/multi_index_container.hpp
==============================================================================
--- trunk/boost/multi_index_container.hpp Sat Oct 12 15:26:17 2013 (r86268)
+++ trunk/boost/multi_index_container.hpp 2013-10-12 15:59:48 EDT (Sat, 12 Oct 2013) (r86269)
@@ -877,17 +877,10 @@
   template<class Archive>
   void save(Archive& ar,const unsigned int version)const
   {
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
     const serialization::collection_size_type s(size_());
     const detail::serialization_version<value_type> value_version;
     ar<<serialization::make_nvp("count",s);
     ar<<serialization::make_nvp("value_version",value_version);
-#else
- const std::size_t s=size_();
- const unsigned int value_version=0;
- ar<<serialization::make_nvp("count",s);
-#endif
 
     index_saver_type sm(bfm_allocator::member,s);
 
@@ -907,8 +900,6 @@
     BOOST_MULTI_INDEX_CHECK_INVARIANT;
 
     clear_();
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
     serialization::collection_size_type s;
     detail::serialization_version<value_type> value_version;
     if(version<1){
@@ -925,11 +916,6 @@
     else{
       ar>>serialization::make_nvp("value_version",value_version);
     }
-#else
- std::size_t s;
- unsigned int value_version=0;
- ar>>serialization::make_nvp("count",s);
-#endif
 
     index_loader_type lm(bfm_allocator::member,s);
 
@@ -1344,8 +1330,7 @@
 
 } /* namespace multi_index */
 
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)&&\
- !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
 /* class version = 1 : we now serialize the size through
  * boost::serialization::collection_size_type.
  * class version = 2 : proper use of {save|load}_construct_data.

Modified: trunk/libs/multi_index/example/composite_keys.cpp
==============================================================================
--- trunk/libs/multi_index/example/composite_keys.cpp Sat Oct 12 15:26:17 2013 (r86268)
+++ trunk/libs/multi_index/example/composite_keys.cpp 2013-10-12 15:59:48 EDT (Sat, 12 Oct 2013) (r86269)
@@ -81,19 +81,9 @@
   file_entry,
   indexed_by<
     /* primary index sorted by name (inside the same directory) */
- ordered_unique<
- name_key
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- ,composite_key_result_less<name_key::result_type>
-#endif
- >,
+ ordered_unique<name_key>,
     /* secondary index sorted by size (inside the same directory) */
- ordered_non_unique<
- size_key
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- ,composite_key_result_less<size_key::result_type>
-#endif
- >
+ ordered_non_unique<size_key>
>
> file_system;
 

Modified: trunk/libs/multi_index/test/test_composite_key.cpp
==============================================================================
--- trunk/libs/multi_index/test/test_composite_key.cpp Sat Oct 12 15:26:17 2013 (r86268)
+++ trunk/libs/multi_index/test/test_composite_key.cpp 2013-10-12 15:59:48 EDT (Sat, 12 Oct 2013) (r86269)
@@ -74,12 +74,9 @@
     composite_key_result_equal_to<CompositeKeyResult> eq;
     composite_key_result_less<CompositeKeyResult> lt;
     composite_key_result_greater<CompositeKeyResult> gt;
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- std::equal_to<CompositeKeyResult> std_eq;
- std::less<CompositeKeyResult> std_lt;
- std::greater<CompositeKeyResult> std_gt;
-#endif
+ std::equal_to<CompositeKeyResult> std_eq;
+ std::less<CompositeKeyResult> std_lt;
+ std::greater<CompositeKeyResult> std_gt;
 
     return (x< y) && !(y< x)&&
            !(x==y) && !(y==x)&&
@@ -87,18 +84,12 @@
            !(x> y) && (y> x)&&
            !(x>=y) && (y>=x)&&
             (x<=y) && !(y<=x)&&
-
           !eq(x,y) && !eq(y,x)&&
            lt(x,y) && !lt(y,x)&&
- !gt(x,y) && gt(y,x)
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- &&
+ !gt(x,y) && gt(y,x)&&
       !std_eq(x,y) && !std_eq(y,x)&&
        std_lt(x,y) && !std_lt(y,x)&&
- !std_gt(x,y) && std_gt(y,x)
-#endif
- ;
+ !std_gt(x,y) && std_gt(y,x);
   }
 
   static bool is_greater(const CompositeKeyResult& x,const T2& y)
@@ -106,12 +97,9 @@
     composite_key_result_equal_to<CompositeKeyResult> eq;
     composite_key_result_less<CompositeKeyResult> lt;
     composite_key_result_greater<CompositeKeyResult> gt;
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- std::equal_to<CompositeKeyResult> std_eq;
- std::less<CompositeKeyResult> std_lt;
- std::greater<CompositeKeyResult> std_gt;
-#endif
+ std::equal_to<CompositeKeyResult> std_eq;
+ std::less<CompositeKeyResult> std_lt;
+ std::greater<CompositeKeyResult> std_gt;
 
     return !(x< y) && (y< x)&&
            !(x==y) && !(y==x)&&
@@ -119,18 +107,12 @@
             (x> y) && !(y> x)&&
             (x>=y) && !(y>=x)&&
            !(x<=y) && (y<=x)&&
-
           !eq(x,y) && !eq(y,x)&&
           !lt(x,y) && lt(y,x)&&
- gt(x,y) && !gt(y,x)
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- &&
+ gt(x,y) && !gt(y,x)&&
       !std_eq(x,y) && !std_eq(y,x)&&
       !std_lt(x,y) && std_lt(y,x)&&
- std_gt(x,y) && !std_gt(y,x)
-#endif
- ;
+ std_gt(x,y) && !std_gt(y,x);
   }
 
   static bool is_equiv(const CompositeKeyResult& x,const T2& y)
@@ -138,12 +120,9 @@
     composite_key_result_equal_to<CompositeKeyResult> eq;
     composite_key_result_less<CompositeKeyResult> lt;
     composite_key_result_greater<CompositeKeyResult> gt;
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- std::equal_to<CompositeKeyResult> std_eq;
- std::less<CompositeKeyResult> std_lt;
- std::greater<CompositeKeyResult> std_gt;
-#endif
+ std::equal_to<CompositeKeyResult> std_eq;
+ std::less<CompositeKeyResult> std_lt;
+ std::greater<CompositeKeyResult> std_gt;
 
     return !(x< y) && !(y< x)&&
             (x==y) && (y==x)&&
@@ -151,18 +130,12 @@
            !(x> y) && !(y> x)&&
             (x>=y) && (y>=x)&&
             (x<=y) && (y<=x)&&
-
            eq(x,y) && eq(y,x)&&
           !lt(x,y) && !lt(y,x)&&
- !gt(x,y) && !gt(y,x)
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- &&
+ !gt(x,y) && !gt(y,x)&&
        std_eq(x,y) && std_eq(y,x)&&
       !std_lt(x,y) && !std_lt(y,x)&&
- !std_gt(x,y) && !std_gt(y,x)
-#endif
- ;
+ !std_gt(x,y) && !std_gt(y,x);
   }
 };
 
@@ -173,78 +146,51 @@
   {
     composite_key_result_less<CompositeKeyResult> lt;
     composite_key_result_greater<CompositeKeyResult> gt;
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- std::less<CompositeKeyResult> std_lt;
- std::greater<CompositeKeyResult> std_gt;
-#endif
+ std::less<CompositeKeyResult> std_lt;
+ std::greater<CompositeKeyResult> std_gt;
 
     return (x< y) && !(y< x)&&
            !(x> y) && (y> x)&&
            !(x>=y) && (y>=x)&&
             (x<=y) && !(y<=x)&&
-
            lt(x,y) && !lt(y,x)&&
- !gt(x,y) && gt(y,x)
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- &&
+ !gt(x,y) && gt(y,x)&&
        std_lt(x,y) && !std_lt(y,x)&&
- !std_gt(x,y) && std_gt(y,x)
-#endif
- ;
+ !std_gt(x,y) && std_gt(y,x);
   }
 
   static bool is_greater(const CompositeKeyResult& x,const T2& y)
   {
     composite_key_result_less<CompositeKeyResult> lt;
     composite_key_result_greater<CompositeKeyResult> gt;
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- std::less<CompositeKeyResult> std_lt;
- std::greater<CompositeKeyResult> std_gt;
-#endif
+ std::less<CompositeKeyResult> std_lt;
+ std::greater<CompositeKeyResult> std_gt;
 
     return !(x< y) && (y< x)&&
             (x> y) && !(y> x)&&
             (x>=y) && !(y>=x)&&
            !(x<=y) && (y<=x)&&
-
           !lt(x,y) && lt(y,x)&&
- gt(x,y) && !gt(y,x)
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- &&
+ gt(x,y) && !gt(y,x)&&
       !std_lt(x,y) && std_lt(y,x)&&
- std_gt(x,y) && !std_gt(y,x)
-#endif
- ;
+ std_gt(x,y) && !std_gt(y,x);
   }
 
   static bool is_equiv(const CompositeKeyResult& x,const T2& y)
   {
     composite_key_result_less<CompositeKeyResult> lt;
     composite_key_result_greater<CompositeKeyResult> gt;
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- std::less<CompositeKeyResult> std_lt;
- std::greater<CompositeKeyResult> std_gt;
-#endif
+ std::less<CompositeKeyResult> std_lt;
+ std::greater<CompositeKeyResult> std_gt;
 
     return !(x< y) && !(y< x)&&
            !(x> y) && !(y> x)&&
             (x>=y) && (y>=x)&&
             (x<=y) && (y<=x)&&
-
           !lt(x,y) && !lt(y,x)&&
- !gt(x,y) && !gt(y,x)
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- &&
+ !gt(x,y) && !gt(y,x)&&
       !std_lt(x,y) && !std_lt(y,x)&&
- !std_gt(x,y) && !std_gt(y,x)
-#endif
- ;
+ !std_gt(x,y) && !std_gt(y,x);
   }
 };
 
@@ -355,12 +301,7 @@
   typedef multi_index_container<
     xyz,
     indexed_by<
- ordered_unique<
- ckey_t1
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- ,composite_key_result_less<ckey_t1::result_type>
-#endif
- >
+ ordered_unique<ckey_t1>
>
> indexed_t1;
 
@@ -576,13 +517,7 @@
   typedef multi_index_container<
     xyz,
     indexed_by<
- hashed_unique<
- ckey_t1
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- ,composite_key_result_hash<ckey_t1::result_type>
- ,composite_key_result_equal_to<ckey_t1::result_type>
-#endif
- >
+ hashed_unique<ckey_t1>
>
> indexed_t2;
 

Modified: trunk/libs/multi_index/test/test_key_extractors.cpp
==============================================================================
--- trunk/libs/multi_index/test/test_key_extractors.cpp Sat Oct 12 15:26:17 2013 (r86268)
+++ trunk/libs/multi_index/test/test_key_extractors.cpp 2013-10-12 15:59:48 EDT (Sat, 12 Oct 2013) (r86269)
@@ -62,9 +62,6 @@
   test_derived_class(int i,int j):test_class(i,j){}
 };
 
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(test_class)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(test_derived_class)
-
 typedef identity<test_class> idn;
 typedef identity<const test_class> cidn;
 typedef BOOST_MULTI_INDEX_MEMBER(test_class,int,int_member) key_m;
@@ -134,9 +131,6 @@
   test_nc_derived_class(int i,int j):test_nc_class(i,j){}
 };
 
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(test_nc_class)
-BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(test_nc_derived_class)
-
 typedef identity<test_nc_class> nc_idn;
 typedef identity<const test_nc_class> nc_cidn;
 typedef BOOST_MULTI_INDEX_MEMBER(test_nc_class,int,int_member) nc_key_m;

Modified: trunk/libs/multi_index/test/test_serialization3.cpp
==============================================================================
--- trunk/libs/multi_index/test/test_serialization3.cpp Sat Oct 12 15:26:17 2013 (r86268)
+++ trunk/libs/multi_index/test/test_serialization3.cpp 2013-10-12 15:59:48 EDT (Sat, 12 Oct 2013) (r86269)
@@ -35,9 +35,7 @@
 void save_construct_data(
   Archive& ar,const non_default_ctble* p,const unsigned int version)
 {
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
   if(version<3)return;
-#endif
 
   ar<<boost::serialization::make_nvp("n",p->n);
 }
@@ -46,9 +44,7 @@
 void load_construct_data(
   Archive& ar,non_default_ctble* p,const unsigned int version)
 {
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
   if(version<3)return;
-#endif
 
   int n=0;
   ar>>boost::serialization::make_nvp("n",n);


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