#pragma once #include #include class MpiRequest { constexpr static std::size_t NoNeighbors{ 8 }; public: template using DoubleVector = boost::container::static_vector; private: DoubleVector reqs_; bool finished{}; public: MpiRequest(DoubleVector reqs) : reqs_(reqs) {} MpiRequest(const MpiRequest&) = default; MpiRequest(MpiRequest&&) = default; MpiRequest& operator=(const MpiRequest&) = default; MpiRequest& operator=(MpiRequest&&) = default; void Wait() { MPI_Waitall(static_cast(reqs_.size()), // reqs_.data(), // MPI_STATUSES_IGNORE); // finished = true; } ~MpiRequest() { if (!finished) { MpiReportErrorAbort("Forgot to Wait for MPI_Request"); } } };