diff --git a/include/boost/mpi/detail/binary_buffer_iprimitive.hpp b/include/boost/mpi/detail/binary_buffer_iprimitive.hpp index ccfae15..2bc028f 100644 --- a/include/boost/mpi/detail/binary_buffer_iprimitive.hpp +++ b/include/boost/mpi/detail/binary_buffer_iprimitive.hpp @@ -88,7 +88,8 @@ public: load_impl(&t, sizeof(T)); } - void load( std::string & s) + template + void load(std::basic_string & s) { unsigned int l; load(l); diff --git a/include/boost/mpi/detail/binary_buffer_oprimitive.hpp b/include/boost/mpi/detail/binary_buffer_oprimitive.hpp index 4d0d80e..facf360 100644 --- a/include/boost/mpi/detail/binary_buffer_oprimitive.hpp +++ b/include/boost/mpi/detail/binary_buffer_oprimitive.hpp @@ -79,7 +79,8 @@ public: save_impl(&t, sizeof(T)); } - void save(const std::string &s) + template + void save(const std::basic_string &s) { unsigned int l = static_cast(s.size()); save(l); diff --git a/include/boost/mpi/detail/packed_iprimitive.hpp b/include/boost/mpi/detail/packed_iprimitive.hpp index 58ba6bf..9471a00 100644 --- a/include/boost/mpi/detail/packed_iprimitive.hpp +++ b/include/boost/mpi/detail/packed_iprimitive.hpp @@ -86,7 +86,8 @@ public: load_impl(&t, get_mpi_datatype(t), 1); } - void load( std::string & s) + template + void load(std::basic_string & s) { unsigned int l; load(l); @@ -96,7 +97,7 @@ public: #endif s.resize(l); // note breaking a rule here - could be a problem on some platform - load_impl(const_cast(s.data()),MPI_CHAR,l); + load_impl(const_cast(s.data()),get_mpi_datatype(CharType()),l); } private: diff --git a/include/boost/mpi/detail/packed_oprimitive.hpp b/include/boost/mpi/detail/packed_oprimitive.hpp index 84d06b5..eb7ba2f 100644 --- a/include/boost/mpi/detail/packed_oprimitive.hpp +++ b/include/boost/mpi/detail/packed_oprimitive.hpp @@ -77,11 +77,12 @@ public: save_impl(&t, get_mpi_datatype(t), 1); } - void save(const std::string &s) + template + void save(const std::basic_string &s) { unsigned int l = static_cast(s.size()); save(l); - save_impl(s.data(),MPI_CHAR,s.size()); + save_impl(s.data(),get_mpi_datatype(CharType()),s.size()); } private: diff --git a/include/boost/mpi/intercommunicator.hpp b/include/boost/mpi/intercommunicator.hpp index 8a1fd98..ad246b5 100644 --- a/include/boost/mpi/intercommunicator.hpp +++ b/include/boost/mpi/intercommunicator.hpp @@ -59,9 +59,9 @@ private: * underlying MPI_Comm. This operation is used for "casting" from a * communicator to an intercommunicator. */ - explicit intercommunicator(const shared_ptr& comm_ptr) + explicit intercommunicator(const shared_ptr& cp) { - this->comm_ptr = comm_ptr; + this->comm_ptr = cp; } public: