import CppUtils.FileSystem.Directory;
import CppUtils;
explicit TemporaryDirectory::TemporaryDirectory(std::string_view directoryName = "temp");
explicit TemporaryDirectory::TemporaryDirectory(std::invocable<std::filesystem::path> auto&& function, [[maybe_unused]] auto&&... args);
TemporaryDirectory::TemporaryDirectory(std::string_view directoryName, std::invocable<std::filesystem::path> auto&& function, [[maybe_unused]] auto&&... args);
TemporaryDirectory::~TemporaryDirectory();
auto TemporaryDirectory::execute(auto&& function, auto&&... args) -> decltype(auto);