Remove BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION

Process #ifndef...#else...#endif blocks.

[SVN r86245]
This commit is contained in:
Stephen Kelly
2013-10-11 23:17:48 +00:00
parent 3ac96347ba
commit dd73970b1e
3 changed files with 0 additions and 103 deletions

View File

@@ -18,7 +18,6 @@
namespace boost namespace boost
{ {
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// The following traits classes allow us to avoid the need for ptr_fun // 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 // 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 A1 first_argument_type;
typedef A2 second_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 <class Operation>
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 <class Operation>
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 // unary_negate, not1

View File

@@ -250,7 +250,6 @@ namespace boost
// //
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
template <class T> struct hash template <class T> struct hash
: std::unary_function<T, std::size_t> : std::unary_function<T, std::size_t>
@@ -279,39 +278,6 @@ namespace boost
}; };
#endif #endif
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// On compilers without partial specialization, boost::hash<T>
// has already been declared to deal with pointers, so just
// need to supply the non-pointer version of hash_impl.
namespace hash_detail
{
template <bool IsPointer>
struct hash_impl;
template <>
struct hash_impl<false>
{
template <class T>
struct inner
: std::unary_function<T, std::size_t>
{
#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<T>::call(val);
}
#endif
};
};
}
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
} }
#endif #endif

View File

@@ -405,7 +405,6 @@ namespace boost
// Specializing boost::hash for pointers. // Specializing boost::hash for pointers.
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
template <class T> template <class T>
struct hash<T*> struct hash<T*>
@@ -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 <bool IsPointer>
struct hash_impl;
template <>
struct hash_impl<true>
{
template <class T>
struct inner
: public std::unary_function<T, std::size_t>
{
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<std::size_t>(
reinterpret_cast<std::ptrdiff_t>(val));
return x + (x >> 3);
#endif
}
};
};
}
template <class T> struct hash
: public boost::hash_detail::hash_impl<boost::is_pointer<T>::value>
::BOOST_NESTED_TEMPLATE inner<T>
{
};
#endif
} }
#if defined(BOOST_MSVC) #if defined(BOOST_MSVC)