19#ifndef FORTRAN_COMMON_RESTORER_H_
20#define FORTRAN_COMMON_RESTORER_H_
22#include "flang/Common/api-attrs.h"
26 explicit RT_API_ATTRS
Restorer(A &p, A original)
27 : p_{p}, original_{std::move(original)} {}
28 RT_API_ATTRS
~Restorer() { p_ = std::move(original_); }
42template <
typename A,
typename B>
43RT_API_ATTRS common::IfNoLvalue<Restorer<A>, B> ScopedSet(A &to, B &&from) {
44 A original{std::move(to)};
46 return Restorer<A>{to, std::move(original)};
48template <
typename A,
typename B>
49RT_API_ATTRS common::IfNoLvalue<Restorer<A>, B> ScopedSet(
50 A &to,
const B &from) {
51 A original{std::move(to)};
53 return Restorer<A>{to, std::move(original)};
Definition: restorer.h:24
Definition: bit-population-count.h:20