diff options
-rw-r--r-- | icespider/compile/routeCompiler.cpp | 11 | ||||
-rw-r--r-- | icespider/core/util.h | 1 |
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> |