Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r86246 - in trunk/boost: algorithm/string algorithm/string/std detail iterator property_map python python/detail python/object random/detail range spirit/home/classic/core/composite/impl spirit/home/classic/core/non_terminal/impl spirit/home/classic/meta/impl spirit/home/support/iterators spirit/home/support/iterators/detail tuple type_traits
From: steveire_at_[hidden]
Date: 2013-10-11 19:19:17


Author: skelly
Date: 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013)
New Revision: 86246
URL: http://svn.boost.org/trac/boost/changeset/86246

Log:
Remove BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION

Process #ifdef...#else...#endif blocks.

Text files modified:
   trunk/boost/algorithm/string/sequence_traits.hpp | 32 -------
   trunk/boost/algorithm/string/std/list_traits.hpp | 17 ----
   trunk/boost/algorithm/string/std/rope_traits.hpp | 20 ----
   trunk/boost/algorithm/string/std/slist_traits.hpp | 16 ---
   trunk/boost/algorithm/string/std/string_traits.hpp | 8 -
   trunk/boost/detail/is_xxx.hpp | 34 --------
   trunk/boost/iterator/iterator_facade.hpp | 28 ------
   trunk/boost/property_map/property_map.hpp | 55 -------------
   trunk/boost/python/detail/value_is_xxx.hpp | 30 -------
   trunk/boost/python/init.hpp | 22 -----
   trunk/boost/python/object/iterator.hpp | 28 ------
   trunk/boost/python/object_core.hpp | 21 -----
   trunk/boost/random/detail/ptr_helper.hpp | 25 ------
   trunk/boost/range/size_type.hpp | 4
   trunk/boost/spirit/home/classic/core/composite/impl/directives.ipp | 164 ----------------------------------------
   trunk/boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp | 71 -----------------
   trunk/boost/spirit/home/classic/meta/impl/parser_traits.ipp | 75 ------------------
   trunk/boost/spirit/home/support/iterators/detail/combine_policies.hpp | 38 ---------
   trunk/boost/spirit/home/support/iterators/multi_pass.hpp | 4
   trunk/boost/tuple/tuple_io.hpp | 7 -
   trunk/boost/type_traits/type_with_alignment.hpp | 30 -------
   21 files changed, 0 insertions(+), 729 deletions(-)

Modified: trunk/boost/algorithm/string/sequence_traits.hpp
==============================================================================
--- trunk/boost/algorithm/string/sequence_traits.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/algorithm/string/sequence_traits.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -45,20 +45,12 @@
         class has_native_replace
         {
 
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- private:
- static T* t;
- public:
- BOOST_STATIC_CONSTANT(bool, value=(
- sizeof(has_native_replace_tester(t))==sizeof(yes_type) ) );
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
         public:
 # if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
             enum { value = false };
 # else
             BOOST_STATIC_CONSTANT(bool, value=false);
 # endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 
             typedef mpl::bool_<has_native_replace<T>::value> type;
@@ -73,20 +65,12 @@
         template< typename T >
         class has_stable_iterators
         {
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- private:
- static T* t;
- public:
- BOOST_STATIC_CONSTANT(bool, value=(
- sizeof(has_stable_iterators_tester(t))==sizeof(yes_type) ) );
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
         public:
 # if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
             enum { value = false };
 # else
             BOOST_STATIC_CONSTANT(bool, value=false);
 # endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
             typedef mpl::bool_<has_stable_iterators<T>::value> type;
         };
@@ -100,20 +84,12 @@
         template< typename T >
         class has_const_time_insert
         {
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- private:
- static T* t;
- public:
- BOOST_STATIC_CONSTANT(bool, value=(
- sizeof(has_const_time_insert_tester(t))==sizeof(yes_type) ) );
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
         public:
 # if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
             enum { value = false };
 # else
             BOOST_STATIC_CONSTANT(bool, value=false);
 # endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
             typedef mpl::bool_<has_const_time_insert<T>::value> type;
         };
@@ -127,20 +103,12 @@
         template< typename T >
         class has_const_time_erase
         {
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- private:
- static T* t;
- public:
- BOOST_STATIC_CONSTANT(bool, value=(
- sizeof(has_const_time_erase_tester(t))==sizeof(yes_type) ) );
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
         public:
 # if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
             enum { value = false };
 # else
             BOOST_STATIC_CONSTANT(bool, value=false);
 # endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
             typedef mpl::bool_<has_const_time_erase<T>::value> type;
         };

Modified: trunk/boost/algorithm/string/std/list_traits.hpp
==============================================================================
--- trunk/boost/algorithm/string/std/list_traits.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/algorithm/string/std/list_traits.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -20,22 +20,6 @@
 
 // std::list<> traits -----------------------------------------------//
 
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
- // stable iterators tester
- template<typename T, typename AllocT>
- yes_type has_stable_iterators_tester( const ::std::list<T,AllocT>* );
-
- // const time insert tester
- template<typename T, typename AllocT>
- yes_type has_const_time_insert_tester( const ::std::list<T,AllocT>* );
-
- // const time erase tester
- template<typename T, typename AllocT>
- yes_type has_const_time_erase_tester( const ::std::list<T,AllocT>* );
-
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
         // stable iterators trait
         template<typename T, typename AllocT>
@@ -75,7 +59,6 @@
 #endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
             typedef mpl::bool_<has_const_time_erase<T>::value> type;
         };
