aboutsummaryrefslogtreecommitdiff
path: root/core/src/Utils/ScopeGuard.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/Utils/ScopeGuard.hpp')
-rw-r--r--core/src/Utils/ScopeGuard.hpp39
1 files changed, 0 insertions, 39 deletions
diff --git a/core/src/Utils/ScopeGuard.hpp b/core/src/Utils/ScopeGuard.hpp
deleted file mode 100644
index 28ffd0b..0000000
--- a/core/src/Utils/ScopeGuard.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-#pragma once
-
-#include "Utils/Macros.hpp"
-
-#include <utility>
-
-template <class TCleanupFunc>
-class ScopeGuard
-{
-private:
- TCleanupFunc mFunc;
- bool mDismissed = false;
-
-public:
- /// Specifically left this implicit so that constructs like
- /// \code
- /// ScopeGuard sg = [&]() { res.Cleanup(); };
- /// \endcode
- /// would work. It is highly discourage and unlikely that one would want to use ScopeGuard as a function
- /// parameter, so the normal argument that implicit conversion are harmful doesn't really apply here.
- ScopeGuard(TCleanupFunc func)
- : mFunc{ std::move(func) }
- {
- }
-
- ~ScopeGuard()
- {
- if (!mDismissed) {
- mFunc();
- }
- }
-
- void Dismiss() noexcept
- {
- mDismissed = true;
- }
-};
-
-#define DEFER ScopeGuard UNIQUE_NAME(scopeGuard) = [&]()