37 lines
743 B
C++
37 lines
743 B
C++
/*
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <functional>
|
|
|
|
namespace facebook::react {
|
|
|
|
template <typename Lambda>
|
|
class OnScopeExit {
|
|
public:
|
|
explicit OnScopeExit(const Lambda&& lambda) noexcept
|
|
: lambda_(std::move(lambda)) {}
|
|
|
|
// Non-movable
|
|
OnScopeExit(const OnScopeExit&) = delete;
|
|
OnScopeExit(OnScopeExit&&) = delete;
|
|
|
|
// Non-copyable
|
|
OnScopeExit& operator=(const OnScopeExit&) = delete;
|
|
OnScopeExit& operator=(OnScopeExit&&) = delete;
|
|
|
|
~OnScopeExit() noexcept {
|
|
lambda_();
|
|
}
|
|
|
|
private:
|
|
Lambda lambda_;
|
|
};
|
|
|
|
} // namespace facebook::react
|