binutils-gdb/gdb/common
Pedro Alves 60adb36c08 gdb: make_scoped_restore and types convertible to T
A following patch will want to do

   string_file str_file;

   scoped_restore save_stdout
    = make_scoped_restore (&gdb_stdout, &str_file);

where gdb_stdout is a ui_file *, and string_file is a type that
inherits from ui_file, but that doesn't compile today:

  src/gdb/top.c: In function ‘std::__cxx11::string execute_command_to_string(char*, int)’:
  src/gdb/top.c:710:50: error: no matching function for call to ‘make_scoped_restore(ui_file**, string_file*)’
       = make_scoped_restore (&gdb_stdout, &str_file);
						    ^
  [...]
  In file included from src/gdb/utils.h:25:0,
		   from src/gdb/defs.h:732,
		   from src/gdb/top.c:20:
  src/gdb/common/scoped_restore.h:94:24: note: candidate: template<class T> scoped_restore_tmpl<T> make_scoped_restore(T*, T)
   scoped_restore_tmpl<T> make_scoped_restore (T *var, T value)
			  ^
  src/gdb/common/scoped_restore.h:94:24: note:   template argument deduction/substitution failed:
  src/gdb/top.c:710:50: note:   deduced conflicting types for parameter ‘T’ (‘ui_file*’ and ‘string_file*’)
       = make_scoped_restore (&gdb_stdout, &str_file);
						    ^

This commit makes code such as the above possible.

gdb/ChangeLog:
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-31 17:56:35 +00:00
..
agent.c
agent.h
ax.def
break-common.h
btrace-common.c
btrace-common.h
buffer.c
buffer.h
cleanups.c
cleanups.h
common-debug.c
common-debug.h
common-defs.h
common-exceptions.c
common-exceptions.h
common-regcache.c
common-regcache.h
common-types.h
common-utils.c
common-utils.h
common.host
common.m4
create-version.sh
enum-flags.h
errors.c
errors.h
fileio.c
fileio.h
filestuff.c
filestuff.h
format.c
format.h
gdb_assert.h
gdb_locale.h
gdb_ref_ptr.h Use class to manage BFD reference counts 2017-01-10 19:14:10 -07:00
gdb_setjmp.h
gdb_signals.h
gdb_sys_time.h
gdb_unique_ptr.h
gdb_unlinker.h Introduce and use gdb::unlinker 2017-01-10 19:14:11 -07:00
gdb_vecs.c
gdb_vecs.h
gdb_wait.h
host-defs.h
mingw-strerror.c
new-op.c
posix-strerror.c
print-utils.c
print-utils.h
ptid.c
ptid.h
queue.h
rsp-low.c
rsp-low.h
run-time-clock.c
run-time-clock.h
scoped_restore.h gdb: make_scoped_restore and types convertible to T 2017-01-31 17:56:35 +00:00
signals-state-save-restore.c
signals-state-save-restore.h
signals.c
symbol.h
vec.c
vec.h
version.h
x86-xstate.h
xml-utils.c
xml-utils.h