diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/common/scoped_restore.h | 11 |
2 files changed, 14 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 327b327..3e86d55 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2017-01-31 Pedro Alves <palves@redhat.com> + + * common/scoped_restore.h + (scoped_restore_tmpl::scoped_restore_tmpl): Template on T2, and + change the value's parameter type to T2. + (make_scoped_restore): Likewise. + 2017-01-27 Walfred Tedeschi <walfred.tedeschi@intel.com> Richard Henderson <rth@redhat.com> diff --git a/gdb/common/scoped_restore.h b/gdb/common/scoped_restore.h index 0c8c30d..ae7a49f 100644 --- a/gdb/common/scoped_restore.h +++ b/gdb/common/scoped_restore.h @@ -47,8 +47,11 @@ class scoped_restore_tmpl : public scoped_restore_base /* Create a new scoped_restore object that saves the current value of *VAR, and sets *VAR to VALUE. *VAR will be restored when this - scoped_restore object is destroyed. */ - scoped_restore_tmpl (T *var, T value) + scoped_restore object is destroyed. This is templated on T2 to + allow passing VALUEs of types convertible to T. + E.g.: T='base'; T2='derived'. */ + template <typename T2> + scoped_restore_tmpl (T *var, T2 value) : m_saved_var (var), m_saved_value (*var) { @@ -90,8 +93,8 @@ scoped_restore_tmpl<T> make_scoped_restore (T *var) /* Make a scoped_restore. This is useful because it lets template argument deduction work. */ -template<typename T> -scoped_restore_tmpl<T> make_scoped_restore (T *var, T value) +template<typename T, typename T2> +scoped_restore_tmpl<T> make_scoped_restore (T *var, T2 value) { return scoped_restore_tmpl<T> (var, value); } |