From dd73970b1ee8ab81bbe0adf9d9e9c1aa926978cc Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Fri, 11 Oct 2013 23:17:48 +0000 Subject: [PATCH] Remove BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION Process #ifndef...#else...#endif blocks. [SVN r86245] --- include/boost/functional.hpp | 26 ------------ include/boost/functional/hash/extensions.hpp | 34 ---------------- include/boost/functional/hash/hash.hpp | 43 -------------------- 3 files changed, 103 deletions(-) diff --git a/include/boost/functional.hpp b/include/boost/functional.hpp index b618485..c0cf503 100644 --- a/include/boost/functional.hpp +++ b/include/boost/functional.hpp @@ -18,7 +18,6 @@ namespace boost { -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION // -------------------------------------------------------------------------- // The following traits classes allow us to avoid the need for ptr_fun // because the types of arguments and the result of a function can be @@ -116,31 +115,6 @@ namespace boost typedef A1 first_argument_type; typedef A2 second_argument_type; }; -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - // -------------------------------------------------------------------------- - // If we have no partial specialisation available, decay to a situation - // that is no worse than in the Standard, i.e., ptr_fun will be required. - // -------------------------------------------------------------------------- - - template - struct unary_traits - { - typedef Operation function_type; - typedef const Operation& param_type; - typedef typename Operation::result_type result_type; - typedef typename Operation::argument_type argument_type; - }; - - template - struct binary_traits - { - typedef Operation function_type; - typedef const Operation & param_type; - typedef typename Operation::result_type result_type; - typedef typename Operation::first_argument_type first_argument_type; - typedef typename Operation::second_argument_type second_argument_type; - }; -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION // -------------------------------------------------------------------------- // unary_negate, not1 diff --git a/include/boost/functional/hash/extensions.hpp b/include/boost/functional/hash/extensions.hpp index 8b60076..e591f99 100644 --- a/include/boost/functional/hash/extensions.hpp +++ b/include/boost/functional/hash/extensions.hpp @@ -250,7 +250,6 @@ namespace boost // -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template struct hash : std::unary_function @@ -279,39 +278,6 @@ namespace boost }; #endif -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - // On compilers without partial specialization, boost::hash - // has already been declared to deal with pointers, so just - // need to supply the non-pointer version of hash_impl. - - namespace hash_detail - { - template - struct hash_impl; - - template <> - struct hash_impl - { - template - struct inner - : std::unary_function - { -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - std::size_t operator()(T const& val) const - { - return hash_value(val); - } -#else - std::size_t operator()(T const& val) const - { - return hash_detail::call_hash::call(val); - } -#endif - }; - }; - } -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION } #endif diff --git a/include/boost/functional/hash/hash.hpp b/include/boost/functional/hash/hash.hpp index 6376706..593fde0 100644 --- a/include/boost/functional/hash/hash.hpp +++ b/include/boost/functional/hash/hash.hpp @@ -405,7 +405,6 @@ namespace boost // Specializing boost::hash for pointers. -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template struct hash @@ -424,48 +423,6 @@ namespace boost } }; -#else - - // For compilers without partial specialization, we define a - // boost::hash for all remaining types. But hash_impl is only defined - // for pointers in 'extensions.hpp' - so when BOOST_HASH_NO_EXTENSIONS - // is defined there will still be a compile error for types not supported - // in the standard. - - namespace hash_detail - { - template - struct hash_impl; - - template <> - struct hash_impl - { - template - struct inner - : public std::unary_function - { - std::size_t operator()(T val) const - { -#if !BOOST_WORKAROUND(__SUNPRO_CC, <= 590) - return boost::hash_value(val); -#else - std::size_t x = static_cast( - reinterpret_cast(val)); - - return x + (x >> 3); -#endif - } - }; - }; - } - - template struct hash - : public boost::hash_detail::hash_impl::value> - ::BOOST_NESTED_TEMPLATE inner - { - }; - -#endif } #if defined(BOOST_MSVC)