summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--icespider/compile/routeCompiler.cpp11
-rw-r--r--icespider/core/util.h1
2 files changed, 9 insertions, 3 deletions
diff --git a/icespider/compile/routeCompiler.cpp b/icespider/compile/routeCompiler.cpp
index 4057158..cc8a960 100644
--- a/icespider/compile/routeCompiler.cpp
+++ b/icespider/compile/routeCompiler.cpp
@@ -179,6 +179,11 @@ namespace IceSpider::Compile {
}
}
+ template<auto Deleter>
+ using DeleteWith = decltype([](auto ptr) {
+ Deleter(ptr);
+ });
+
void
RouteCompiler::compile(const std::filesystem::path & input, const std::filesystem::path & output) const
{
@@ -193,9 +198,9 @@ namespace IceSpider::Compile {
}
});
- using FilePtr = std::unique_ptr<FILE, decltype(&fclose)>;
- const auto out = FilePtr {fopen(output.c_str(), "w"), &fclose};
- const auto outh = FilePtr {fopen(outputh.c_str(), "w"), &fclose};
+ using FilePtr = std::unique_ptr<FILE, DeleteWith<fclose>>;
+ const FilePtr out {fopen(output.c_str(), "w")};
+ const FilePtr outh {fopen(outputh.c_str(), "w")};
if (!out || !outh) {
throw std::runtime_error("Failed to open output files");
}
diff --git a/icespider/core/util.h b/icespider/core/util.h
index ecf0831..cbbd318 100644
--- a/icespider/core/util.h
+++ b/icespider/core/util.h
@@ -1,6 +1,7 @@
#pragma once
#include <Ice/Optional.h>
+#include <algorithm>
#include <array>
#include <boost/lexical_cast.hpp>
#include <charconv>