haiku/headers/private/shared/ScopeExit.h
X512 74a5cb7bbc shared: move ScopeExit from riscv64 arch kernel code
this file is c++11 only.

Change-Id: Ibff7acec00337a9f56f9b8e29ea262c8d64c2446
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5292
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
2022-09-21 16:09:33 +00:00

44 lines
593 B
C++

/*
* Copyright 2022, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _SCOPE_EXIT_H
#define _SCOPE_EXIT_H
#if __cplusplus < 201103L
#error This file requires compiler support for the C++11 standard.
#endif
#include <utility>
template<typename F>
class ScopeExit
{
public:
explicit ScopeExit(F&& fn) : fFn(fn)
{
}
~ScopeExit()
{
fFn();
}
ScopeExit(ScopeExit&& other) : fFn(std::move(other.fFn))
{
}
private:
ScopeExit(const ScopeExit&);
ScopeExit& operator=(const ScopeExit&);
private:
F fFn;
};
#endif // _SCOPE_EXIT_H