-#endif
 
 
     } // namespace algorithm

Modified: trunk/boost/algorithm/string/std/rope_traits.hpp
==============================================================================
--- trunk/boost/algorithm/string/std/rope_traits.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/algorithm/string/std/rope_traits.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -20,25 +20,6 @@
 
 // SGI's std::rope<> traits -----------------------------------------------//
 
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
- // native replace tester
- template<typename T, typename TraitsT, typename AllocT>
- yes_type has_native_replace_tester( const std::rope<T, TraitsT, AllocT>* );
-
- // stable iterators tester
- template<typename T, typename TraitsT, typename AllocT>
- yes_type has_stable_iterators_tester( const std::rope<T, TraitsT, AllocT>* );
-
- // const time insert tester
- template<typename T, typename TraitsT, typename AllocT>
- yes_type has_const_time_insert_tester( const std::rope<T, TraitsT, AllocT>* );
-
- // const time erase tester
- template<typename T, typename TraitsT, typename AllocT>
- yes_type has_const_time_erase_tester( const std::rope<T, TraitsT, AllocT>* );
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
     
     // native replace trait
         template<typename T, typename TraitsT, typename AllocT>
@@ -91,7 +72,6 @@
 #endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
             typedef mpl::bool_<value> type;
         };
-#endif
 
 
     } // namespace algorithm

Modified: trunk/boost/algorithm/string/std/slist_traits.hpp
==============================================================================
--- trunk/boost/algorithm/string/std/slist_traits.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/algorithm/string/std/slist_traits.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -21,21 +21,6 @@
 
 // SGI's std::slist<> traits -----------------------------------------------//
 
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
- // stable iterators tester
- template<typename T, typename AllocT>
- yes_type has_stable_iterators_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT>* );
-
- // const time insert tester
- template<typename T, typename AllocT>
- yes_type has_const_time_insert_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT>* );
-
- // const time erase tester
- template<typename T, typename AllocT>
- yes_type has_const_time_erase_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT>* );
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
     // stable iterators trait
         template<typename T, typename AllocT>
@@ -75,7 +60,6 @@
 #endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
             typedef mpl::bool_<has_const_time_erase<T>::value> type;
         };
-#endif
 
 
     } // namespace algorithm

Modified: trunk/boost/algorithm/string/std/string_traits.hpp
==============================================================================
--- trunk/boost/algorithm/string/std/string_traits.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/algorithm/string/std/string_traits.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -20,13 +20,6 @@
 
 // std::basic_string<> traits -----------------------------------------------//
 
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
- // native replace tester
- template<typename T, typename TraitsT, typename AllocT>
- yes_type has_native_replace_tester( const std::basic_string<T, TraitsT, AllocT>* );
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
     // native replace trait
         template<typename T, typename TraitsT, typename AllocT>
@@ -43,7 +36,6 @@
         };
 
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
     } // namespace algorithm
 } // namespace boost

Modified: trunk/boost/detail/is_xxx.hpp
==============================================================================
--- trunk/boost/detail/is_xxx.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/detail/is_xxx.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -8,39 +8,6 @@
 # include <boost/mpl/bool.hpp>
 # include <boost/preprocessor/enum_params.hpp>
 
-# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-# include <boost/type_traits/is_reference.hpp>
-# include <boost/type_traits/add_reference.hpp>
-
-# define BOOST_DETAIL_IS_XXX_DEF(name, qualified_name, nargs) \
-template <class X_> \
-struct is_##name \
-{ \
- typedef char yes; \
- typedef char (&no)[2]; \
- \
- static typename add_reference<X_>::type dummy; \
- \
- struct helpers \
- { \
- template < BOOST_PP_ENUM_PARAMS_Z(1, nargs, class U) > \
- static yes test( \
- qualified_name< BOOST_PP_ENUM_PARAMS_Z(1, nargs, U) >&, int \
- ); \
- \
- template <class U> \
- static no test(U&, ...); \
- }; \
- \
- BOOST_STATIC_CONSTANT( \
- bool, value \
- = !is_reference<X_>::value \
- & (sizeof(helpers::test(dummy, 0)) == sizeof(yes))); \
- \
- typedef mpl::bool_<value> type; \
-};
-
-# else
 
 # define BOOST_DETAIL_IS_XXX_DEF(name, qualified_name, nargs) \
 template <class T> \
@@ -56,6 +23,5 @@
 { \
 };
 
-# endif
 
 #endif // BOOST_DETAIL_IS_XXX_DWA20051011_HPP

Modified: trunk/boost/iterator/iterator_facade.hpp
==============================================================================
--- trunk/boost/iterator/iterator_facade.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/iterator/iterator_facade.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -204,33 +204,6 @@
         Iterator stored_iterator;
     };
 
-# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
- template <class Reference, class Value>
- struct is_non_proxy_reference_impl
- {
- static Reference r;
-
- template <class R>
- static typename mpl::if_<
- is_convertible<
- R const volatile*
- , Value const volatile*
- >
- , char[1]
- , char[2]
- >::type& helper(R const&);
-
- BOOST_STATIC_CONSTANT(bool, value = sizeof(helper(r)) == 1);
- };
-
- template <class Reference, class Value>
- struct is_non_proxy_reference
- : mpl::bool_<
- is_non_proxy_reference_impl<Reference, Value>::value
- >
- {};
-# else
     template <class Reference, class Value>
     struct is_non_proxy_reference
       : is_convertible<
@@ -239,7 +212,6 @@
           , Value const volatile*
>
     {};
-# endif
 
     // A metafunction to choose the result type of postfix ++
     //

Modified: trunk/boost/property_map/property_map.hpp
==============================================================================
--- trunk/boost/property_map/property_map.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/property_map/property_map.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -92,60 +92,6 @@
   //=========================================================================
   // property_traits specialization for pointers
 
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- // The user will just have to create their own specializations for
- // other pointers types if the compiler does not have partial
- // specializations. Sorry!
-#define BOOST_SPECIALIZE_PROPERTY_TRAITS_PTR(TYPE) \
- template <> \
- struct property_traits<TYPE*> { \
- typedef TYPE value_type; \
- typedef value_type& reference; \
- typedef std::ptrdiff_t key_type; \
- typedef lvalue_property_map_tag category; \
- }; \
- template <> \
- struct property_traits<const TYPE*> { \
- typedef TYPE value_type; \
- typedef const value_type& reference; \
- typedef std::ptrdiff_t key_type; \
- typedef lvalue_property_map_tag category; \
- }
-
- BOOST_SPECIALIZE_PROPERTY_TRAITS_PTR(long);
- BOOST_SPECIALIZE_PROPERTY_TRAITS_PTR(unsigned long);
- BOOST_SPECIALIZE_PROPERTY_TRAITS_PTR(int);
- BOOST_SPECIALIZE_PROPERTY_TRAITS_PTR(unsigned int);
- BOOST_SPECIALIZE_PROPERTY_TRAITS_PTR(short);
- BOOST_SPECIALIZE_PROPERTY_TRAITS_PTR(unsigned short);
- BOOST_SPECIALIZE_PROPERTY_TRAITS_PTR(char);
- BOOST_SPECIALIZE_PROPERTY_TRAITS_PTR(unsigned char);
- BOOST_SPECIALIZE_PROPERTY_TRAITS_PTR(signed char);
- BOOST_SPECIALIZE_PROPERTY_TRAITS_PTR(bool);
- BOOST_SPECIALIZE_PROPERTY_TRAITS_PTR(float);
- BOOST_SPECIALIZE_PROPERTY_TRAITS_PTR(double);
- BOOST_SPECIALIZE_PROPERTY_TRAITS_PTR(long double);
-
- // This may need to be turned off for some older compilers that don't have
- // wchar_t intrinsically.
-# ifndef BOOST_NO_INTRINSIC_WCHAR_T
- template <>
- struct property_traits<wchar_t*> {
- typedef wchar_t value_type;
- typedef value_type& reference;
- typedef std::ptrdiff_t key_type;
- typedef lvalue_property_map_tag category;
- };
- template <>
- struct property_traits<const wchar_t*> {
- typedef wchar_t value_type;
- typedef const value_type& reference;
- typedef std::ptrdiff_t key_type;
- typedef lvalue_property_map_tag category;
- };
-# endif
-
-#else
   template <class T>
   struct property_traits<T*> {
     // BOOST_STATIC_ASSERT(boost::is_same<T, T*>::value && !"Using pointers as property maps is deprecated");
@@ -162,7 +108,6 @@
     typedef std::ptrdiff_t key_type;
     typedef lvalue_property_map_tag category;
   };
