/* * 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 namespace facebook::react { template 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