Mark move constructors as "noexcept"
authorTom Tromey <tromey@adacore.com>
Mon, 20 Apr 2020 17:45:06 +0000 (11:45 -0600)
committerTom Tromey <tromey@adacore.com>
Mon, 20 Apr 2020 17:45:06 +0000 (11:45 -0600)
commit0fa7617d84da8b809b14e1e2ee67474526c62021
treec0df8e58cdc7411ed31337b87830614c9223b6a9
parent9b2c992cfa4e9911d3b54c21ced179aa4928c422
Mark move constructors as "noexcept"

I recently learned that move constructors generally should be marked
"noexcept".  This ensures that standard containers will move objects
when possible, rather than copy them.

This patch fixes the cases I could find.  Note that implicitly-defined
or defaulted move constructors will automatically do what you'd
expect; that is, they are noexcept if all the members have noexcept
move constructors.

While doing this, I noticed a couple of odd cases where the move
constructor seemed to assume that the object being constructed could
have state requiring destruction.  I've fixed these as well.  See
completion_result and scoped_mmap.

gdb/ChangeLog
2020-04-20  Tom Tromey  <tromey@adacore.com>

* python/python.c (struct gdbpy_event): Mark move constructor as
noexcept.
* python/py-tui.c (class gdbpy_tui_window_maker): Mark move
constructor as noexcept.
* completer.h (struct completion_result): Mark move constructor as
noexcept.
* completer.c (completion_result::completion_result): Use
initialization style.  Don't call reset_match_list.

gdbsupport/ChangeLog
2020-04-20  Tom Tromey  <tromey@adacore.com>

* scoped_mmap.h (scoped_mmap): Mark move constructor as noexcept.
Use initialization style.  Don't call destroy.
* scoped_fd.h (class scoped_fd): Mark move constructor as
noexcept.
* gdb_ref_ptr.h (class ref_ptr): Mark move constructor as
noexcept.
gdb/ChangeLog
gdb/completer.c
gdb/completer.h
gdb/python/py-tui.c
gdb/python/python.c
gdbsupport/ChangeLog
gdbsupport/gdb_ref_ptr.h
gdbsupport/scoped_fd.h
gdbsupport/scoped_mmap.h