-#endif
 
 #if !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
   // MSVC doesn't have Koenig lookup, so the user has to

Modified: trunk/boost/python/detail/value_is_xxx.hpp
==============================================================================
--- trunk/boost/python/detail/value_is_xxx.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/python/detail/value_is_xxx.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -9,35 +9,6 @@
 # include <boost/mpl/bool.hpp>
 # include <boost/preprocessor/enum_params.hpp>
 
-# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-# include <boost/type_traits/is_reference.hpp>
-# include <boost/type_traits/add_reference.hpp>
-
-# define BOOST_PYTHON_VALUE_IS_XXX_DEF(name, qualified_name, nargs) \
-template <class X_> \
-struct value_is_##name \
-{ \
- typedef char yes; \
- typedef char (&no)[2]; \
- \
- static typename add_reference<X_>::type dummy; \
- \
- template < BOOST_PP_ENUM_PARAMS_Z(1, nargs, class U) > \
- static yes test( \
- qualified_name< BOOST_PP_ENUM_PARAMS_Z(1, nargs, U) > const&, int \
- ); \
- \
- template <class U> \
- static no test(U&, ...); \
- \
- BOOST_STATIC_CONSTANT( \
- bool, value \
- = (sizeof(test(dummy, 0)) == sizeof(yes))); \
- \
- typedef mpl::bool_<value> type; \
-};
-
-# else
 
 # include <boost/type_traits/remove_reference.hpp>
 # include <boost/type_traits/remove_cv.hpp>
@@ -57,6 +28,5 @@
                                                                         \
 };
 
-# endif
 
 #endif // VALUE_IS_XXX_DWA2003224_HPP

Modified: trunk/boost/python/init.hpp
==============================================================================
--- trunk/boost/python/init.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/python/init.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -76,27 +76,6 @@
   //
   // This metaprogram checks if T is an optional
   //
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
- template <class T>
- struct is_optional {
-
- private:
-
- template <BOOST_PYTHON_OVERLOAD_TYPES>
- static boost::type_traits::yes_type f(optional<BOOST_PYTHON_OVERLOAD_ARGS>);
- static boost::type_traits::no_type f(...);
- static T t();
-
- public:
-
- BOOST_STATIC_CONSTANT(
- bool, value =
- sizeof(f(t())) == sizeof(::boost::type_traits::yes_type));
- typedef mpl::bool_<value> type;
- };
-
-#else
 
     template <class T>
     struct is_optional
@@ -108,7 +87,6 @@
       : mpl::true_
     {};
   
-#endif
 
   template <int NDefaults>
   struct define_class_init_helper;

Modified: trunk/boost/python/object/iterator.hpp
==============================================================================
--- trunk/boost/python/object/iterator.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/python/object/iterator.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -71,35 +71,7 @@
 # endif
     };
     
-# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- // for compilers which can't deduce the value_type of pointers, we
- // have a special implementation of next. This takes advantage of
- // the fact that T* results are treated like T& results by
- // Boost.Python's function wrappers.
- struct next_ptr
- {
- typedef Iterator result_type;
-
- result_type
- operator()(iterator_range<NextPolicies,Iterator>& self)
- {
- if (self.m_start == self.m_finish)
- stop_iteration_error();
- return self.m_start++;
- }
- };
-
- typedef mpl::if_<
- is_same<
- boost::detail::please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_on_cv_unqualified_pointee<Iterator>
- , typename traits_t::value_type
- >
- , next_ptr
- , next
- >::type next_fn;
-# else
     typedef next next_fn;
-# endif
     
     object m_sequence; // Keeps the sequence alive while iterating.
     Iterator m_start;

Modified: trunk/boost/python/object_core.hpp
==============================================================================
--- trunk/boost/python/object_core.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/python/object_core.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -206,26 +206,6 @@
       PyObject* m_ptr;
   };
 
-# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
- template <class T, class U>
- struct is_derived_impl
- {
- static T x;
- template <class X>
- static X* to_pointer(X const&);
-
- static char test(U const*);
- typedef char (&no)[2];
- static no test(...);
-
- BOOST_STATIC_CONSTANT(bool, value = sizeof(test(to_pointer(x))) == 1);
- };
-
- template <class T, class U>
- struct is_derived
- : mpl::bool_<is_derived_impl<T,U>::value>
- {};
-# else
   template <class T, class U>
   struct is_derived
     : is_convertible<
@@ -233,7 +213,6 @@
         , U const*
>
   {};
-# endif
 
   template <class T>
   typename objects::unforward_cref<T>::type do_unforward_cref(T const& x)

Modified: trunk/boost/random/detail/ptr_helper.hpp
==============================================================================
--- trunk/boost/random/detail/ptr_helper.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/random/detail/ptr_helper.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -62,31 +62,6 @@
 // Helper macro for broken compilers defines specializations of
 // ptr_helper.
 //
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-# define BOOST_RANDOM_PTR_HELPER_SPEC(T) \
-namespace boost { namespace random { namespace detail { \
-template<> \
-struct ptr_helper<T&> \
-{ \
- typedef T value_type; \
- typedef T& reference_type; \
- typedef T& rvalue_type; \
- static reference_type ref(T& r) { return r; } \
- static const T& ref(const T& r) { return r; } \
-}; \
- \
-template<> \
-struct ptr_helper<T*> \
-{ \
- typedef T value_type; \
- typedef T& reference_type; \
- typedef T* rvalue_type; \
- static reference_type ref(T * p) { return *p; } \
- static const T& ref(const T * p) { return *p; } \
-}; \
-}}}
-#else
 # define BOOST_RANDOM_PTR_HELPER_SPEC(T)
-#endif
 
 #endif // BOOST_RANDOM_DETAIL_PTR_HELPER_HPP

Modified: trunk/boost/range/size_type.hpp
==============================================================================
--- trunk/boost/range/size_type.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/range/size_type.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -18,9 +18,6 @@
 #include <boost/range/config.hpp>
 #include <boost/range/difference_type.hpp>
 #include <boost/range/concepts.hpp>
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-#include <boost/range/detail/size_type.hpp>
-#else
 
 #include <boost/utility/enable_if.hpp>
 #include <boost/type_traits/make_unsigned.hpp>
@@ -96,7 +93,6 @@
 
 } // namespace boost
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 
 #endif

