]> git.lyx.org Git - lyx.git/blobdiff - 3rdparty/boost/boost/core/swap.hpp
Update to boost 1.72
[lyx.git] / 3rdparty / boost / boost / core / swap.hpp
index baa1be970df2b016ca4a7ff106f35e9a8dffa80b..eff6b978df434c0802a1ba93970d558b689e9a74 100644 (file)
 // avoid ambiguity when swapping objects of a Boost type that does
 // not have its own boost::swap overload.
 
+#include <boost/core/enable_if.hpp>
+#include <boost/config.hpp>
 #include <utility> //for std::swap (C++11)
 #include <algorithm> //for std::swap (C++98)
 #include <cstddef> //for std::size_t
-#include <boost/config.hpp>
 
 namespace boost_swap_impl
 {
+  // we can't use type_traits here
+
+  template<class T> struct is_const { enum _vt { value = 0 }; };
+  template<class T> struct is_const<T const> { enum _vt { value = 1 }; };
+
   template<class T>
   BOOST_GPU_ENABLED
   void swap_impl(T& left, T& right)
@@ -51,7 +57,8 @@ namespace boost
 {
   template<class T1, class T2>
   BOOST_GPU_ENABLED
-  void swap(T1& left, T2& right)
+  typename enable_if_c< !boost_swap_impl::is_const<T1>::value && !boost_swap_impl::is_const<T2>::value >::type
+  swap(T1& left, T2& right)
   {
     ::boost_swap_impl::swap_impl(left, right);
   }