$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r82088 - sandbox/static_vector/boost/container/detail
From: adam.wulkiewicz_at_[hidden]
Date: 2012-12-18 19:21:35
Author: awulkiew
Date: 2012-12-18 19:21:34 EST (Tue, 18 Dec 2012)
New Revision: 82088
URL: http://svn.boost.org/trac/boost/changeset/82088
Log:
Added handling of BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
Text files modified: 
   sandbox/static_vector/boost/container/detail/static_vector_util.hpp |    29 +++++++++++++++++++++--------           
   1 files changed, 21 insertions(+), 8 deletions(-)
Modified: sandbox/static_vector/boost/container/detail/static_vector_util.hpp
==============================================================================
--- sandbox/static_vector/boost/container/detail/static_vector_util.hpp	(original)
+++ sandbox/static_vector/boost/container/detail/static_vector_util.hpp	2012-12-18 19:21:34 EST (Tue, 18 Dec 2012)
@@ -25,15 +25,17 @@
 #include <boost/type_traits/has_trivial_copy.hpp>
 #include <boost/type_traits/has_trivial_constructor.hpp>
 #include <boost/type_traits/has_trivial_destructor.hpp>
-#include <boost/type_traits/has_nothrow_constructor.hpp>
-#include <boost/type_traits/has_nothrow_copy.hpp>
-#include <boost/type_traits/has_nothrow_assign.hpp>
+//#include <boost/type_traits/has_nothrow_constructor.hpp>
+//#include <boost/type_traits/has_nothrow_copy.hpp>
+//#include <boost/type_traits/has_nothrow_assign.hpp>
 //#include <boost/type_traits/has_nothrow_destructor.hpp>
 
 #include <boost/iterator/iterator_traits.hpp>
 
 namespace boost { namespace container { namespace detail { namespace static_vector {
 
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
 template <typename I, typename O>
 struct are_corresponding_pointers :
     ::boost::mpl::and_<
@@ -51,21 +53,22 @@
 {};
 
 template <typename V>
-inline void copy_dispatch(const V * first, const V * last, V * dst,
+inline V * copy_dispatch(const V * first, const V * last, V * dst,
                           boost::mpl::bool_<true> const& /*use_memcpy*/)
 {
     ::memcpy(dst, first, sizeof(V) * std::distance(first, last));
+    return dst;
 }
 
 template <typename I, typename O>
-inline void copy_dispatch(I first, I last, O dst,
+inline O copy_dispatch(I first, I last, O dst,
                           boost::mpl::bool_<false> const& /*use_memcpy*/)
 {
-    std::copy(first, last, dst);                                                // may throw
+    return std::copy(first, last, dst);                                         // may throw
 }
 
 template <typename I, typename O>
-inline void copy(I first, I last, O dst)
+inline O copy(I first, I last, O dst)
 {
     namespace bm = ::boost::mpl;
     typedef typename
@@ -76,9 +79,19 @@
         >
     >::type use_memcpy;
     
-    copy_dispatch(first, last, dst, use_memcpy());                              // may throw
+    return copy_dispatch(first, last, dst, use_memcpy());                       // may throw
 }
 
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+template <typename I, typename O>
+inline O copy(I first, I last, O dst)
+{
+    return std::copy(first, last, dst);
+}
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
 }}}} // namespace boost::container::detail::static_vector
 
 #endif // BOOST_CONTAINER_DETAIL_STATIC_VECTOR_UTIL_HPP