//
~RevertibleRef() { revert(); }
//
- void revert() { if (enabled) { enabled = false; ref = old; } }
+ void revert() override { if (enabled) { enabled = false; ref = old; } }
//
- void keep() { enabled = false; }
+ void keep() override { enabled = false; }
//
X & ref;
X const old;
bool enabled;
};
+
template <typename X> using RefChanger = unique_ptr<RevertibleRef<X>>;
return make_unique<RevertibleRef<X>>(ref);
}
-/// Temporarily assign value \param val to \param ref. If \param cond is false,
-/// then the assignation does not happen and the RefChanger starts disabled.
+/// Temporarily assign value val to reference ref.
+/// To apply the change conditionnally, one can write:
+/// Changer dummy = (cond) ? make_change(a, b) : Changer();
template <typename X>
-RefChanger<X> make_change(X & ref, X const val, bool cond = true)
+RefChanger<X> make_change(X & ref, X const val)
{
auto rc = make_save(ref);
- if (!cond)
- rc->keep();
- else
- ref = val;
+ ref = val;
return rc;
}
-}
+} // namespace lyx
#endif //LYX_REFCHANGER_H