};
-//for gcc 4.6
-#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 6)
-template <typename X>
-struct RefChanger : unique_ptr<RevertibleRef<X>>
-{
- RefChanger(unique_ptr<RevertibleRef<X>> p)
- : unique_ptr<RevertibleRef<X>>(move(p))
- {}
-};
-#else
template <typename X> using RefChanger = unique_ptr<RevertibleRef<X>>;
-#endif
/// Saves the value of \param ref in a movable object
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