Record mounts to be cleaned up in a vector

This commit is contained in:
topjohnwu
2019-11-19 00:16:20 -05:00
parent d3b7b41927
commit 7681fde4d0
4 changed files with 39 additions and 30 deletions

View File

@@ -56,9 +56,28 @@ public:
~run_finally() { if (fn) fn(); }
private:
std::function<void ()> fn;
std::function<void()> fn;
};
template <typename T>
class reversed_container {
public:
reversed_container(T &base) : base(base) {}
decltype(std::declval<T>().rbegin()) begin() { return base.rbegin(); }
decltype(std::declval<T>().crbegin()) begin() const { return base.crbegin(); }
decltype(std::declval<T>().crbegin()) cbegin() const { return base.crbegin(); }
decltype(std::declval<T>().rend()) end() { return base.rend(); }
decltype(std::declval<T>().crend()) end() const { return base.crend(); }
decltype(std::declval<T>().crend()) cend() const { return base.crend(); }
private:
T &base;
};
template <typename T>
reversed_container<T> reversed(T &base) {
return reversed_container<T>(base);
}
static inline int parse_int(std::string s) { return parse_int(s.data()); }
static inline int parse_int(std::string_view s) { return parse_int(s.data()); }