summaryrefslogtreecommitdiff
path: root/boost/mpi/operations.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/mpi/operations.hpp')
-rw-r--r--boost/mpi/operations.hpp10
1 files changed, 3 insertions, 7 deletions
diff --git a/boost/mpi/operations.hpp b/boost/mpi/operations.hpp
index b72b13d79a..5af8c8fafa 100644
--- a/boost/mpi/operations.hpp
+++ b/boost/mpi/operations.hpp
@@ -292,14 +292,12 @@ namespace detail {
class user_op
{
public:
- explicit user_op(Op& op)
+ user_op()
{
BOOST_MPI_CHECK_RESULT(MPI_Op_create,
(&user_op<Op, T>::perform,
is_commutative<Op, T>::value,
&mpi_op));
-
- op_ptr = &op;
}
~user_op()
@@ -321,18 +319,16 @@ namespace detail {
private:
MPI_Op mpi_op;
- static Op* op_ptr;
static void BOOST_MPI_CALLING_CONVENTION perform(void* vinvec, void* voutvec, int* plen, MPI_Datatype*)
{
T* invec = static_cast<T*>(vinvec);
T* outvec = static_cast<T*>(voutvec);
- std::transform(invec, invec + *plen, outvec, outvec, *op_ptr);
+ Op op;
+ std::transform(invec, invec + *plen, outvec, outvec, op);
}
};
- template<typename Op, typename T> Op* user_op<Op, T>::op_ptr = 0;
-
} // end namespace detail
} } // end namespace boost::mpi