11template<concepts::InvocableTo<
void> F>
20 : m_function(
util::move(other.m_function)), m_released(
util::
exchange(other.m_released, true)) {}
31 constexpr void release() { m_released =
true; }
35 bool m_released {
false };
Definition scope_exit.h:12
constexpr ScopeExit(G &&function)
Definition scope_exit.h:16
constexpr ScopeExit(ScopeExit &&other)
Definition scope_exit.h:18
constexpr void release()
Definition scope_exit.h:31
auto operator=(ScopeExit &&) -> ScopeExit &=delete
constexpr ~ScopeExit()
Definition scope_exit.h:22
Definition operations.h:11
Definition operations.h:43
constexpr auto invoke
Definition invoke.h:100
constexpr auto exchange(T &object, U &&new_value) -> T
Definition exchange.h:8
ScopeExit(F) -> ScopeExit< F >
Definition zstring_parser.h:9