Modified: trunk/boost/spirit/home/classic/core/composite/impl/directives.ipp
==============================================================================
--- trunk/boost/spirit/home/classic/core/composite/impl/directives.ipp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/spirit/home/classic/core/composite/impl/directives.ipp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -151,169 +151,6 @@
             return s.parse(scan);
         }
 
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
- ///////////////////////////////////////////////////////////////////////
- //
- // from spirit 1.1 (copyright (c) 2001 Bruce Florman)
- // various workarounds to support longest and shortest directives
- //
- ///////////////////////////////////////////////////////////////////////
- template <typename T>
- struct is_alternative
- {
- // Determine at compile time (without partial specialization)
- // whether a given type is an instance of the alternative<A,B>
-
- static T t();
- template <typename A, typename B>
- static char test_(alternative<A, B> const&); // no implementation
- static int test_(...); // no implementation
- enum { r = sizeof(char) == sizeof(test_(t())) };
- typedef mpl::bool_<r> value;
- };
-
- template <typename T> struct select_to_longest;
-
- template <typename T>
- struct to_longest_alternative
- {
- typedef typename select_to_longest<T>::result_t result_t;
- typedef typename select_to_longest<T>::plain_t plain_t;
- typedef typename select_to_longest<T>::choose_t choose_t;
- static result_t convert(T const& a);
- };
-
- template <typename T>
- struct to_longest_generic
- {
- typedef T const& result_t;
- typedef T plain_t;
- typedef mpl::false_ choose_t;
- };
-
- template <typename T>
- inline T const&
- to_longest_convert(T const& a, mpl::false_)
- { return a; }
-
- template <typename T>
- struct to_longest_recursive
- {
- typedef typename to_longest_alternative<
- typename T::left_t>::plain_t a_t;
- typedef typename to_longest_alternative<
- typename T::right_t>::plain_t b_t;
-
- typedef longest_alternative<a_t, b_t> result_t;
-
- typedef result_t plain_t;
- typedef mpl::true_ choose_t;
- };
-
- template <typename A, typename B>
- inline typename to_longest_alternative<alternative<A, B> >::result_t
- to_longest_convert(alternative<A, B> const& alt, mpl::true_)
- {
- typedef typename to_longest_alternative<
- alternative<A, B> >::result_t result_t;
- return result_t(
- to_longest_alternative<A>::convert(alt.left()),
- to_longest_alternative<B>::convert(alt.right()));
- }
-
- template <typename T>
- inline typename to_longest_alternative<T>::result_t
- to_longest_alternative<T>::convert(T const& a)
- {
- return to_longest_convert(
- a, to_longest_alternative<T>::choose_t());
- }
-
- template <typename T>
- struct select_to_longest
- {
- typedef typename mpl::if_<
- is_alternative<T> // IF
- , to_longest_recursive<T> // THEN
- , to_longest_generic<T> // ELSE
- >::type type;
-
- typedef typename select_to_longest::type::result_t result_t;
- typedef typename select_to_longest::type::plain_t plain_t;
- typedef typename select_to_longest::type::choose_t choose_t;
- };
-
- template <typename T> struct select_to_shortest;
-
- template <typename T>
- struct to_shortest_alternative
- {
- typedef typename select_to_shortest<T>::result_t result_t;
- typedef typename select_to_shortest<T>::plain_t plain_t;
- typedef typename select_to_shortest<T>::choose_t choose_t;
- static result_t convert(T const& a);
- };
-
- template <typename T>
- struct to_shortest_generic
- {
- typedef T const& result_t;
- typedef T plain_t;
- typedef mpl::false_ choose_t;
- };
-
- template <typename T>
- inline T const&
- to_shortest_convert(T const& a, mpl::false_) { return a; }
-
- template <typename T>
- struct to_shortest_recursive
- {
- typedef typename to_shortest_alternative<
- typename T::left_t>::plain_t a_t;
- typedef typename to_shortest_alternative<
- typename T::right_t>::plain_t b_t;
-
- typedef shortest_alternative<a_t, b_t> result_t;
-
- typedef result_t plain_t;
- typedef mpl::true_ choose_t;
- };
-
- template <typename A, typename B>
- inline typename to_shortest_alternative<alternative<A, B> >::result_t
- to_shortest_convert(alternative<A, B> const& alt, mpl::true_)
- {
- typedef typename to_shortest_alternative<
- alternative<A, B> >::result_t result_t;
- return result_t(
- to_shortest_alternative<A>::convert(alt.left()),
- to_shortest_alternative<B>::convert(alt.right()));
- }
-
- template <typename T>
- inline typename to_shortest_alternative<T>::result_t
- to_shortest_alternative<T>::convert(T const& a)
- {
- return to_shortest_convert(
- a, to_shortest_alternative<T>::choose_t());
- }
-
- template <typename T>
- struct select_to_shortest
- {
- typedef typename mpl::if_<
- is_alternative<T> // IF
- , to_shortest_recursive<T> // THEN
- , to_shortest_generic<T> // ELSE
- >::type type;
-
- typedef typename select_to_shortest::type::result_t result_t;
- typedef typename select_to_shortest::type::plain_t plain_t;
- typedef typename select_to_shortest::type::choose_t choose_t;
- };
-#else
         template <typename T>
         struct to_longest_alternative
         {
@@ -363,7 +200,6 @@
                     to_shortest_alternative<B>::convert(alt.right()));
             }
         };
-#endif
     }
 
 BOOST_SPIRIT_CLASSIC_NAMESPACE_END

Modified: trunk/boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp
==============================================================================
--- trunk/boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -22,76 +22,6 @@
 
     namespace impl {
 
- #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
- template <int N, typename ListT>
- struct get_subrule;
-
- template <int N, typename ListT>
- struct get_subrule_chooser
- {
- static ListT t();
- static char test(nil_t);
- static int test(...);
-
- // Set value to
- // 0: ListT is empty
- // 1: ListT's first item has same ID
- // 2: ListT's first item has a different ID
-
- enum
- {
- id = ListT::first_t::id,
- is_same_id = N == id,
- is_nil_t = sizeof(char) == sizeof(test(t())),
- value = is_nil_t ? 0 : (is_same_id ? 1 : 2)
- };
- };
-
- template <int N>
- struct subrule_chooser;
-
- template <>
- struct subrule_chooser<0>
- {
- // First case. ListT is empty
-
- template <int N, typename ListT>
- struct result
- { typedef nil_t type; };
- };
-
- template <>
- struct subrule_chooser<1>
- {
- // Second case. ListT is non-empty and the list's
- // first item has the ID we are looking for.
-
- template <int N, typename ListT>
- struct result
- { typedef typename ListT::first_t::def_t type; };
- };
-
- template <>
- struct subrule_chooser<2>
- {
- // Third case. ListT is non-empty but the list's
- // first item does not have the ID we are looking for.
-
- template <int N, typename ListT>
- struct result
- { typedef typename get_subrule<N, ListT::rest_t>::type type; };
- };
-
- template <int N, typename ListT>
- struct get_subrule
- {
- enum { n = get_subrule_chooser<N, ListT>::value };
- typedef typename subrule_chooser<n>::template
- result<N, ListT>::type type;
- };
-
- #else
 
         template <int N, typename ListT>
         struct get_subrule
@@ -122,7 +52,6 @@
             typedef nil_t type;
         };
 
