Error seen with Petsc test: vec_is_sf_tutorials-ex3_basic_dupped.
int number_of_integers, const int* integers,
int number_of_addresses, const MPI_Aint* addresses,
int number_of_datatypes, const MPI_Datatype* datatypes);
+ ~Datatype_contents();
};
class Datatype : public F2C, public Keyval{
if (static_cast<unsigned>(max_datatypes) < contents_->datatypes_.size())
return MPI_ERR_COUNT;
std::copy(begin(contents_->datatypes_), end(contents_->datatypes_), array_of_datatypes);
- std::for_each(begin(contents_->datatypes_), end(contents_->datatypes_), std::mem_fn(&Datatype::ref));
+ for (auto& datatype : contents_->datatypes_)
+ datatype->ref();
return MPI_SUCCESS;
}
, addresses_(addresses, addresses + number_of_addresses)
, datatypes_(datatypes, datatypes + number_of_datatypes)
{
+ for (auto& datatype : datatypes_)
+ datatype->ref();
+}
+
+Datatype_contents::~Datatype_contents()
+{
+ for (auto& datatype : datatypes_)
+ Datatype::unref(datatype);
}
Type_Contiguous::Type_Contiguous(int size, MPI_Aint lb, MPI_Aint ub, int flags, int block_count, MPI_Datatype old_type)