]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/mpi/detail/antiques.hpp
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / boost / boost / mpi / detail / antiques.hpp
index 6ece7797770204d13d08756c27e24b3ac8deb10b..0bd235b2c1a1f9c5953f8c3c73fa78df93c75d91 100644 (file)
 // Support for some obsolette compilers
 
 namespace boost { namespace mpi {
-    namespace detail {
-      // Some old gnu compiler have no support for vector<>::data
-      // Use this in the mean time, the cumbersome syntax should 
-      // serve as an incentive to get rid of this when those compilers 
-      // are dropped.
-      template <typename T, typename A>
-      T* c_data(std::vector<T,A>& v) { return &(v[0]); }
-
-      template <typename T, typename A>
-      T const* c_data(std::vector<T,A> const& v) { return &(v[0]); }
-  
+namespace detail {
+  // Some old gnu compiler have no support for vector<>::data
+  // Use this in the mean time, the cumbersome syntax should 
+  // serve as an incentive to get rid of this when those compilers 
+  // are dropped.
+  template <typename T, typename A>
+  T* c_data(std::vector<T,A>& v) { return &(v[0]); }
+
+  template <typename T, typename A>
+  T const* c_data(std::vector<T,A> const& v) { return &(v[0]); }
+
+  // Some old MPI implementation (OpenMPI 1.6 for example) have non 
+  // conforming API w.r.t. constness.
+  // We choose to fix this trhough this converter in order to 
+  // explain/remember why we're doing this and remove it easilly 
+  // when support for those MPI is dropped.
+  // The fix is as specific (un templatized, for one) as possible 
+  // in order to encourage it usage for the probleme at hand.
+  // Problematic API include MPI_Send
+  inline
+  void *unconst(void const* addr) { return const_cast<void*>(addr); }
+
 } } }
 
 #endif