- #endif
 
         template <typename T1, typename T2>
         struct get_result_t {

Modified: trunk/boost/spirit/home/classic/meta/impl/parser_traits.ipp
==============================================================================
--- trunk/boost/spirit/home/classic/meta/impl/parser_traits.ipp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/spirit/home/classic/meta/impl/parser_traits.ipp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -21,80 +21,6 @@
 namespace impl
 {
 
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
- ///////////////////////////////////////////////////////////////////////////
- //
- // from spirit 1.1 (copyright (c) 2001 Bruce Florman)
- // various workarounds to support compile time decisions without partial
- // template specialization whether a given type is an instance of a
- // concrete parser type.
- //
- ///////////////////////////////////////////////////////////////////////////
-
- ///////////////////////////////////////////////////////////////////////////
- template <typename T>
- struct parser_type_traits
- {
- // Determine at compile time (without partial specialization)
- // whether a given type is an instance of the alternative<A,B>
-
- static T t();
-
- typedef struct { char dummy[1]; } size1_t;
- typedef struct { char dummy[2]; } size2_t;
- typedef struct { char dummy[3]; } size3_t;
- typedef struct { char dummy[4]; } size4_t;
- typedef struct { char dummy[5]; } size5_t;
- typedef struct { char dummy[6]; } size6_t;
- typedef struct { char dummy[7]; } size7_t;
- typedef struct { char dummy[8]; } size8_t;
- typedef struct { char dummy[9]; } size9_t;
- typedef struct { char dummy[10]; } size10_t;
-
- // the following functions need no implementation
- template <typename A, typename B>
- static size1_t test_(alternative<A, B> const&);
- template <typename A, typename B>
- static size2_t test_(sequence<A, B> const&);
- template <typename A, typename B>
- static size3_t test_(sequential_or<A, B> const&);
- template <typename A, typename B>
- static size4_t test_(intersection<A, B> const&);
- template <typename A, typename B>
- static size5_t test_(difference<A, B> const&);
- template <typename A, typename B>
- static size6_t test_(exclusive_or<A, B> const&);
- template <typename S>
- static size7_t test_(optional<S> const&);
- template <typename S>
- static size8_t test_(kleene_star<S> const&);
- template <typename S>
- static size9_t test_(positive<S> const&);
-
- static size10_t test_(...);
-
- BOOST_STATIC_CONSTANT(bool,
- is_alternative = (sizeof(size1_t) == sizeof(test_(t()))) );
- BOOST_STATIC_CONSTANT(bool,
- is_sequence = (sizeof(size2_t) == sizeof(test_(t()))) );
- BOOST_STATIC_CONSTANT(bool,
- is_sequential_or = (sizeof(size3_t) == sizeof(test_(t()))) );
- BOOST_STATIC_CONSTANT(bool,
- is_intersection = (sizeof(size4_t) == sizeof(test_(t()))) );
- BOOST_STATIC_CONSTANT(bool,
- is_difference = (sizeof(size5_t) == sizeof(test_(t()))) );
- BOOST_STATIC_CONSTANT(bool,
- is_exclusive_or = (sizeof(size6_t) == sizeof(test_(t()))) );
- BOOST_STATIC_CONSTANT(bool,
- is_optional = (sizeof(size7_t) == sizeof(test_(t()))) );
- BOOST_STATIC_CONSTANT(bool,
- is_kleene_star = (sizeof(size8_t) == sizeof(test_(t()))) );
- BOOST_STATIC_CONSTANT(bool,
- is_positive = (sizeof(size9_t) == sizeof(test_(t()))) );
- };
-
-#else
 
     ///////////////////////////////////////////////////////////////////////////
     struct parser_type_traits_base {
@@ -180,7 +106,6 @@
         BOOST_STATIC_CONSTANT(bool, is_positive = true);
     };
 
-#endif // defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 } // namespace impl
 
 ///////////////////////////////////////////////////////////////////////////////

Modified: trunk/boost/spirit/home/support/iterators/detail/combine_policies.hpp
==============================================================================
--- trunk/boost/spirit/home/support/iterators/detail/combine_policies.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/spirit/home/support/iterators/detail/combine_policies.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -21,43 +21,6 @@
     // single multi_pass_policy as required by the multi_pass template
     ///////////////////////////////////////////////////////////////////////////
 
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- // without partial template specialization there is nothing much to do in
- // terms of empty base optimization anyways...
- template <typename T, typename Ownership, typename Checking,
- typename Input, typename Storage>
- struct multi_pass_unique
- : Ownership, Checking, Input, Storage
- {
- multi_pass_unique() {}
- multi_pass_unique(T& x) : Input(x) {}
- multi_pass_unique(T const& x) : Input(x) {}
-
- template <typename MultiPass>
- static void destroy(MultiPass& mp)
- {
- Ownership::destroy(mp);
- Checking::destroy(mp);
- Input::destroy(mp);
- Storage::destroy(mp);
- }
-
- void swap(multi_pass_unique& x)
- {
- this->Ownership::swap(x);
- this->Checking::swap(x);
- this->Input::swap(x);
- this->Storage::swap(x);
- }
-
- template <typename MultiPass>
- inline static void clear_queue(MultiPass& mp)
- {
- Checking::clear_queue(mp);
- Storage::clear_queue(mp);
- }
- };
-#else
     ///////////////////////////////////////////////////////////////////////////
     // select the correct derived classes based on if a policy is empty
     template <typename T
@@ -470,7 +433,6 @@
         inline static bool is_unique(MultiPass const& mp)
             { return Ownership::is_unique(mp); }
     };
-#endif
 
     ///////////////////////////////////////////////////////////////////////////
     // the multi_pass_shared structure is used to combine the shared data items

Modified: trunk/boost/spirit/home/support/iterators/multi_pass.hpp
==============================================================================
--- trunk/boost/spirit/home/support/iterators/multi_pass.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/spirit/home/support/iterators/multi_pass.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -38,11 +38,7 @@
 
         // define the types the standard embedded iterator typedefs are taken
         // from
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- typedef typename iterator_base_creator<Input, T>::type iterator_type;
-#else
         typedef typename policies_base_type::input_policy iterator_type;
-#endif
 
     public:
         // standard iterator typedefs

Modified: trunk/boost/tuple/tuple_io.hpp
==============================================================================
--- trunk/boost/tuple/tuple_io.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/tuple/tuple_io.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -105,17 +105,10 @@
                              const char c = 0)
      : mt(m), f_c(c) {}
   
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- template<class CharType2, class CharTrait>
- void set(std::basic_ios<CharType2, CharTrait> &io) const {
- detail::format_info::set_manipulator(io, mt, f_c);
- }
-#else
    template<class CharTrait>
   void set(std::basic_ios<CharType, CharTrait> &io) const {
      detail::format_info::set_manipulator(io, mt, f_c);
   }
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 };
 
 

