19#ifndef FORTRAN_COMMON_RESTORER_H_ 
   20#define FORTRAN_COMMON_RESTORER_H_ 
   24template <
typename A> 
class Restorer {
 
   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_); }
 
   32  Restorer(
const Restorer &) = 
delete;
 
   33  Restorer(Restorer &&that) = 
delete;
 
   34  const Restorer &operator=(
const Restorer &) = 
delete;
 
   35  const Restorer &operator=(Restorer &&that) = 
delete;
 
 
   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)};
 
Definition bit-population-count.h:20