Program Listing for File MpiFlexGuard.hpp¶
↰ Return to documentation for file (include/uitsl/mpi/MpiFlexGuard.hpp)
#pragma once
#ifndef UITSL_MPI_MPIFLEXGUARD_HPP_INCLUDE
#define UITSL_MPI_MPIFLEXGUARD_HPP_INCLUDE
#include <variant>
#include "MpiGuard.hpp"
#include "MpiMultithreadGuard.hpp"
namespace uitsl {
class MpiFlexGuard {
std::variant<
std::monostate, uitsl::MpiGuard, uitsl::MpiMultithreadGuard
> guard;
public:
void InitSingleThread() { guard.emplace< uitsl::MpiGuard >(); }
void InitMultithread() { guard.emplace< uitsl::MpiMultithreadGuard >(); }
};
} // namespace uitsl
#endif // #ifndef UITSL_MPI_MPIFLEXGUARD_HPP_INCLUDE