Modified: trunk/boost/type_traits/type_with_alignment.hpp
==============================================================================
--- trunk/boost/type_traits/type_with_alignment.hpp Fri Oct 11 19:17:48 2013 (r86245)
+++ trunk/boost/type_traits/type_with_alignment.hpp 2013-10-11 19:19:17 EDT (Fri, 11 Oct 2013) (r86246)
@@ -69,35 +69,6 @@
 // This template gets instantiated a lot, so use partial
 // specialization when available to reduce the compiler burden.
 //
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-template <bool found = true>
-struct lower_alignment_helper_impl
-{
- template <std::size_t, class>
- struct apply
- {
- typedef char type;
- enum { value = true };
- };
-};
-
-template <>
-struct lower_alignment_helper_impl<false>
-{
- template <std::size_t target, class TestType>
- struct apply
- : public mpl::if_c<(alignment_of<TestType>::value == target), TestType, char>
- {
- enum { value = (alignment_of<TestType>::value == target) };
- };
-};
-
-template <bool found, std::size_t target, class TestType>
-struct lower_alignment_helper
- : public lower_alignment_helper_impl<found>::template apply<target,TestType>
-{
-};
-#else
 template <bool found, std::size_t target, class TestType>
 struct lower_alignment_helper
 {
@@ -111,7 +82,6 @@
     enum { value = (alignment_of<TestType>::value == target) };
     typedef typename mpl::if_c<value, TestType, char>::type type;
 };
-#endif
 
 #define BOOST_TT_CHOOSE_MIN_ALIGNMENT(R,P,I,T) \
         typename lower_alignment_helper< \


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