diff --git a/include/boost/mpi/detail/request_handlers.hpp b/include/boost/mpi/detail/request_handlers.hpp index 2f14a24f..50a22ec3 100644 --- a/include/boost/mpi/detail/request_handlers.hpp +++ b/include/boost/mpi/detail/request_handlers.hpp @@ -509,9 +509,6 @@ class BOOST_MPI_DECL request::trivial_handler : public request::handler { private: friend class request; -#if BOOST_MPI_VERSION >= 3 - friend class communicator; -#endif MPI_Request m_request; }; diff --git a/include/boost/mpi/request.hpp b/include/boost/mpi/request.hpp index 6818b613..3a155db8 100644 --- a/include/boost/mpi/request.hpp +++ b/include/boost/mpi/request.hpp @@ -155,7 +155,6 @@ class BOOST_MPI_DECL request template class legacy_dynamic_primitive_array_handler; #if BOOST_MPI_VERSION >= 3 template class probe_handler; - friend class communicator; #endif private: diff --git a/src/communicator.cpp b/src/communicator.cpp index 07853857..b7163d5b 100644 --- a/src/communicator.cpp +++ b/src/communicator.cpp @@ -328,9 +328,10 @@ bool operator==(const communicator& comm1, const communicator& comm2) #if BOOST_MPI_VERSION >= 3 request communicator::ibarrier() const { - request::trivial_handler* handler = new request::trivial_handler; - BOOST_MPI_CHECK_RESULT(MPI_Ibarrier, (*this, &handler->m_request)); - return request(handler); + MPI_Request *c_ptr; + request req = request::make_trivial(c_ptr); + BOOST_MPI_CHECK_RESULT(MPI_Ibarrier, (*this, c_ptr)); + return req; } #endif