15#ifndef LLVM_ADT_SCOPEEXIT_H
16#define LLVM_ADT_SCOPEEXIT_H
27 Callable ExitFunction;
31 template <
typename Fp>
35 : ExitFunction(
std::
move(Rhs.ExitFunction)), Engaged(Rhs.Engaged) {
57template <
typename Callable>
58[[nodiscard]] detail::scope_exit<std::decay_t<Callable>>
scope_exit & operator=(scope_exit &&)=delete
scope_exit(const scope_exit &)=delete
scope_exit & operator=(const scope_exit &)=delete
scope_exit(scope_exit &&Rhs)
This is an optimization pass for GlobalISel generic memory operations.
detail::scope_exit< std::decay_t< Callable > > make_scope_exit(Callable &&F)
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.