int flags_;
int refcount_ = 1;
std::unique_ptr<Datatype_contents> contents_ = nullptr;
+ MPI_Datatype duplicated_datatype_ = MPI_DATATYPE_NULL;
protected:
template <typename... Args> void set_contents(Args&&... args)
Datatype(const Datatype&) = delete;
Datatype& operator=(const Datatype&) = delete;
~Datatype() override;
- std::string name() const {return name_;}
+ std::string name() const override {return name_.empty() ? std::string("MPI_Datatype") : name_;}
size_t size() const { return size_; }
MPI_Aint lb() const { return lb_; }
MPI_Aint ub() const { return ub_; }
int flags() const { return flags_; }
int refcount() const { return refcount_; }
+ MPI_Datatype duplicated_datatype() const { return duplicated_datatype_; }
void ref();
static void unref(MPI_Datatype datatype);