]> git.lyx.org Git - features.git/blobdiff - src/support/RefChanger.h
Amend efc0877f
[features.git] / src / support / RefChanger.h
index 9b9d020a4119d063e3a7506265581de3926d8e96..ae35cc3891424b5f0b685259222e6ca59197a880 100644 (file)
@@ -35,9 +35,9 @@ public:
        //
        ~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;
@@ -45,6 +45,7 @@ private:
        bool enabled;
 };
 
+
 template <typename X> using RefChanger = unique_ptr<RevertibleRef<X>>;
 
 
@@ -54,21 +55,19 @@ template <typename X> RefChanger<X> make_save(X & ref)
        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